[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3' - 24 commits - cppcanvas/source include/vcl lotuswordpro/qa lotuswordpro/source oox/source sc/inc sc/qa sc/source sd/source sw/qa sw/source vcl/qa vcl/source vcl/unx writerfilter/source xmloff/source xmlsecurity/qa
Caolán McNamara
caolanm at redhat.com
Sat Apr 7 15:39:47 UTC 2018
cppcanvas/source/mtfrenderer/emfplus.cxx | 16
include/vcl/gdimtf.hxx | 9
include/vcl/metaact.hxx | 6
lotuswordpro/qa/cppunit/data/fail/registered-1.lwp |binary
lotuswordpro/source/filter/lwpbookmarkmgr.cxx | 34
lotuswordpro/source/filter/lwpbookmarkmgr.hxx | 4
lotuswordpro/source/filter/lwpfrib.cxx | 2
oox/source/ole/vbacontrol.cxx | 10
sc/inc/dbdata.hxx | 9
sc/qa/unit/data/xls/fail/forcepoint-group-range-1.xls |binary
sc/qa/unit/data/xls/pass/forcepoint-selfseriesadd.xls |binary
sc/qa/unit/ucalc_sharedformula.cxx | 4
sc/source/core/data/column3.cxx | 4
sc/source/filter/excel/xichart.cxx | 23
sc/source/filter/xml/xmlcelli.cxx | 2
sc/source/filter/xml/xmldrani.cxx | 5
sc/source/ui/docshell/dbdocfun.cxx | 1
sc/source/ui/inc/viewdata.hxx | 4
sc/source/ui/view/viewdata.cxx | 12
sd/source/ui/animations/SlideTransitionPane.cxx | 8
sd/source/ui/dlg/PhotoAlbumDialog.cxx | 76 +-
sw/qa/core/data/odt/fail/forcepoint-dtor-1.odt |binary
sw/qa/core/data/rtf/fail/forcepoint-7.rtf | 517 +++++++++++++++
sw/source/filter/ww8/ww8par.cxx | 17
sw/source/filter/ww8/ww8par.hxx | 2
sw/source/filter/ww8/ww8par4.cxx | 4
sw/source/filter/ww8/ww8par6.cxx | 27
sw/source/filter/xml/xmlimp.cxx | 5
sw/source/filter/xml/xmltbli.cxx | 7
vcl/qa/cppunit/graphicfilter/data/svm/fail/ofz7165-1.svm |binary
vcl/source/filter/ipdf/pdfdocument.cxx | 4
vcl/source/gdi/gdimtf.cxx | 40 +
vcl/source/gdi/metaact.cxx | 4
vcl/unx/generic/printer/jobdata.cxx | 14
writerfilter/source/dmapper/DomainMapperTableManager.cxx | 7
writerfilter/source/dmapper/DomainMapperTableManager.hxx | 1
xmloff/source/draw/ximpcustomshape.cxx | 2
xmlsecurity/qa/unit/pdfsigning/data/forcepoint16.pdf |binary
xmlsecurity/qa/unit/pdfsigning/pdfsigning.cxx | 2
39 files changed, 784 insertions(+), 98 deletions(-)
New commits:
commit 03095390fdc4fbe6f7ae773033b37f6f5286d810
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Mar 26 12:49:54 2018 +0100
forcepoint #33 ensure payload is a EMFPPath
Change-Id: I0a9f332cc66e43caa4e1611006fa765cad063539
Reviewed-on: https://gerrit.libreoffice.org/51916
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
(cherry picked from commit 5795e68be1afe185ed71294a4d389e763c95bfdd)
diff --git a/cppcanvas/source/mtfrenderer/emfplus.cxx b/cppcanvas/source/mtfrenderer/emfplus.cxx
index 5cabe44af28b..2ffe02e8b815 100644
--- a/cppcanvas/source/mtfrenderer/emfplus.cxx
+++ b/cppcanvas/source/mtfrenderer/emfplus.cxx
@@ -1979,7 +1979,7 @@ namespace cppcanvas
SAL_INFO("cppcanvas.emf", "EMF+ FillPath slot: " << index);
- EMFPPath* path = static_cast<EMFPPath*>(aObjects[index]);
+ EMFPPath* path = dynamic_cast<EMFPPath*>(aObjects[index]);
if (path)
EMFPPlusFillPolygon(path->GetPolygon (*this), rFactoryParms, rState, rCanvas, flags & 0x8000, brushIndexOrColor);
else
@@ -2106,7 +2106,7 @@ namespace cppcanvas
SAL_INFO("cppcanvas.emf", "EMF+ DrawPath");
SAL_INFO("cppcanvas.emf", "EMF+\tpen: " << penIndex);
- EMFPPath* path = static_cast<EMFPPath*>( aObjects [flags & 0xff] );
+ EMFPPath* path = dynamic_cast<EMFPPath*>( aObjects [flags & 0xff] );
if (path)
EMFPPlusDrawPolygon(path->GetPolygon (*this), rFactoryParms, rState, rCanvas, penIndex);
else
commit 10171ce34cc37bb50c1f5651723873866cb445b8
Author: Julien Nabet <serval2412 at yahoo.fr>
Date: Thu Apr 5 21:45:20 2018 +0200
tdf#115407: preselect sound file saved
To display the sound in the dropbox, the complete filename
(eg: file:///home/julien/lo/libreoffice/instdir/share/gallery/sounds/pluck.wav)
was compared with items of the sound list formed like this:
file:///home/julien/lo/libreoffice/instdir/program/../share/gallery/sounds/pluck.wav
See https://bugs.documentfoundation.org/show_bug.cgi?id=115407#c1
Since listbox displays only basename, let's just compare basenames
Change-Id: I5fb49990322423fa7818e5d6e1cafd828e3500ec
Reviewed-on: https://gerrit.libreoffice.org/52476
(cherry picked from commit 23c82e1a377ea6fce65d71277ec59b3ca150b98a)
Reviewed-on: https://gerrit.libreoffice.org/52490
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
(cherry picked from commit fce0f5823bbd6297f3455a2a36e4a66c423db9b9)
diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx b/sd/source/ui/animations/SlideTransitionPane.cxx
index 05a173449875..02fe8b953cac 100644
--- a/sd/source/ui/animations/SlideTransitionPane.cxx
+++ b/sd/source/ui/animations/SlideTransitionPane.cxx
@@ -270,10 +270,11 @@ struct lcl_EqualsSoundFileName : public ::std::unary_function< OUString, bool >
{
// note: formerly this was a case insensitive search for all
// platforms. It seems more sensible to do this platform-dependent
+ INetURLObject aURL(rStr);
#if defined(_WIN32)
- return maStr.equalsIgnoreAsciiCase( rStr );
+ return maStr.equalsIgnoreAsciiCase( aURL.GetBase() );
#else
- return maStr == rStr;
+ return maStr == aURL.GetBase();
#endif
}
@@ -286,9 +287,10 @@ bool lcl_findSoundInList( const ::std::vector< OUString > & rSoundList,
const OUString & rFileName,
::std::vector< OUString >::size_type & rOutPosition )
{
+ INetURLObject aURL(rFileName);
::std::vector< OUString >::const_iterator aIt =
::std::find_if( rSoundList.begin(), rSoundList.end(),
- lcl_EqualsSoundFileName( rFileName ));
+ lcl_EqualsSoundFileName( aURL.GetBase()));
if( aIt != rSoundList.end())
{
rOutPosition = ::std::distance( rSoundList.begin(), aIt );
commit 3c143ea818964124e46befe1877158f32bcd39b5
Author: Caolán McNamara <caolanm at redhat.com>
Date: Sun Mar 25 17:16:36 2018 +0100
tdf#116544 crash on unhandled IllegalArgument exception
Change-Id: I290ba6097d6d91bf4677e7e92c896bd6359cbc49
Reviewed-on: https://gerrit.libreoffice.org/51835
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit 92a0181d96a43a7a0449f400d38299097e864617)
diff --git a/sd/source/ui/dlg/PhotoAlbumDialog.cxx b/sd/source/ui/dlg/PhotoAlbumDialog.cxx
index a77d4f98c1a4..957232c6a2f9 100644
--- a/sd/source/ui/dlg/PhotoAlbumDialog.cxx
+++ b/sd/source/ui/dlg/PhotoAlbumDialog.cxx
@@ -178,9 +178,16 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
aPicPos.Y = (aPageSize.Height - aPicSize.Height)/2;
xShape->setPosition(aPicPos);
- xSlide->add(xShape);
- if(bCreateCaptions)
- createCaption( aPageSize );
+ try
+ {
+ xSlide->add(xShape);
+ if (bCreateCaptions)
+ createCaption( aPageSize );
+ }
+ catch (const css::uno::Exception& exc)
+ {
+ SAL_WARN( "sd", exc.Message );
+ }
}
}
else if( nOpt == TWO_IMAGES )
@@ -248,7 +255,14 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
aPicPos.Y = aPageSize.Height/2 - aPicSize.Height/2;
xShape->setPosition(aPicPos);
- xSlide->add(xShape);
+ try
+ {
+ xSlide->add(xShape);
+ }
+ catch (const css::uno::Exception& exc)
+ {
+ SAL_WARN( "sd", exc.Message );
+ }
}
if( !sUrl2.isEmpty() )
@@ -286,10 +300,17 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
aPicPos.Y = aPageSize.Height/2 - aPicSize.Height/2;
xShape->setPosition(aPicPos);
- xSlide->add(xShape);
- if(bCreateCaptions)
- createCaption( aPageSize );
+ try
+ {
+ xSlide->add(xShape);
+ if(bCreateCaptions)
+ createCaption( aPageSize );
+ }
+ catch (const css::uno::Exception& exc)
+ {
+ SAL_WARN( "sd", exc.Message );
+ }
}
}
}
@@ -369,7 +390,14 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
aPicPos.Y = aPageSize.Height/4 - aPicSize.Height/2;
xShape->setPosition(aPicPos);
- xSlide->add(xShape);
+ try
+ {
+ xSlide->add(xShape);
+ }
+ catch (const css::uno::Exception& exc)
+ {
+ SAL_WARN( "sd", exc.Message );
+ }
}
if( !sUrl2.isEmpty() )
{
@@ -406,7 +434,14 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
aPicPos.Y = aPageSize.Height/4 - aPicSize.Height/2;
xShape->setPosition(aPicPos);
- xSlide->add(xShape);
+ try
+ {
+ xSlide->add(xShape);
+ }
+ catch (const css::uno::Exception& exc)
+ {
+ SAL_WARN( "sd", exc.Message );
+ }
}
if( !sUrl3.isEmpty() )
{
@@ -444,7 +479,14 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
aPicPos.Y = aPageSize.Height/4 - aPicSize.Height/2 + aPageSize.Height/2;
xShape->setPosition(aPicPos);
- xSlide->add(xShape);
+ try
+ {
+ xSlide->add(xShape);
+ }
+ catch (const css::uno::Exception& exc)
+ {
+ SAL_WARN( "sd", exc.Message );
+ }
}
if( !sUrl4.isEmpty() )
{
@@ -481,10 +523,16 @@ IMPL_LINK_NOARG(SdPhotoAlbumDialog, CreateHdl, Button*, void)
aPicPos.Y = aPageSize.Height/4 - aPicSize.Height/2 + aPageSize.Height/2;
xShape->setPosition(aPicPos);
- xSlide->add(xShape);
- if(bCreateCaptions)
- createCaption( aPageSize );
-
+ try
+ {
+ xSlide->add(xShape);
+ if(bCreateCaptions)
+ createCaption( aPageSize );
+ }
+ catch (const css::uno::Exception& exc)
+ {
+ SAL_WARN( "sd", exc.Message );
+ }
}
}
}
commit e78cbac46be9ea66107dd2f5a1607c3224a2d928
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Mar 26 13:44:31 2018 +0100
forcepoint #34 survive missing autostyles
Change-Id: I742816297659d614e836a8d5e8965b1c55154719
Reviewed-on: https://gerrit.libreoffice.org/51892
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit 2446ae942b2ca35c9f727fb15ef5ec8d248b55c5)
diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx
index 9724b46bf6cc..3eda9d9c4f5b 100644
--- a/sc/source/filter/xml/xmlcelli.cxx
+++ b/sc/source/filter/xml/xmlcelli.cxx
@@ -365,6 +365,8 @@ void ScXMLTableRowCellContext::PushFormat(sal_Int32 nBegin, sal_Int32 nEnd, cons
sal_Int32 nEntryCount = xMapper->GetEntryCount();
SvXMLStylesContext* pAutoStyles = GetImport().GetAutoStyles();
+ if (!pAutoStyles)
+ return;
// Style name for text span corresponds with the name of an automatic style.
const XMLPropStyleContext* pStyle = dynamic_cast<const XMLPropStyleContext*>(
commit 51e39c93aaeb08cab4c39e80ae03554444311d11
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Mar 26 12:59:14 2018 +0100
forcepoint #32 survive missing value range
Change-Id: I90315f0481bf73c4d9071959bf5408f4a2690257
Reviewed-on: https://gerrit.libreoffice.org/51886
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit ee9d80d6d93afe914097b3f1835777052cc0000d)
diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx
index 6358cfa53a43..7d1186a1b6a7 100644
--- a/sc/source/filter/excel/xichart.cxx
+++ b/sc/source/filter/excel/xichart.cxx
@@ -3357,15 +3357,19 @@ Reference< XAxis > XclImpChAxis::CreateAxis( const XclImpChTypeGroup& rTypeGroup
{
case cssc2::AxisType::CATEGORY:
case cssc2::AxisType::SERIES:
- OSL_ENSURE( mxLabelRange, "Missing Label Range" );
// #i71684# radar charts have reversed rotation direction
if (mxLabelRange)
mxLabelRange->Convert( aAxisProp, aScaleData, rTypeInfo.meTypeCateg == EXC_CHTYPECATEG_RADAR );
+ else
+ SAL_WARN("sc.filter", "missing LabelRange");
break;
case cssc2::AxisType::REALNUMBER:
case cssc2::AxisType::PERCENT:
// #i85167# pie/donut charts have reversed rotation direction (at Y axis!)
- mxValueRange->Convert( aScaleData, rTypeInfo.meTypeCateg == EXC_CHTYPECATEG_PIE );
+ if (mxValueRange)
+ mxValueRange->Convert( aScaleData, rTypeInfo.meTypeCateg == EXC_CHTYPECATEG_PIE );
+ else
+ SAL_WARN("sc.filter", "missing ValueRange");
break;
default:
OSL_FAIL( "XclImpChAxis::CreateAxis - unknown axis type" );
@@ -3414,12 +3418,18 @@ void XclImpChAxis::ConvertAxisPosition( ScfPropertySet& rPropSet, const XclImpCh
{
if( ((GetAxisType() == EXC_CHAXIS_X) && rTypeGroup.GetTypeInfo().mbCategoryAxis) || (GetAxisType() == EXC_CHAXIS_Z) )
{
- OSL_ENSURE( mxLabelRange, "Missing Label Range" );
if (mxLabelRange)
mxLabelRange->ConvertAxisPosition( rPropSet, rTypeGroup.Is3dChart() );
+ else
+ SAL_WARN("sc.filter", "missing LabelRange");
}
else
- mxValueRange->ConvertAxisPosition( rPropSet );
+ {
+ if (mxValueRange)
+ mxValueRange->ConvertAxisPosition( rPropSet );
+ else
+ SAL_WARN("sc.filter", "missing ValueRange");
+ }
}
void XclImpChAxis::ReadChAxisLine( XclImpStream& rStrm )
commit 6c9bbf19c2b5da5c5c4a32b6bbeb30db29dd2c69
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Mar 26 12:50:20 2018 +0100
forcepoint #31 check validity of another group range
Change-Id: I82ff3e47a033c91581b108e1685b1ff4d5865895
Reviewed-on: https://gerrit.libreoffice.org/51883
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit be9e229ee147d45f110ecc1680be4068c1716c02)
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 473b6bccce23..75123a3765cf 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -3109,6 +3109,8 @@ public:
{
// Previous cell is a regular cell and current cell is a group.
nRow += xCurGrp->mnLength;
+ if (xCurGrp->mnLength > std::distance(it, itEnd))
+ throw css::lang::IllegalArgumentException();
std::advance(it, xCurGrp->mnLength);
pPrev->SetCellGroup(xCurGrp);
xCurGrp->mpTopCell = pPrev;
commit 4f90b5c2c0b7a6070ea5390b91cee08f8b711419
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Mar 26 09:32:14 2018 +0100
forcepoint #31 survive missing control model
Change-Id: I37e4af560b46b4f6d9e0b87fe58493818f366d3c
Reviewed-on: https://gerrit.libreoffice.org/51878
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit d98cfa4df4e6f7391b7790c625c1f8a650514e88)
diff --git a/oox/source/ole/vbacontrol.cxx b/oox/source/ole/vbacontrol.cxx
index 805bb2d7a504..e6f0d14b99da 100644
--- a/oox/source/ole/vbacontrol.cxx
+++ b/oox/source/ole/vbacontrol.cxx
@@ -431,7 +431,13 @@ void VbaFormControl::importStorage( StorageBase& rStrg, const AxClassTable& rCla
for ( ; it != it_end; ++it )
{
- if ( (*it)->mxCtrlModel->getControlType() == API_CONTROL_PAGE )
+ auto& elem = (*it)->mxCtrlModel;
+ if (!elem)
+ {
+ SAL_WARN("oox", "empty control model");
+ continue;
+ }
+ if (elem->getControlType() == API_CONTROL_PAGE)
{
VbaSiteModelRef xPageSiteRef = (*it)->mxSiteModel;
if ( xPageSiteRef.get() )
@@ -439,7 +445,7 @@ void VbaFormControl::importStorage( StorageBase& rStrg, const AxClassTable& rCla
}
else
{
- AxTabStripModel* pTabStrip = static_cast<AxTabStripModel*> ( (*it)->mxCtrlModel.get() );
+ AxTabStripModel* pTabStrip = static_cast<AxTabStripModel*>(elem.get());
sCaptions = pTabStrip->maItems;
pMultiPage->mnActiveTab = pTabStrip->mnListIndex;
pMultiPage->mnTabStyle = pTabStrip->mnTabStyle;
commit 66013b9f6144ff2b4d3610598334e19c83a95390
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Mar 26 12:14:23 2018 +0100
forcepoint #32 survive missing emf paths
Change-Id: Ic27c3bbac12f66b30ff2f30f558180127cc73a51
Reviewed-on: https://gerrit.libreoffice.org/51876
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
(cherry picked from commit 6ec045e846d49d60975cb4eb41f81e46652a0070)
diff --git a/cppcanvas/source/mtfrenderer/emfplus.cxx b/cppcanvas/source/mtfrenderer/emfplus.cxx
index 601146730703..5cabe44af28b 100644
--- a/cppcanvas/source/mtfrenderer/emfplus.cxx
+++ b/cppcanvas/source/mtfrenderer/emfplus.cxx
@@ -1979,7 +1979,12 @@ namespace cppcanvas
SAL_INFO("cppcanvas.emf", "EMF+ FillPath slot: " << index);
- EMFPPlusFillPolygon( static_cast<EMFPPath*>( aObjects [index])->GetPolygon (*this), rFactoryParms, rState, rCanvas, flags & 0x8000, brushIndexOrColor);
+ EMFPPath* path = static_cast<EMFPPath*>(aObjects[index]);
+ if (path)
+ EMFPPlusFillPolygon(path->GetPolygon (*this), rFactoryParms, rState, rCanvas, flags & 0x8000, brushIndexOrColor);
+ else
+ SAL_WARN("cppcanvas.emf", "EmfPlusRecordTypeFillPath missing path");
+
}
break;
case EmfPlusRecordTypeDrawEllipse:
@@ -2102,9 +2107,10 @@ namespace cppcanvas
SAL_INFO("cppcanvas.emf", "EMF+\tpen: " << penIndex);
EMFPPath* path = static_cast<EMFPPath*>( aObjects [flags & 0xff] );
- SAL_WARN_IF( !path, "cppcanvas.emf", "EmfPlusRecordTypeDrawPath missing path" );
-
- EMFPPlusDrawPolygon (path->GetPolygon (*this), rFactoryParms, rState, rCanvas, penIndex);
+ if (path)
+ EMFPPlusDrawPolygon(path->GetPolygon (*this), rFactoryParms, rState, rCanvas, penIndex);
+ else
+ SAL_WARN("cppcanvas.emf", "EmfPlusRecordTypeDrawPath missing path");
break;
}
commit f1fcf129a51cbcfa90f3ddfc3d1c1204f46fb083
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Mar 26 09:23:48 2018 +0100
forcepoint #30 check validity of group range
Change-Id: Ie0611f36809b051ce46030e44c137b4e1f8d2fe0
Reviewed-on: https://gerrit.libreoffice.org/51865
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit e82beb0812f2f4742b80ba1f63a026cbe77f5b25)
diff --git a/sc/qa/unit/data/xls/fail/forcepoint-group-range-1.xls b/sc/qa/unit/data/xls/fail/forcepoint-group-range-1.xls
new file mode 100755
index 000000000000..1aca9c7f113e
Binary files /dev/null and b/sc/qa/unit/data/xls/fail/forcepoint-group-range-1.xls differ
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 4374d47f66d2..473b6bccce23 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -3085,6 +3085,8 @@ public:
xPrevGrp->mnLength += xCurGrp->mnLength;
pCur->SetCellGroup(xPrevGrp);
sc::formula_block::iterator itGrpEnd = it;
+ if (xCurGrp->mnLength > std::distance(itGrpEnd, itEnd))
+ throw css::lang::IllegalArgumentException();
std::advance(itGrpEnd, xCurGrp->mnLength);
for (++it; it != itGrpEnd; ++it)
{
commit 27f1a444eb5761401fb2668ac4a41241dd9fac66
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Mar 26 08:57:09 2018 +0100
forcepoint #29 detect illegal self series add
Change-Id: I3bba0f942780c54951a3a810c05cc3b56ca18a5e
Reviewed-on: https://gerrit.libreoffice.org/51862
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit a471620af5099c960e22b46fad6e6f92a5055dbd)
diff --git a/sc/qa/unit/data/xls/pass/forcepoint-selfseriesadd.xls b/sc/qa/unit/data/xls/pass/forcepoint-selfseriesadd.xls
new file mode 100755
index 000000000000..e5eafd262520
Binary files /dev/null and b/sc/qa/unit/data/xls/pass/forcepoint-selfseriesadd.xls differ
diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx
index 1dcde34ff7ff..6358cfa53a43 100644
--- a/sc/source/filter/excel/xichart.cxx
+++ b/sc/source/filter/excel/xichart.cxx
@@ -1867,6 +1867,11 @@ void XclImpChSeries::SetDataLabel( const XclImpChTextRef& xLabel )
void XclImpChSeries::AddChildSeries( const XclImpChSeries& rSeries )
{
OSL_ENSURE( !HasParentSeries(), "XclImpChSeries::AddChildSeries - not allowed for child series" );
+ if (&rSeries == this)
+ {
+ SAL_WARN("sc.filter", "self add attempt");
+ return;
+ }
/* In Excel, trend lines and error bars are stored as own series. In Calc,
these are properties of the parent series. This function adds the
commit 9893de67d446947fcae57b8fe9b79fe556d0970b
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Mar 26 08:45:21 2018 +0100
forcepoint #28 missing cell on abw import
Change-Id: I7633a17afab5aa2eb9e47a552bd5d92c87d383c7
Reviewed-on: https://gerrit.libreoffice.org/51853
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit 671e9453ed07f1cf537ee507d63976f54be8e465)
diff --git a/sw/source/filter/xml/xmltbli.cxx b/sw/source/filter/xml/xmltbli.cxx
index 9acb5668f9f3..286b070b3650 100644
--- a/sw/source/filter/xml/xmltbli.cxx
+++ b/sw/source/filter/xml/xmltbli.cxx
@@ -19,6 +19,7 @@
#include "hintids.hxx"
+#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/text/XTextTable.hpp>
#include <com/sun/star/table/XCellRange.hpp>
@@ -1646,8 +1647,10 @@ void SwXMLTableContext::InsertCell( const OUString& rStyleName,
for( sal_uInt32 j=nRowSpan; j>0; --j )
{
const bool bCovered = i != nColSpan || j != nRowSpan;
- GetCell( nRowsReq-j, nColsReq-i )
- ->Set( sStyleName, j, i, pStartNode,
+ SwXMLTableCell_Impl *pCell = GetCell( nRowsReq-j, nColsReq-i );
+ if (!pCell)
+ throw css::lang::IndexOutOfBoundsException();
+ pCell->Set( sStyleName, j, i, pStartNode,
pTable, bProtect, pFormula, bHasValue, bCovered, fValue,
pStringValue, i_rXmlId );
}
commit 71858d8621fae8b1be6a2da1e97ec80cd0a765a1
Author: Caolán McNamara <caolanm at redhat.com>
Date: Thu Mar 22 10:35:18 2018 +0000
ofz#7063 ensure lifecycle
Reviewed-on: https://gerrit.libreoffice.org/51734
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit 919ff229ff33b0b23b30ee963e9f96f46fe9e1a2)
Change-Id: I18d62bc3bd409ca65c85ea47e8d5b3930481edf9
diff --git a/lotuswordpro/source/filter/lwpbookmarkmgr.cxx b/lotuswordpro/source/filter/lwpbookmarkmgr.cxx
index b3b01f916916..19586f4cbe7c 100644
--- a/lotuswordpro/source/filter/lwpbookmarkmgr.cxx
+++ b/lotuswordpro/source/filter/lwpbookmarkmgr.cxx
@@ -57,48 +57,42 @@
void LwpBookmarkMgr::AddXFBookmarkStart(const OUString& sName,XFBookmarkStart* pMark)
{
- std::map<OUString,XFBookmarkStart*>::iterator iter;
- iter = m_MapStart.find(sName);
+ auto iter = m_MapStart.find(sName);
if (iter == m_MapStart.end())//not find
{
m_MapStart[sName] = pMark;
}
else //have exist the same bookmark name
{
- XFBookmarkStart* pFind = iter->second;
- OUString totalName = pFind->GetDivision() + ":";
- totalName += pFind->GetName();
- pFind->SetName(totalName);
- m_MapStart[totalName] = pFind;
+ auto xFind = iter->second;
+ OUString totalName = xFind->GetDivision() + ":";
+ totalName += xFind->GetName();
+ xFind->SetName(totalName);
+ m_MapStart[totalName] = xFind;
m_MapStart[sName] = pMark;
}
}
void LwpBookmarkMgr::AddXFBookmarkEnd(const OUString& sName,XFBookmarkEnd* pMark)
{
- std::map<OUString,XFBookmarkEnd*>::iterator iter;
- iter = m_MapEnd.find(sName);
+ auto iter = m_MapEnd.find(sName);
if (iter == m_MapEnd.end())//not find
{
m_MapEnd[sName] = pMark;
}
else //have exist the same bookmark name
{
- XFBookmarkEnd* pFind = iter->second;
- OUString totalName = pFind->GetDivision() + ":";
- totalName += pFind->GetName();
- pFind->SetName(totalName);
- m_MapEnd[totalName] = pFind;
+ auto xFind = iter->second;
+ OUString totalName = xFind->GetDivision() + ":";
+ totalName += xFind->GetName();
+ xFind->SetName(totalName);
+ m_MapEnd[totalName] = xFind;
m_MapEnd[sName] = pMark;
}
}
bool LwpBookmarkMgr::FindBookmark(const OUString& sName)
{
- std::map<OUString,XFBookmarkStart*>::iterator iter;
- iter = m_MapStart.find(sName);
- if (iter != m_MapStart.end())
- return true;
- else
- return false;
+ auto iter = m_MapStart.find(sName);
+ return iter != m_MapStart.end();
}
LwpBookmarkMgr::LwpBookmarkMgr()
diff --git a/lotuswordpro/source/filter/lwpbookmarkmgr.hxx b/lotuswordpro/source/filter/lwpbookmarkmgr.hxx
index 6f471b7302b1..509a75ce7a91 100644
--- a/lotuswordpro/source/filter/lwpbookmarkmgr.hxx
+++ b/lotuswordpro/source/filter/lwpbookmarkmgr.hxx
@@ -75,8 +75,8 @@ public:
~LwpBookmarkMgr();
LwpBookmarkMgr();
private:
- std::map<OUString,XFBookmarkStart*> m_MapStart;
- std::map<OUString,XFBookmarkEnd*> m_MapEnd;
+ std::map<OUString, rtl::Reference<XFBookmarkStart>> m_MapStart;
+ std::map<OUString, rtl::Reference<XFBookmarkEnd>> m_MapEnd;
};
#endif
commit a46b40b217b616da5916383c6330fcf53380f70d
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Mar 21 09:18:21 2018 +0000
ofz#7043 already registered
Change-Id: Ic94891c82944d04fe3391c0bd0731a6e3e4373e0
Reviewed-on: https://gerrit.libreoffice.org/51693
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit 20ca0794bbac17e47eda9379b15513c780453566)
diff --git a/lotuswordpro/qa/cppunit/data/fail/registered-1.lwp b/lotuswordpro/qa/cppunit/data/fail/registered-1.lwp
new file mode 100644
index 000000000000..f3419f45b369
Binary files /dev/null and b/lotuswordpro/qa/cppunit/data/fail/registered-1.lwp differ
diff --git a/lotuswordpro/source/filter/lwpfrib.cxx b/lotuswordpro/source/filter/lwpfrib.cxx
index 6cb34aa2167a..ed7db90da9df 100644
--- a/lotuswordpro/source/filter/lwpfrib.cxx
+++ b/lotuswordpro/source/filter/lwpfrib.cxx
@@ -451,6 +451,8 @@ XFColor LwpFrib::GetHighlightColor()
void LwpFrib::Register(std::map<LwpFrib*,OUString>* pFribMap)
{
+ if (m_pFribMap)
+ throw std::runtime_error("registered already");
m_pFribMap = pFribMap;
}
commit 3895a8b0b72fea8d195e9286b0cf9f4c8398ed22
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Mar 26 14:06:34 2018 +0100
forcepoint #35 handle odd number of dimension fragments
Change-Id: I97e4e1b38d80276077b3427c90ae33023afb5e59
Reviewed-on: https://gerrit.libreoffice.org/51901
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit bd89b70a2f7ecccfa2edc965121c4b5976e54db9)
diff --git a/xmloff/source/draw/ximpcustomshape.cxx b/xmloff/source/draw/ximpcustomshape.cxx
index fbb5822c919e..594cbc5d787d 100644
--- a/xmloff/source/draw/ximpcustomshape.cxx
+++ b/xmloff/source/draw/ximpcustomshape.cxx
@@ -484,7 +484,7 @@ void GetSizeSequence( std::vector< css::beans::PropertyValue >& rDest,
if ( !vNum.empty() )
{
- uno::Sequence< awt::Size > aSizeSeq( vNum.size() / 2 );
+ uno::Sequence< awt::Size > aSizeSeq((vNum.size() + 1) / 2);
std::vector< sal_Int32 >::const_iterator aIter = vNum.begin();
std::vector< sal_Int32 >::const_iterator aEnd = vNum.end();
awt::Size* pValues = aSizeSeq.getArray();
commit 361c09813a685920b6aff33acb4d597bfa663d19
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Mar 28 08:53:20 2018 +0100
ofz#7165 set a recursion limit for svm in svm
Change-Id: Id9089986012588690b6d5e33cd71d094ef2357dd
Reviewed-on: https://gerrit.libreoffice.org/51984
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit fc6e9a715c74b2ff74ff9370fe5f5a29e20be8cd)
diff --git a/include/vcl/gdimtf.hxx b/include/vcl/gdimtf.hxx
index af9547e9b9da..5035c493e6b8 100644
--- a/include/vcl/gdimtf.hxx
+++ b/include/vcl/gdimtf.hxx
@@ -38,7 +38,7 @@ namespace tools {
class PolyPolygon;
}
class Gradient;
-
+struct ImplMetaReadData;
#define GDI_METAFILE_END ((size_t)0xFFFFFFFF)
#define GDI_METAFILE_LABEL_NOTFOUND ((size_t)0xFFFFFFFF)
@@ -54,6 +54,9 @@ enum class MtfConversion
typedef Color (*ColorExchangeFnc)( const Color& rColor, const void* pColParam );
typedef BitmapEx (*BmpExchangeFnc)( const BitmapEx& rBmpEx, const void* pBmpParam );
+VCL_DLLPUBLIC SvStream& ReadGDIMetaFile(SvStream& rIStm, GDIMetaFile& rGDIMetaFile, ImplMetaReadData* pReadData = nullptr);
+VCL_DLLPUBLIC SvStream& WriteGDIMetaFile( SvStream& rOStm, const GDIMetaFile& rGDIMetaFile );
+
class VCL_DLLPUBLIC GDIMetaFile final
{
private:
@@ -188,8 +191,8 @@ public:
// Stream-operators write (still) the old format
// and read both the old and the new format
- friend VCL_DLLPUBLIC SvStream& ReadGDIMetaFile( SvStream& rIStm, GDIMetaFile& rGDIMetaFile );
- friend VCL_DLLPUBLIC SvStream& WriteGDIMetaFile( SvStream& rOStm, const GDIMetaFile& rGDIMetaFile );
+ friend VCL_DLLPUBLIC SvStream& ReadGDIMetaFile(SvStream& rIStm, GDIMetaFile& rGDIMetaFile, ImplMetaReadData* pReadData);
+ friend VCL_DLLPUBLIC SvStream& WriteGDIMetaFile(SvStream& rOStm, const GDIMetaFile& rGDIMetaFile);
/// Creates an antialiased thumbnail, with maximum width or height of nMaximumExtent.
bool CreateThumbnail(BitmapEx& rBitmapEx,
diff --git a/include/vcl/metaact.hxx b/include/vcl/metaact.hxx
index 3a52aaff98cb..cccbe10345e5 100644
--- a/include/vcl/metaact.hxx
+++ b/include/vcl/metaact.hxx
@@ -43,9 +43,11 @@ enum class DrawTextFlags;
struct ImplMetaReadData
{
rtl_TextEncoding meActualCharSet;
+ int mnParseDepth;
- ImplMetaReadData() :
- meActualCharSet( RTL_TEXTENCODING_ASCII_US )
+ ImplMetaReadData()
+ : meActualCharSet(RTL_TEXTENCODING_ASCII_US)
+ , mnParseDepth(0)
{}
};
diff --git a/vcl/qa/cppunit/graphicfilter/data/svm/fail/ofz7165-1.svm b/vcl/qa/cppunit/graphicfilter/data/svm/fail/ofz7165-1.svm
new file mode 100644
index 000000000000..ad722ea13a6c
Binary files /dev/null and b/vcl/qa/cppunit/graphicfilter/data/svm/fail/ofz7165-1.svm differ
diff --git a/vcl/source/gdi/gdimtf.cxx b/vcl/source/gdi/gdimtf.cxx
index b15b096b05be..cf55c50134f9 100644
--- a/vcl/source/gdi/gdimtf.cxx
+++ b/vcl/source/gdi/gdimtf.cxx
@@ -2667,7 +2667,31 @@ sal_uLong GDIMetaFile::GetSizeBytes() const
return nSizeBytes;
}
-SvStream& ReadGDIMetaFile( SvStream& rIStm, GDIMetaFile& rGDIMetaFile )
+namespace
+{
+ class DepthGuard
+ {
+ private:
+ ImplMetaReadData& m_rData;
+ rtl_TextEncoding m_eOrigCharSet;
+ public:
+ DepthGuard(ImplMetaReadData& rData, SvStream& rIStm)
+ : m_rData(rData)
+ , m_eOrigCharSet(m_rData.meActualCharSet)
+ {
+ ++m_rData.mnParseDepth;
+ m_rData.meActualCharSet = rIStm.GetStreamCharSet();
+ }
+ bool TooDeep() const { return m_rData.mnParseDepth > 1024; }
+ ~DepthGuard()
+ {
+ --m_rData.mnParseDepth;
+ m_rData.meActualCharSet = m_eOrigCharSet;
+ }
+ };
+}
+
+SvStream& ReadGDIMetaFile(SvStream& rIStm, GDIMetaFile& rGDIMetaFile, ImplMetaReadData* pData)
{
if( !rIStm.GetError() )
{
@@ -2695,12 +2719,20 @@ SvStream& ReadGDIMetaFile( SvStream& rIStm, GDIMetaFile& rGDIMetaFile )
pCompat.reset(); // destructor writes stuff into the header
- ImplMetaReadData aReadData;
- aReadData.meActualCharSet = rIStm.GetStreamCharSet();
+ std::unique_ptr<ImplMetaReadData> xReadData;
+ if (!pData)
+ {
+ xReadData.reset(new ImplMetaReadData);
+ pData = xReadData.get();
+ }
+ DepthGuard aDepthGuard(*pData, rIStm);
+
+ if (aDepthGuard.TooDeep())
+ throw std::runtime_error("too much recursion");
for( sal_uInt32 nAction = 0; ( nAction < nCount ) && !rIStm.IsEof(); nAction++ )
{
- MetaAction* pAction = MetaAction::ReadMetaAction( rIStm, &aReadData );
+ MetaAction* pAction = MetaAction::ReadMetaAction(rIStm, pData);
if( pAction )
{
if (pAction->GetType() == MetaActionType::COMMENT)
diff --git a/vcl/source/gdi/metaact.cxx b/vcl/source/gdi/metaact.cxx
index 3ef9692b106a..dc01eec1c2d8 100644
--- a/vcl/source/gdi/metaact.cxx
+++ b/vcl/source/gdi/metaact.cxx
@@ -3042,10 +3042,10 @@ void MetaFloatTransparentAction::Write( SvStream& rOStm, ImplMetaWriteData* pDat
WriteGradient( rOStm, maGradient );
}
-void MetaFloatTransparentAction::Read( SvStream& rIStm, ImplMetaReadData* )
+void MetaFloatTransparentAction::Read(SvStream& rIStm, ImplMetaReadData* pData)
{
VersionCompat aCompat(rIStm, StreamMode::READ);
- ReadGDIMetaFile( rIStm, maMtf );
+ ReadGDIMetaFile(rIStm, maMtf, pData);
ReadPair( rIStm, maPoint );
ReadPair( rIStm, maSize );
ReadGradient( rIStm, maGradient );
commit 45638f825464f8341987531da1880cc29a363c91
Author: Caolán McNamara <caolanm at redhat.com>
Date: Thu Mar 29 17:42:12 2018 +0100
forcepoint#36 avoid dangling SvTextShapeImportHelper in case of exceptions
Change-Id: Ibdbc047029c31d2b06d2349d68e1cbd9b15fd514
Reviewed-on: https://gerrit.libreoffice.org/52137
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>
(cherry picked from commit c4674e8a1b04314fc45f6a8269cf6519b5fc012b)
diff --git a/sw/qa/core/data/odt/fail/forcepoint-dtor-1.odt b/sw/qa/core/data/odt/fail/forcepoint-dtor-1.odt
new file mode 100755
index 000000000000..6442200cdeda
Binary files /dev/null and b/sw/qa/core/data/odt/fail/forcepoint-dtor-1.odt differ
diff --git a/sw/source/filter/xml/xmlimp.cxx b/sw/source/filter/xml/xmlimp.cxx
index a2f911417da0..c06c7453f62f 100644
--- a/sw/source/filter/xml/xmlimp.cxx
+++ b/sw/source/filter/xml/xmlimp.cxx
@@ -444,6 +444,11 @@ SwXMLImport::SwXMLImport(
SwXMLImport::~SwXMLImport() throw ()
{
+ if (HasShapeImport())
+ {
+ SAL_WARN("sw", "endDocument skipped, dropping shapes now to avoid dangling SvTextShapeImportHelper pointing to this");
+ ClearShapeImport();
+ }
delete m_pDocElemTokenMap;
delete m_pTableElemTokenMap;
delete m_pTableCellAttrTokenMap;
commit c40a1722f03c28522f8226574ed045e34eb80872
Author: Eike Rathke <erack at redhat.com>
Date: Fri Dec 8 15:59:53 2017 +0100
ofz#7121 NamedDBs::insert takes ownership of its argument
at one point this was based on std::auto_ptr and didn't
free its arg on failure
Adapt description to reality
(cherry picked from commit f161cdc979587488df83e63002bee7ee15152d42)
Reviewed-on: https://gerrit.libreoffice.org/51934
Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
Tested-by: Jenkins <ci at libreoffice.org>
(cherry picked from commit c4946ba195c9f0c2fb3f18f1028eea725c920e2e)
Change-Id: I24133fb6c52bd7500037364120cb11d1b1f099c2
8aeed6876d80b7ebe4ebb5e2cfd12e00420bd207
diff --git a/sc/inc/dbdata.hxx b/sc/inc/dbdata.hxx
index 328dd2a597e4..df6b88d4dbb9 100644
--- a/sc/inc/dbdata.hxx
+++ b/sc/inc/dbdata.hxx
@@ -257,8 +257,13 @@ public:
ScDBData* findByIndex(sal_uInt16 nIndex);
ScDBData* findByUpperName(const OUString& rName);
iterator findByUpperName2(const OUString& rName);
- // Takes ownership of p iff it returns true:
- SAL_WARN_UNUSED_RESULT bool insert(ScDBData* p);
+
+ /** Takes ownership of p and attempts to insert it into the collection.
+ Deletes p if it could not be inserted, i.e. duplicate name.
+ @return <TRUE/> if inserted, else <FALSE/>.
+ */
+ bool insert(ScDBData* p);
+
void erase(const iterator& itr);
bool empty() const;
size_t size() const;
diff --git a/sc/qa/unit/ucalc_sharedformula.cxx b/sc/qa/unit/ucalc_sharedformula.cxx
index a66a09302667..491573cc86cf 100644
--- a/sc/qa/unit/ucalc_sharedformula.cxx
+++ b/sc/qa/unit/ucalc_sharedformula.cxx
@@ -1637,8 +1637,6 @@ void Test::testSharedFormulaUpdateOnDBChange()
// Define database range 'MyRange' for A1:A2.
ScDBData* pData = new ScDBData("MyRange", 0, 0, 0, 0, 1);
bool bInserted = pDBs->getNamedDBs().insert(pData);
- if (!bInserted)
- delete pData;
CPPUNIT_ASSERT_MESSAGE("Failed to insert a new database range.", bInserted);
// Insert in C2:C4 a group of formula cells that reference MyRange.
@@ -1662,8 +1660,6 @@ void Test::testSharedFormulaUpdateOnDBChange()
ScDBCollection aNewDBs(m_pDoc);
ScDBData* pNewData = new ScDBData("MyRange", 0, 0, 0, 0, 3);
bInserted = aNewDBs.getNamedDBs().insert(pNewData);
- if (!bInserted)
- delete pNewData;
CPPUNIT_ASSERT_MESSAGE("Failed to insert a new database range.", bInserted);
std::vector<ScRange> aDeleted;
diff --git a/sc/source/filter/xml/xmldrani.cxx b/sc/source/filter/xml/xmldrani.cxx
index c525b046cfe2..f7eb3be0d480 100644
--- a/sc/source/filter/xml/xmldrani.cxx
+++ b/sc/source/filter/xml/xmldrani.cxx
@@ -468,10 +468,7 @@ void ScXMLDatabaseRangeContext::EndElement()
if (pData.get())
{
setAutoFilterFlags(*pDoc, *pData);
- if (pDoc->GetDBCollection()->getNamedDBs().insert(pData.get()))
- {
- pData.release();
- }
+ pDoc->GetDBCollection()->getNamedDBs().insert(pData.release());
}
}
}
diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index 4cbbd06b2050..c5c5d57ae67d 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -168,7 +168,6 @@ bool ScDBDocFunc::RenameDBRange( const OUString& rOld, const OUString& rNew )
bool bInserted = rDBs.insert(pNewData);
if (!bInserted) // Fehler -> alten Zustand wiederherstellen
{
- delete pNewData;
rDoc.SetDBCollection(pUndoColl); // gehoert dann dem Dokument
}
commit 6eaf5fa22d90092c7261d17971896b61849e32dc
Author: Caolán McNamara <caolanm at redhat.com>
Date: Sun Mar 18 12:51:07 2018 +0000
ofz#6999 check available data len
Change-Id: I89a7913d35706ee5797beee654ef99be088431b8
Reviewed-on: https://gerrit.libreoffice.org/51499
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
(cherry picked from commit de7d754e8706eb9187ddfb9e87c4f00faa98ca17)
diff --git a/sw/source/filter/ww8/ww8par4.cxx b/sw/source/filter/ww8/ww8par4.cxx
index b48c94af0516..05edf9a87fc3 100644
--- a/sw/source/filter/ww8/ww8par4.cxx
+++ b/sw/source/filter/ww8/ww8par4.cxx
@@ -476,8 +476,8 @@ void SwWW8ImplReader::Read_CRevisionMark(RedlineType_t eType,
const sal_uInt8* pSprmCDttmRMark;
if( nsRedlineType_t::REDLINE_FORMAT == eType )
{
- pSprmCIbstRMark = pData+1;
- pSprmCDttmRMark = pData+3;
+ pSprmCIbstRMark = nLen >= 3 ? pData+1 : nullptr;
+ pSprmCDttmRMark = nLen >= 7 ? pData+3 : nullptr;
}
else
{
commit cf2d088ae3df014adb6284ac5522db794ab3da2d
Author: Caolán McNamara <caolanm at redhat.com>
Date: Thu Mar 15 17:26:36 2018 +0000
ofz#6827 Bad-cast
Change-Id: I856d781f122c21c02a0a8cd01369d49f50b8a555
Reviewed-on: https://gerrit.libreoffice.org/51365
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <mstahl at redhat.com>
(cherry picked from commit 19f0b25acc2a23b790301755a9fee2629eb667b0)
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index c8dd83267387..6607a949df4f 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -4051,7 +4051,7 @@ bool SwWW8ImplReader::ReadText(WW8_CP nStartCp, WW8_CP nTextLen, ManTypes nType)
long nCpOfs = m_pPlcxMan->GetCpOfs(); // Offset for Header/Footer, Footnote
WW8_CP nNext = m_pPlcxMan->Where();
- SwTextNode* pPreviousNode = nullptr;
+ m_pPreviousNode = nullptr;
sal_uInt8 nDropLines = 0;
SwCharFormat* pNewSwCharFormat = nullptr;
const SwCharFormat* pFormat = nullptr;
@@ -4080,7 +4080,7 @@ bool SwWW8ImplReader::ReadText(WW8_CP nStartCp, WW8_CP nTextLen, ManTypes nType)
// If the previous paragraph was a dropcap then do not
// create a new txtnode and join the two paragraphs together
- if (bStartLine && !pPreviousNode) // Line end
+ if (bStartLine && !m_pPreviousNode) // Line end
{
bool bSplit = true;
if (m_bCareFirstParaEndInToc)
@@ -4104,10 +4104,10 @@ bool SwWW8ImplReader::ReadText(WW8_CP nStartCp, WW8_CP nTextLen, ManTypes nType)
}
}
- if (pPreviousNode && bStartLine)
+ if (m_pPreviousNode && bStartLine)
{
SwTextNode* pEndNd = m_pPaM->GetNode().GetTextNode();
- const sal_Int32 nDropCapLen = pPreviousNode->GetText().getLength();
+ const sal_Int32 nDropCapLen = m_pPreviousNode->GetText().getLength();
// Need to reset the font size and text position for the dropcap
{
@@ -4134,12 +4134,12 @@ bool SwWW8ImplReader::ReadText(WW8_CP nStartCp, WW8_CP nTextLen, ManTypes nType)
SwPosition aStart(*pEndNd);
m_pCtrlStck->NewAttr(aStart, aDrop);
m_pCtrlStck->SetAttr(*m_pPaM->GetPoint(), RES_PARATR_DROP);
- pPreviousNode = nullptr;
+ m_pPreviousNode = nullptr;
}
else if (m_bDropCap)
{
// If we have found a dropcap store the textnode
- pPreviousNode = m_pPaM->GetNode().GetTextNode();
+ m_pPreviousNode = m_pPaM->GetNode().GetTextNode();
const sal_uInt8 *pDCS;
@@ -4151,7 +4151,7 @@ bool SwWW8ImplReader::ReadText(WW8_CP nStartCp, WW8_CP nTextLen, ManTypes nType)
if (pDCS)
nDropLines = (*pDCS) >> 3;
else // There is no Drop Cap Specifier hence no dropcap
- pPreviousNode = nullptr;
+ m_pPreviousNode = nullptr;
if (const sal_uInt8 *pDistance = m_pPlcxMan->GetPapPLCF()->HasSprm(0x842F))
nDistance = SVBT16ToShort( pDistance );
@@ -4220,6 +4220,8 @@ bool SwWW8ImplReader::ReadText(WW8_CP nStartCp, WW8_CP nTextLen, ManTypes nType)
}
}
+ m_pPreviousNode = nullptr;
+
if (m_pPaM->GetPoint()->nContent.GetIndex())
AppendTextNode(*m_pPaM->GetPoint());
@@ -4358,6 +4360,7 @@ SwWW8ImplReader::SwWW8ImplReader(sal_uInt8 nVersionPara, SotStorage* pStorage,
, m_nEmbeddedTOXLevel(0)
, m_bLoadingTOXHyperlink(false)
, m_pPosAfterTOC(nullptr)
+ , m_pPreviousNode(nullptr)
, m_bCareFirstParaEndInToc(false)
, m_bCareLastParaEndInToc(false)
, m_aTOXEndCps()
diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx
index e292b4690511..6b5b65f927bb 100644
--- a/sw/source/filter/ww8/ww8par.hxx
+++ b/sw/source/filter/ww8/ww8par.hxx
@@ -1343,6 +1343,8 @@ private:
bool m_bLoadingTOXHyperlink;
// a document position recorded the after-position of TOC section, managed by Read_F_TOX() and End_Field()
SwPaM* m_pPosAfterTOC;
+ // used for some dropcap tweaking
+ SwTextNode* m_pPreviousNode;
std::unique_ptr< SwPosition > m_pLastAnchorPos;
diff --git a/sw/source/filter/ww8/ww8par6.cxx b/sw/source/filter/ww8/ww8par6.cxx
index 2596354df817..6f5ef0f7ea28 100644
--- a/sw/source/filter/ww8/ww8par6.cxx
+++ b/sw/source/filter/ww8/ww8par6.cxx
@@ -2370,19 +2370,31 @@ bool SwWW8ImplReader::JoinNode(SwPaM &rPam, bool bStealAttr)
if (bStealAttr)
m_pCtrlStck->StealAttr(rPam.GetPoint()->nNode);
- if (m_pLastAnchorPos.get())
+ if (m_pLastAnchorPos || m_pPreviousNode)
{
- //If the last anchor pos is here, then clear the anchor pos.
- //This "last anchor pos" is only used for fixing up the
- //positions of things anchored to page breaks and here
- //we are removing the last paragraph of a frame, so there
- //cannot be a page break at this point so we can
- //safely reset m_pLastAnchorPos to avoid any dangling
- //SwIndex's pointing into the deleted paragraph
- SwNodeIndex aLastAnchorPos(m_pLastAnchorPos->nNode);
SwNodeIndex aToBeJoined(aPref, 1);
- if (aLastAnchorPos == aToBeJoined)
- m_pLastAnchorPos.reset();
+
+ if (m_pLastAnchorPos)
+ {
+ //If the last anchor pos is here, then clear the anchor pos.
+ //This "last anchor pos" is only used for fixing up the
+ //positions of things anchored to page breaks and here
+ //we are removing the last paragraph of a frame, so there
+ //cannot be a page break at this point so we can
+ //safely reset m_pLastAnchorPos to avoid any dangling
+ //SwIndex's pointing into the deleted paragraph
+ SwNodeIndex aLastAnchorPos(m_pLastAnchorPos->nNode);
+ if (aLastAnchorPos == aToBeJoined)
+ m_pLastAnchorPos.reset();
+ }
+
+ if (m_pPreviousNode)
+ {
+ //If the drop character start pos is here, then clear it.
+ SwNodeIndex aDropCharPos(*m_pPreviousNode);
+ if (aDropCharPos == aToBeJoined)
+ m_pPreviousNode = nullptr;
+ }
}
pNode->JoinNext();
commit 79e12412d823d21bb2a0f83bf7c88ab8a92bf4d0
Author: Caolán McNamara <caolanm at redhat.com>
Date: Mon Mar 12 10:24:55 2018 +0000
forcepoint #24 back() on empty vector
Thanks to Antti Levomäki and Christian Jalio from Forcepoint.
Change-Id: Idb6723b53a1ae8aaca80847bfe643bc4abaedd21
Reviewed-on: https://gerrit.libreoffice.org/51123
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Michael Stahl <mstahl at redhat.com>
(cherry picked from commit 13468a3a667c6719ccbc44c913c194fc77d8e7cf)
diff --git a/sw/qa/core/data/rtf/fail/forcepoint-7.rtf b/sw/qa/core/data/rtf/fail/forcepoint-7.rtf
new file mode 100755
index 000000000000..e5b227346108
--- /dev/null
+++ b/sw/qa/core/data/rtf/fail/forcepoint-7.rtf
@@ -0,0 +1,517 @@
+{\rtf1\ânsi\ansicpg1252\deflang3081\ftnbj\uc1\deff0
+{\fonttbl{\f0 \fswiss \fcharset1 Arial;}{\f1 \froman \fcharset2 Times New Roman;}{\f2 \froman \fcharset2 Symbol;}{\f3 \fswiss \fcharset0 Times New Roman;}{\f4 \fswiss \fcharset2 Symbol;}{\f5 \froman \fcharset0 Arial;}{\f6 \fswiss \fcharset0 Lucida Sans;}{\f7 \fswiss \fcharset0 Arial;}{\f8 \fswiss \fcharset1 Wingdings;}}
+{\colortbl ;\red0\green0\blue0 ;\red255\green255\blue255 ;\red255\green255\blue128 ;\red0\green64\blue128 ;\red0\green0\blue255 ;\red0\green0\blue160 ;}
+{\stylesheet{\f0\fs20\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Normal;}{\cs1\f0\fs24\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0 Default Paragraph Font;}{\cs2\f6\fs16\b\protect\cf1\cb3\chcbpat3\expnd0\expndtw0\charscalex100\dn0 SSBookmark;}{\s3\snext0\outlinelevel0\f0\fs32\b\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel0 Heading 1;}{\s4\snext0\outlinelevel1\f0\fs24\b\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel1 Heading 2;}{\s5\snext0\outlinelevel2\f0\fs24\b\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel2 Heading 3
+;}{\s6\snext0\outlinelevel3\f0\fs24\b\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel3 Heading 4;}{\s7\snext0\outlinelevel4\f0\fs24\b\i\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel4 Heading 5;}{\s8\snext0\outlinelevel5\f0\fs20\b\cf1\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel5 Heading 6;}{\s9\snext0\outlinelevel6\f0\fs24\cf4\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel6 Heading 7;}{\s10\snext0\outlinelevel7\f0\fs24\i\cf4\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel7 Heading 8
+;}{\s11\snext0\outlinelevel8\f0\fs22\cf4\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0\outlinelevel8 Heading 9;}{\s12\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 TOC 1;}{\s13\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li180\ri0\sb0\sa0\sl0\shading0 TOC 2;}{\s14\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li360\ri0\sb0\sa0\sl0\shading0 TOC 3;}{\s15\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li540\ri0\sb0\sa0\sl0\shading0 TOC 4;}{\s16\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li720\ri0\sb0\sa0\sl0\shading0 TOC 5
+;}{\s17\snext0\f0\fs24\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li900\ri0\sb0\sa0\sl0\shading0 TOC 6;}{\s18\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li1080\ri0\sb0\sa0\sl0\shading0 TOC 7;}{\s19\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li1260\ri0\sb0\sa0\sl0\shading0 TOC 8;}{\s20\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li1440\ri0\sb0\sa0\sl0\shading0 TOC 9;}{\s21\snext0\f0\fs32\b\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb240\sa60\sl0\shading0\qc Title;}{\s22\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi-360\li360\ri0\sb0\sa0\sl0\shading0 Numbered List
+;}{\s23\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi-360\li360\ri0\sb0\sa0\sl0\shading0 Bulleted List;}{\s24\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa120\sl0\shading0 Body Text;}{\s25\snext0\f0\fs18\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa120\sl0\sl480\slmult1\shading0 Body Text 2;}{\s26\snext0\f0\fs16\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa120\sl0\shading0 Body Text 3;}{\s27\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Note Heading;}{\s28\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Plain Text
+;}{\s29\snext0\f0\fs20\b\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Strong;}{\s30\snext0\f0\fs20\i\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Emphasis;}{\s31\snext0\f0\fs20\ul\cf5\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Hyperlink;}{\s32\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Footer;}{\s33\snext0\f0\fs20\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Header;}{\s34\snext0\f0\fs18\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 Code
+;}{\cs35\f0\fs20\i\cf4\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0 Field Label;}{\cs36\f0\fs22\b\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0 Table Heading;}{\cs37\f0\fs20\b\ul\cf0\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0 Object type;}{\s38\snext0\f0\fs20\b\i\cf6\cb2\chcbpat2\expnd0\expndtw0\charscalex100\dn0\fi0\li0\ri0\sb0\sa0\sl0\shading0 List Header;}{\s39\snext24\f0\fs20\i\cf5\fi0\li0\ri0\sb0\sa120\sl240 InfoBlue;}}
+{\*\revtbl{Unknown;}}
+{\*\listtable
+{\list\listtemplateid1
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List1;}\listid1
+}
+{\list\listtemplateid2
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List2;}\listid2
+}
+{\list\listtemplateid3
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f1\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List3;}\listid3
+}
+{\list\listtemplateid4
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f1\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List4;}\listid4
+}
+{\list\listtemplateid5
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List5;}\listid5
+}
+{\list\listtemplateid6
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List6;}\listid6
+}
+{\list\listtemplateid7
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\f3\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List7;}\listid7
+}
+{\list\listtemplateid8
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List8;}\listid8
+}
+{\list\listtemplateid9
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List9;}\listid9
+}
+{\list\listtemplateid10
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List10;}\listid10
+}
+{\list\listtemplateid11
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f2\fs24}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'01.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'02.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'03.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'04.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'05.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'06.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'07.}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'08.}{\levelnumbers \'01}}
+{\listname List11;}\listid11
+}
+{\list\listtemplateid12
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\b}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List477861859_1;}\listid477861859
+}
+{\list\listtemplateid13
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\b}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List735301812_1;}\listid735301812
+}
+{\list\listtemplateid14
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\b}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List735310515_1;}\listid735310515
+}
+{\list\listtemplateid15
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\b}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List735674015_1;}\listid735674015
+}
+{\list\listtemplateid16
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List366130062_1;}\listid735674016
+}
+{\list\listtemplateid17
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List366148531_1;}\listid735674017
+}
+{\list\listtemplateid18
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List366155203_1;}\listid735674018
+}
+{\list\listtemplateid19
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname ;}\listid735674019
+}
+{\list\listtemplateid20
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'02\'00.}{\levelnumbers \'01}\b}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List434687953_1;}\listid735674020
+}
+{\list\listtemplateid21
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List435828312_1;}\listid735674021
+}
+{\list\listtemplateid22
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}ô {\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List435835406_1;}\listid735674022
+}
+{\list\listtemplateid23
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List435856328_1;}\listid735674023
+}
+{\list\listtemplateid24
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname ;}\listid735674024
+}
+{\list\listtemplateid25
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List437350656_1;}\listid735674025
+}
+{\list\listtemplateid26
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List437406078_1;}\listid735674026
+}
+{\list\listtemplateid27
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List36741109_1;}\listid735674027
+}
+{\list\listtemplateid28
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List36766656_1;}\listid735674028
+}
+{\list\listtemplateid29
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List-2028665468_1;}\listid735674029
+}
+{\list\listtemplateid30
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List-1965950843_1;}\listid735674030
+}
+{\list\listtemplateid31
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'01\'00}{\levelnumbers \'01}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'03\'00.\'01}{\levelnumbers \'01\'03}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'05\'00.\'01.\'02}{\levelnumbers \'01\'03\'05}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'07\'00.\'01.\'02.\'03}{\levelnumbers \'01\'03\'05\'07}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'09\'00.\'01.\'02.\'03.\'04}{\levelnumbers \'01\'03\'05\'07\'09}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'b\'00.\'01.\'02.\'03.\'04.\'05}{\levelnumbers \'01\'03\'05\'07\'09\'b}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'d\'00.\'01.\'02.\'03.\'04.\'05.\'06}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f}}
+{\listlevel\levelnfc0\levelfollow0\levelstartat1{\leveltext \'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08}{\levelnumbers \'01\'03\'05\'07\'09\'b\'d\'f\'11}}
+{\listname List-1965798031_1;}\listid735674031
+}
+}
+{\*\listoverridetable
+{\listoverride\listid735674026\listoverridecount9
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+{\lfolevel\listoverrideformat\listoverridestartat
+{\listlevel\levelnfc23\levelfollow0\levelstartat1{\leveltext \'01\'b7}{\levelnumbers}\f4\fcs1\f4\af4\fcs0\rtlch\f4\af4\ltrch}
+}
+\ls1}
+}
+\paperw11908\paperh16833\margl1440\margr1440\margt1440\margb1440\headery720\footery720\nogrowautofit\deftab720\formshade\fet4\aenddoc\aftnnrlc\pgbrdrhead\pgbrdrfoot
+\sectd\pgwsxn12240\pghsxn15840\titlepg\marglsxn1440\margrsxn1440\margtsxn1440\margbsxn1440\headery720\footery720\sbkpage\pgnstarts1\pgnrestart\pgndec
+\plain\plain\f0\fs20
+{\footer\pard\plain\f0\fs20\plain\f0\fs20\loch \par
+\plain\f0\fs20}
+{\header\pard\plain\f0\fs20\plain\f0\fs20\loch \par
+\plain\f0\fs20}
+{\headerf\pard\plain\f0\fs20\plain\f0\fs20\loch \par
+\plain\f0\fs20}
+\li108\qc\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\fs20\par
+\par
+\par
+\par
+\li0\ql\plain\f0\fs20{\*\bkmkstart BKM_33fd3768_22f8_4de1_91d2_533133defa34}{\*\bkmkend BKM_33fd3768_22f8_4de1_91d2_533133defa34}{\*\bkmkstart Test1}{\*\bkmkend Test1}{\*\bkmkstart BKM_AB2df357_B3ca_4a2b_86fb_B32f0a1ff7fe}{\*\bkmkend BKM_AB2df357_B3ca_4a2b_86fb_B32f0a1ff7fe}\plain\f3\fs20\lang4105\hich\f3\dbch\f3\loch\f3\cf1\fs20\par
+\trowd\trgaph60\trleft0\trrh288\trkeep
+\clvertalc\clbrdrt\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clshdng1000\cellx9360
+\pard\intbl\ssparaaux0\s0\ql\plain\f0\fs20\plain\f5\fs20\lang1033\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\loch Scenario\cell
+\plain\f5\fs20\lang1033\hich\f5\dbch\f5\loch\f5\cf1\fs20\intbl\row
+\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmgf\cellx630
+\clvertalt\cellx9360
+\pard\intbl\ssparaaux0\s0\li360\ri90\sb40\qr\plain\f0\fs20\plain\f7\fs20\cell
+\pard\intbl\ssparaaux0\s0\sb40\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\par
+\pard\intbl\itap2\ssparaaux0\s0\sb40\sa40\ql\plain\f0\fs20\plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\protect\loch Basic Path\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\loch \plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\loch (\plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\protect\loch Basic Path\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\loch )\nestcell{\nonesttables\par}
+\intbl\itap2
+{{\*\nesttableprops\trowd\trgaph60\trleft0
+\clvertalt\clbrdrt\brdrs\brdrw1\clbrdrb\brdrs\brdrw1\clshdng1000\clcbpat2\cellx8610
+\nestrow}{\nonesttables\par}}
+\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmgf\cellx630
+\clvertalt\cellx9360
+\pard\intbl\ssparaaux0\s0\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\par
+\cell
+\intbl\row
+\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmrg\cellx630
+\clvertalt\clvmgf\cellx9360
+\pard\intbl\ssparaaux0\s0{\pntext\pard\plain\f4\fs20 \'b7\tab}{\*\pn\pnlvlblt\ls1\ilvl0\pnhang\pnf0{\pntxtb \'b7}}\ls1\ilvl0\fi-180\li360\sb40\qr\plain\f0\fs20\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\cell
+\pard\intbl\itap2\ssparaaux0\s0{\pntext\pard\plain\f4\fs20 \'b7\tab}{\*\pn\pnlvlblt\ls1\ilvl0\pnhang\pnf0{\pntxtb \'b7}}\ls1\ilvl0\fi-180\li360\sb40\qr\plain\f0\fs20\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\nestcell{\nonesttables\par}
+\pard\intbl\itap2\ssparaaux0\s0\ql\plain\f0\fs20{\*\bkmkstart Pkg_Element_ElemScenario_Scenario_Structured_Begin}{\*\bkmkend Pkg_Element_ElemScenario_Scenario_Structured_Begin}\plain\f6\fs16\cs2\lang4105\hich\f6\dbch\f6\loch\f6\cf1\highlight3\cb3\chcbpat3\ulc1\fs16\b\protect\loch structured scenarios {\*\bkmkstart Pkg_Element_ElemScenario_Scenario_Structured_Begin_Inner}{\*\bkmkend Pkg_Element_ElemScenario_Scenario_Structured_Begin_Inner}\loch >\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\par
+\par
+\plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\b\protect\loch 1\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\b\loch .\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\loch \plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\protect\loch user enter data\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\par
+\pard\intbl\itap2\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\par
+\pard\intbl\itap3\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\ul\i\loch Rules \loch Referenced:\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\pard\intbl\itap3\ssparaaux0\s0\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\intbl\itap3
+{{\*\nesttableprops\trowd\trgaph60\trleft0
+\clvertalt\clvmgf\clcbpat2\cellx1736
+\clvertalt\clcbpat2\cellx7910
+\nestrow}{\nonesttables\par}}
+\pard\intbl\itap-88\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\ul\i\loch Exc\loch epti\loch ons:\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\loch \nestcell{\nonesttables\par}
+\pard\intbl\itap3\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\nestcell{\nonesttables\par}
+\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\intbl\itap3
+{{\*\nesttableprops\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmrg\clcbpat2\cellx532
+\clvertalt\clcbpat2\cellx7910
+\nestrow}{\nonesttables\par}}
+\pard\intbl\itap2\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\intbl\itap2
+{{\*\nesttableprops\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clcbpat2\cellx580
+\clvertalt\clcbpat2\cellx8610
+\nestrow}{\nonesttables\par}}
+\pard\intbl\itap2\ssparaaux0\s0{\pntext\pard\plain\f4\fs20 \'b7\tab}{\*\pn\pnlvlblt\ls1\ilvl0\pnhang\pnf0{\pntxtb \'b7}}\ls1\ilvl0\fi-180\li360\sb40\qr\plain\f0\fs20\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\nestcell{\nonesttables\par}
+\pard\intbl\itap2\ssparaaux0\s0\ql\plain\f0\fs20{\*\bkmkstart Pkg_Element_ElemScenario_Scenario_Structured_Begin}{\*\bkmkend Pkg_Element_ElemScenario_Scenario_Structured_Begin}\plain\f6\fs16\cs2\lang4105\hich\f6\dbch\f6\loch\f6\cf1\highlight3\cb3\chcbpat3\ulc1\fs16\b\protect\loch structured scenarios {\*\bkmkstart Pkg_Element_ElemScenario_Scenario_Structured_Begin_Inner}{\*\bkmkend Pkg_Element_ElemScenario_Scenario_Structured_Begin_Inner}\loch >\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\par
+\par
+\plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\b\protect\loch 2\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\b\loch .\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\loch \plain\f5\fs20\lang3081\hich\f5\dbch\f5\loch\f5\cf1\ulc1\fs20\protect\loch system returns data\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\par
+\pard\intbl\itap2\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\par
+\pard\intbl\itap3\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\ul\i\loch Rules \loch Referenced:\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\pard\intbl\itap3\ssparaaux0\s0\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\intbl\itap3
+{{\*\nesttableprops\trowd\trgaph60\trleft0
+\clvertalt\clvmgf\clcbpat2\cellx1736
+\clvertalt\clcbpat2\cellx7910
+\nestrow}{\nonesttables\par}}
+\pard\intbl\itap3\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\ul\i\loch Exc\loch epti\loch ons:\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\loch \nestcell{\nonesttables\par}
+\pard\intbl\itap3\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\nestcell{\nonesttables\par}
+\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\intbl\itap3
+{{\*\nesttableprops\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmrg\clcbpat2\cellx532
+\clvertalt\clcbpat2\cellx7910
+\nestrow}{\nonesttables\par}}
+\pard\intbl\itap2\ssparaaux0\s0\tx720\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\b\i\nestcell{\nonesttables\par}
+\intbl\itap2
+{{\*\nesttableprops\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clcbpat2\cellx580
+\clvertalt\clcbpat2\cellx8610
+\nestrow}{\nonesttables\par}}
+\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmrg\cellx630
+\clvertalt\clvmgf\cellx9360
+\pard\intbl\ssparaaux0\s0\ql\plain\f0\fs20\plain\f7\fs20\cell
+\plain\f7\fs20\lang4105\hich\f7\dbch\f7\loch\f7\cf1\ulc1\fs20\intbl\row
+\trowd\trgaph60\trleft0\trrh676
+\clvertalt\clvmrg\cellx630
+\clvertalt\clvmrg\cellx9360
+\pard\intbl\ssparaaux0\s0{\pntext\pard\plain\f4\fs20 \'b7\tab}{\*\pn\pnlvlblt\ls1\ilvl0\pnhang\pnf0{\pntxtb \'b7}}\ls1\ilvl0\fi-180\li360\sb40\qr\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\cell
+\pard\intbl\ssparaaux0\s0\ql\plain\f0\fs20\plain\f5\fs20\lang4105\hich\f5\dbch\f5\loch\f5\cf1\fs20\cell
+\intbl\row
+\pard\ssparaaux0\s0\ql\plain\f0\fs20\plain\f3\fs20\lang3081\hich\f3\dbch\f3\loch\f3\cf1\fs20\par
+\plain\f7\fs20\par
+}
\ No newline at end of file
diff --git a/writerfilter/source/dmapper/DomainMapperTableManager.cxx b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
index f5d2a8112ee9..b541d5716ec6 100644
--- a/writerfilter/source/dmapper/DomainMapperTableManager.cxx
+++ b/writerfilter/source/dmapper/DomainMapperTableManager.cxx
@@ -396,6 +396,11 @@ std::shared_ptr< vector<sal_Int32> > DomainMapperTableManager::getCurrentGrid( )
return m_aTableGrid.back( );
}
+bool DomainMapperTableManager::hasCurrentSpans() const
+{
+ return !m_aGridSpans.empty();
+}
+
std::shared_ptr< vector< sal_Int32 > > DomainMapperTableManager::getCurrentSpans( )
{
return m_aGridSpans.back( );
@@ -509,6 +514,8 @@ void DomainMapperTableManager::endOfCellAction()
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list