diff options
Diffstat (limited to 'sc')
40 files changed, 5395 insertions, 204 deletions
diff --git a/sc/README.md b/sc/README.md index 741d7ec5cd02..0bcdf7b2180a 100644 --- a/sc/README.md +++ b/sc/README.md @@ -62,6 +62,7 @@ https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part4-formula/OpenDocume * HSTACK * VSTACK * TAKE + * TEXTSPLIT * TOCOL * TOROW * WRAPCOLS diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index 50e0f09b9e28..da809f291e90 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -1212,7 +1212,9 @@ public: * Call this if you are not sure whether to put this as an edit text or a * simple text. */ - SC_DLLPUBLIC void SetTextCell( const ScAddress& rPos, const OUString& rStr ); + SC_DLLPUBLIC void SetTextCell(const ScAddress& rPos, const OUString& rStr, + const ScSetStringParam* pParam = nullptr); + void SetEmptyCell( const ScAddress& rPos ); SC_DLLPUBLIC void SetValue( SCCOL nCol, SCROW nRow, SCTAB nTab, const double& rVal ); SC_DLLPUBLIC void SetValue( const ScAddress& rPos, double fVal ); diff --git a/sc/inc/helpids.h b/sc/inc/helpids.h index 8aaf758181ef..c00124ba3729 100644 --- a/sc/inc/helpids.h +++ b/sc/inc/helpids.h @@ -470,7 +470,7 @@ inline constexpr OUString HID_FUNC_GLAETTEN = u"SC_HID_FUNC_GLAETTEN"_ustr; inline constexpr OUString HID_FUNC_GROSS2 = u"SC_HID_FUNC_GROSS2"_ustr; inline constexpr OUString HID_FUNC_GROSS = u"SC_HID_FUNC_GROSS"_ustr; inline constexpr OUString HID_FUNC_KLEIN = u"SC_HID_FUNC_KLEIN"_ustr; -inline constexpr OUString HID_FUNC_WERT = u"SC_HID_FUNC_WERT"_ustr; +inline constexpr OUString HID_FUNC_VALUE = u"SC_HID_FUNC_VALUE"_ustr; inline constexpr OUString HID_FUNC_TEXT = u"SC_HID_FUNC_TEXT"_ustr; inline constexpr OUString HID_FUNC_T = u"SC_HID_FUNC_T"_ustr; inline constexpr OUString HID_FUNC_ERSETZEN = u"SC_HID_FUNC_ERSETZEN"_ustr; @@ -607,6 +607,7 @@ inline constexpr OUString HID_FUNC_EXPAND_MS = u"SC_HID_FUNC_EXPAND_MS"_ustr; inline constexpr OUString HID_FUNC_HSTACK_MS = u"SC_HID_FUNC_HSTACK_MS"_ustr; inline constexpr OUString HID_FUNC_VSTACK_MS = u"SC_HID_FUNC_VSTACK_MS"_ustr; inline constexpr OUString HID_FUNC_TAKE_MS = u"SC_HID_FUNC_TAKE_MS"_ustr; +inline constexpr OUString HID_FUNC_TEXTSPLIT_MS = u"SC_HID_FUNC_TEXTSPLIT_MS"_ustr; inline constexpr OUString HID_FUNC_TOCOL_MS = u"SC_HID_FUNC_TOCOL_MS"_ustr; inline constexpr OUString HID_FUNC_TOROW_MS = u"SC_HID_FUNC_TOROW_MS"_ustr; inline constexpr OUString HID_FUNC_UNIQUE_MS = u"SC_HID_FUNC_UNIQUE_MS"_ustr; diff --git a/sc/inc/scfuncs.hrc b/sc/inc/scfuncs.hrc index e910534b39af..b81cee703397 100644 --- a/sc/inc/scfuncs.hrc +++ b/sc/inc/scfuncs.hrc @@ -4329,6 +4329,24 @@ const TranslateId SC_OPCODE_TAKE_ARY[] = NC_("SC_OPCODE_TAKE", "The number of columns to take. A negative value takes from the end of the array.") }; +// -=*# Resource for function TEXTSPLIT #*=- +const TranslateId SC_OPCODE_TEXTSPLIT_ARY[] = +{ + NC_("SC_OPCODE_TEXTSPLIT", "Splits text by a given delimiter to an array of multiple cells."), + NC_("SC_OPCODE_TEXTSPLIT", "Text"), + NC_("SC_OPCODE_TEXTSPLIT", "The text to split."), + NC_("SC_OPCODE_TEXTSPLIT", "Column Delimiter"), + NC_("SC_OPCODE_TEXTSPLIT", "The text to delimit the columns. Multiple delimiters can be supplied."), + NC_("SC_OPCODE_TEXTSPLIT", "Row Delimiter"), + NC_("SC_OPCODE_TEXTSPLIT", "The text to delimit the rows. Multiple delimiters can be supplied."), + NC_("SC_OPCODE_TEXTSPLIT", "Ignore Empty"), + NC_("SC_OPCODE_TEXTSPLIT", "Set to TRUE to ignore consecutive delimiters otherwise creates an empty cell. The default to FALSE."), + NC_("SC_OPCODE_TEXTSPLIT", "Match mode"), + NC_("SC_OPCODE_TEXTSPLIT", "Set to 1 to perform a case-insensitive match otherwise does a case-sensitive match. The default to 0."), + NC_("SC_OPCODE_TEXTSPLIT", "Pad with"), + NC_("SC_OPCODE_TEXTSPLIT", "The value with which to pad. The default is #N/A.") +}; + // -=*# Resource for function TOCOL #*=- const TranslateId SC_OPCODE_TOCOL_ARY[] = { diff --git a/sc/inc/scmod.hxx b/sc/inc/scmod.hxx index d51e742003c4..5686f8c42d89 100644 --- a/sc/inc/scmod.hxx +++ b/sc/inc/scmod.hxx @@ -134,7 +134,7 @@ public: void AnythingChanged(); // Drag & Drop: - const ScDragData& GetDragData() const; + const ScDragData* GetDragData() const; void SetDragObject( ScTransferObj* pCellObj, ScDrawTransferObj* pDrawObj ); void ResetDragObject(); void SetDragLink( diff --git a/sc/qa/extras/scfunctionlistobj.cxx b/sc/qa/extras/scfunctionlistobj.cxx index 0f7d7cfefe07..0f5acb22db58 100644 --- a/sc/qa/extras/scfunctionlistobj.cxx +++ b/sc/qa/extras/scfunctionlistobj.cxx @@ -77,7 +77,7 @@ public: ScFunctionListObj::ScFunctionListObj() : UnoApiTest(u"/sc/qa/extras/testdocuments"_ustr) , XElementAccess(cppu::UnoType<uno::Sequence<beans::PropertyValue>>::get()) - , XIndexAccess(415) + , XIndexAccess(416) , XNameAccess(u"IF"_ustr) , XServiceInfo(u"stardiv.StarCalc.ScFunctionListObj"_ustr, u"com.sun.star.sheet.FunctionDescriptions"_ustr) diff --git a/sc/qa/unit/data/functions/spreadsheet/fods/textsplit.fods b/sc/qa/unit/data/functions/spreadsheet/fods/textsplit.fods new file mode 100644 index 000000000000..9978c1e2fc97 --- /dev/null +++ b/sc/qa/unit/data/functions/spreadsheet/fods/textsplit.fods @@ -0,0 +1,4579 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<office:document xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" office:version="1.4" office:mimetype="application/vnd.oasis.opendocument.spreadsheet"> + <office:meta><meta:creation-date>2024-01-16T18:30:06.278000000</meta:creation-date><meta:editing-duration>PT12H31M1S</meta:editing-duration><meta:editing-cycles>158</meta:editing-cycles><meta:generator>LibreOfficeDev/25.8.0.0.alpha0$Linux_X86_64 LibreOffice_project/dd6ae9d789e56d9f0dfb4370421fd38665a49163</meta:generator><dc:date>2025-05-08T20:33:10.636105478</dc:date><meta:document-statistic meta:table-count="2" meta:cell-count="312" meta:object-count="0"/></office:meta> + <office:scripts> + <office:script script:language="ooo:Basic"> + <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"> + <ooo:library-embedded ooo:name="Standard"/> + </ooo:libraries> + </office:script> + </office:scripts> + <office:font-face-decls> + <style:font-face style:name="Calibri" svg:font-family="Calibri" style:font-family-generic="swiss"/> + <style:font-face style:name="FreeSans" svg:font-family="FreeSans" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-pitch="variable"/> + <style:font-face style:name="Liberation Sans1" svg:font-family="'Liberation Sans'" style:font-family-generic="swiss"/> + <style:font-face style:name="Liberation Sans2" svg:font-family="'Liberation Sans'"/> + <style:font-face style:name="Noto Sans" svg:font-family="'Noto Sans'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="Noto Sans CJK SC" svg:font-family="'Noto Sans CJK SC'" style:font-family-generic="system" style:font-pitch="variable"/> + <style:font-face style:name="WenQuanYi Micro Hei" svg:font-family="'WenQuanYi Micro Hei'" style:font-family-generic="system" style:font-pitch="variable"/> + </office:font-face-decls> + <office:styles> + <style:default-style style:family="table-cell"> + <style:paragraph-properties style:tab-stop-distance="1.27cm"/> + <style:text-properties style:font-name="Liberation Sans" fo:font-size="10pt" fo:language="en" fo:country="US" style:font-name-asian="WenQuanYi Micro Hei" style:font-size-asian="10pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="FreeSans" style:font-size-complex="10pt" style:language-complex="hi" style:country-complex="IN"/> + </style:default-style> + <style:default-style style:family="graphic"> + <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" style:writing-mode="page"/> + <style:paragraph-properties style:text-autospace="ideograph-alpha" style:punctuation-wrap="simple" style:line-break="strict" loext:tab-stop-distance="0cm" style:writing-mode="page" style:font-independent-line-spacing="false"> + <style:tab-stops/> + </style:paragraph-properties> + <style:text-properties style:use-window-font-color="true" loext:opacity="0%" fo:font-family="'Liberation Serif'" style:font-family-generic="roman" style:font-pitch="variable" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-family-asian="'Segoe UI'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="12pt" style:language-asian="zh" style:country-asian="CN" style:font-family-complex="Tahoma" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/> + </style:default-style> + <style:style style:name="Default" style:family="graphic"/> + <style:style style:name="Note" style:family="graphic" style:parent-style-name="Default"> + <style:graphic-properties draw:stroke="solid" draw:marker-start="Arrowheads_20_1" draw:marker-start-width="0.2cm" draw:marker-start-center="false" draw:fill="solid" draw:fill-color="#ffffc0" draw:auto-grow-height="true" draw:auto-grow-width="false" fo:padding-top="0.1cm" fo:padding-bottom="0.1cm" fo:padding-left="0.1cm" fo:padding-right="0.1cm" draw:shadow="visible" draw:shadow-offset-x="0.1cm" draw:shadow-offset-y="0.1cm"/> + <style:text-properties style:font-name="Liberation Sans" fo:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="10pt" style:font-name-asian="WenQuanYi Micro Hei" style:font-family-asian="'WenQuanYi Micro Hei'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="10pt" style:font-name-complex="FreeSans" style:font-family-complex="FreeSans" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="10pt"/> + </style:style> + <number:number-style style:name="N0"> + <number:number number:min-integer-digits="1"/> + </number:number-style> + <number:currency-style style:name="N111P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="es" number:country="ES">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N111"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="es" number:country="ES">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N111P0"/> + </number:currency-style> + <number:currency-style style:name="N114P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N114"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N114P0"/> + </number:currency-style> + <number:number-style style:name="N116P0" style:volatile="true"> + <number:text>\</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N116"> + <style:text-properties fo:color="#ff0000"/> + <number:text>\-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N116P0"/> + </number:number-style> + <number:percentage-style style:name="N117"> + <number:number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:number-style style:name="N121P0" style:volatile="true"> + <number:text> \</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N121P1" style:volatile="true"> + <number:text> \</number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N121P2" style:volatile="true"> + <number:text> \</number:text> + <number:fill-character> </number:fill-character> + <number:text>- </number:text> + </number:number-style> + <number:text-style style:name="N121"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N121P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N121P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N121P2"/> + </number:text-style> + <number:currency-style style:name="N123P0" style:volatile="true"> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N123"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N123P0"/> + </number:currency-style> + <number:number-style style:name="N124"> + <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N128P0" style:volatile="true"> + <number:text> $</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N128P1" style:volatile="true"> + <number:text> $</number:text> + <number:fill-character> </number:fill-character> + <number:text>(</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:number-style> + <number:number-style style:name="N128P2" style:volatile="true"> + <number:text> $</number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:number-style> + <number:text-style style:name="N128"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N128P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N128P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N128P2"/> + </number:text-style> + <number:date-style style:name="N129"> + <number:day number:style="long"/> + <number:text>.</number:text> + <number:month number:style="long"/> + <number:text>.</number:text> + <number:year number:style="long"/> + </number:date-style> + <number:number-style style:name="N130"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N131P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N131"> + <number:text>(</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N131P0"/> + </number:number-style> + <number:currency-style style:name="N133P0" style:volatile="true"> + <number:currency-symbol number:language="nl" number:country="NL">€</number:currency-symbol> + <number:text> </number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N133"> + <number:currency-symbol number:language="nl" number:country="NL">€</number:currency-symbol> + <number:text> -</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N133P0"/> + </number:currency-style> + <number:number-style style:name="N135P0" style:volatile="true"> + <number:text>$</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N135"> + <number:text>($</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N135P0"/> + </number:number-style> + <number:number-style style:name="N136"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N139P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N139P1" style:volatile="true"> + <number:text> (</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:number-style> + <number:number-style style:name="N139P2" style:volatile="true"> + <number:text> - </number:text> + </number:number-style> + <number:text-style style:name="N139"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N139P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N139P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N139P2"/> + </number:text-style> + <number:date-style style:name="N140"> + <number:text>⌀ </number:text> + <number:year number:style="long"/> + </number:date-style> + <number:number-style style:name="N144P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> € </number:text> + </number:number-style> + <number:number-style style:name="N144P1" style:volatile="true"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> € </number:text> + </number:number-style> + <number:number-style style:name="N144P2" style:volatile="true"> + <number:text> - € </number:text> + </number:number-style> + <number:text-style style:name="N144"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N144P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N144P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N144P2"/> + </number:text-style> + <number:number-style style:name="N145"> + <number:number number:decimal-places="17" number:min-decimal-places="17" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N146"> + <number:scientific-number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1" number:min-exponent-digits="3" number:exponent-interval="1" number:forced-exponent-sign="true"/> + </number:number-style> + <number:currency-style style:name="N147P0" style:volatile="true"> + <number:currency-symbol number:language="nl" number:country="NL">€</number:currency-symbol> + <number:text> </number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N147"> + <style:text-properties fo:color="#ff0000"/> + <number:currency-symbol number:language="nl" number:country="NL">€</number:currency-symbol> + <number:text> </number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>-</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N147P0"/> + </number:currency-style> + <number:date-style style:name="N148"> + <number:month number:style="long"/> + <number:text>-</number:text> + <number:day number:style="long"/> + <number:text>-</number:text> + <number:year number:style="long"/> + </number:date-style> + <number:currency-style style:name="N150P0" style:volatile="true"> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N150"> + <number:text>-</number:text> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N150P0"/> + </number:currency-style> + <number:date-style style:name="N151"> + <number:day number:style="long"/> + <number:text>-</number:text> + <number:month number:style="long"/> + </number:date-style> + <number:number-style style:name="N152"> + <number:number number:decimal-places="9" number:min-decimal-places="9" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N153"> + <number:number number:decimal-places="15" number:min-decimal-places="15" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N157P0" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N157P1" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N157P2" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:number-style> + <number:text-style style:name="N157"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N157P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N157P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N157P2"/> + </number:text-style> + <number:currency-style style:name="N159P0" style:volatile="true"> + <number:currency-symbol>€</number:currency-symbol> + <number:text> </number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:currency-style> + <number:currency-style style:name="N159"> + <style:text-properties fo:color="#ff0000"/> + <number:text>(</number:text> + <number:currency-symbol>€</number:currency-symbol> + <number:text> </number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N159P0"/> + </number:currency-style> + <number:number-style style:name="N160"> + <number:number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N161"> + <number:number number:decimal-places="5" number:min-decimal-places="5" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N162"> + <number:text>$</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N163P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N163"> + <number:text>(</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N163P0"/> + </number:number-style> + <number:currency-style style:name="N165P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N165"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N165P0"/> + </number:currency-style> + <number:currency-style style:name="N167P0" style:volatile="true"> + <number:currency-symbol number:language="es" number:country="MX">$</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N167"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:currency-symbol number:language="es" number:country="MX">$</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N167P0"/> + </number:currency-style> + <number:number-style style:name="N171P0" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N171P1" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N171P2" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>- </number:text> + </number:number-style> + <number:text-style style:name="N171"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N171P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N171P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N171P2"/> + </number:text-style> + <number:currency-style style:name="N173P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="0" number:decimal-replacement="--" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N173"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="0" number:decimal-replacement="--" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N173P0"/> + </number:currency-style> + <number:number-style style:name="N175P0" style:volatile="true"> + <number:text>Yes</number:text> + </number:number-style> + <number:number-style style:name="N175P1" style:volatile="true"> + <number:text>Yes</number:text> + </number:number-style> + <number:number-style style:name="N175"> + <number:text>No</number:text> + <style:map style:condition="value()>0" style:apply-style-name="N175P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N175P1"/> + </number:number-style> + <number:number-style style:name="N176"> + <number:number number:decimal-places="12" number:min-decimal-places="12" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N177"> + <number:number number:decimal-places="6" number:min-decimal-places="6" number:min-integer-digits="1"/> + </number:number-style> + <number:currency-style style:name="N179P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol>EUR</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N179"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol>EUR</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N179P0"/> + </number:currency-style> + <number:number-style style:name="N181P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N181"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N181P0"/> + </number:number-style> + <number:number-style style:name="N183P0" style:volatile="true"> + <number:text>\</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N183"> + <number:text>\-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N183P0"/> + </number:number-style> + <number:number-style style:name="N187P0" style:volatile="true"> + <number:text> \</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N187P1" style:volatile="true"> + <number:text> \</number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N187P2" style:volatile="true"> + <number:text> \</number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:number-style> + <number:text-style style:name="N187"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N187P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N187P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N187P2"/> + </number:text-style> + <number:number-style style:name="N188"> + <number:number number:decimal-places="18" number:min-decimal-places="18" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N189"> + <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N190"> + <number:scientific-number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="3" number:min-exponent-digits="1" number:exponent-interval="3" number:forced-exponent-sign="true"/> + </number:number-style> + <number:number-style style:name="N192P0" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N192P1" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>(</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:number-style> + <number:number-style style:name="N192P2" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>- </number:text> + </number:number-style> + <number:text-style style:name="N192"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N192P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N192P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N192P2"/> + </number:text-style> + <number:currency-style style:name="N193P0" style:volatile="true"> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N193"> + <number:text>-</number:text> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N193P0"/> + </number:currency-style> + <number:number-style style:name="N194"> + <number:scientific-number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1" number:min-exponent-digits="1" number:exponent-interval="1" number:forced-exponent-sign="true"/> + </number:number-style> + <number:number-style style:name="N195"> + <number:scientific-number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1" number:min-exponent-digits="1" number:exponent-interval="3" number:forced-exponent-sign="true"/> + </number:number-style> + <number:currency-style style:name="N197P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol>EUR</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N197"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol>EUR</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N197P0"/> + </number:currency-style> + <number:number-style style:name="N198P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N198"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N198P0"/> + </number:number-style> + <number:date-style style:name="N199"> + <number:month number:style="long"/> + <number:text>-</number:text> + <number:day/> + <number:text>-</number:text> + <number:year/> + </number:date-style> + <number:number-style style:name="N203P0" style:volatile="true"> + <number:text> $</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N203P1" style:volatile="true"> + <number:text> $</number:text> + <number:fill-character> </number:fill-character> + <number:text>(</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:number-style> + <number:number-style style:name="N203P2" style:volatile="true"> + <number:text> $</number:text> + <number:fill-character> </number:fill-character> + <number:text>- </number:text> + </number:number-style> + <number:text-style style:name="N203"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N203P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N203P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N203P2"/> + </number:text-style> + <number:number-style style:name="N207P0" style:volatile="true"> + <number:text> $</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N207P1" style:volatile="true"> + <number:text> $(</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:number-style> + <number:number-style style:name="N207P2" style:volatile="true"> + <number:text> $- </number:text> + </number:number-style> + <number:text-style style:name="N207"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N207P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N207P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N207P2"/> + </number:text-style> + <number:date-style style:name="N208"> + <number:year number:style="long"/> + </number:date-style> + <number:number-style style:name="N209"> + <number:number number:decimal-places="20" number:min-decimal-places="20" number:min-integer-digits="1"/> + </number:number-style> + <number:currency-style style:name="N211P0" style:volatile="true"> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N211"> + <number:text>-</number:text> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N211P0"/> + </number:currency-style> + <number:number-style style:name="N213P0" style:volatile="true"> + <number:text>On</number:text> + </number:number-style> + <number:number-style style:name="N213P1" style:volatile="true"> + <number:text>On</number:text> + </number:number-style> + <number:number-style style:name="N213"> + <number:text>Off</number:text> + <style:map style:condition="value()>0" style:apply-style-name="N213P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N213P1"/> + </number:number-style> + <number:number-style style:name="N215P0" style:volatile="true"> + <number:text>$</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N215"> + <style:text-properties fo:color="#ff0000"/> + <number:text>($</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N215P0"/> + </number:number-style> + <number:number-style style:name="N217P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N217"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N217P0"/> + </number:number-style> + <number:number-style style:name="N218"> + <number:number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N219P0" style:volatile="true"> + <number:text>$</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N219"> + <number:text>($</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N219P0"/> + </number:number-style> + <number:number-style style:name="N220P0" style:volatile="true"> + <number:text>$</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N220"> + <style:text-properties fo:color="#ff0000"/> + <number:text>($</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N220P0"/> + </number:number-style> + <number:number-style style:name="N221"> + <number:number number:decimal-places="8" number:min-decimal-places="8" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N223P0" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N223P1" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>(</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:number-style> + <number:number-style style:name="N223P2" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:number-style> + <number:text-style style:name="N223"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N223P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N223P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N223P2"/> + </number:text-style> + <number:currency-style style:name="N224P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N224"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N224P0"/> + </number:currency-style> + <number:number-style style:name="N225"> + <number:number number:decimal-places="11" number:min-decimal-places="11" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N227P0" style:volatile="true"> + <number:text>True</number:text> + </number:number-style> + <number:number-style style:name="N227P1" style:volatile="true"> + <number:text>True</number:text> + </number:number-style> + <number:number-style style:name="N227"> + <number:text>False</number:text> + <style:map style:condition="value()>0" style:apply-style-name="N227P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N227P1"/> + </number:number-style> + <number:number-style style:name="N231P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> € </number:text> + </number:number-style> + <number:number-style style:name="N231P1" style:volatile="true"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> € </number:text> + </number:number-style> + <number:number-style style:name="N231P2" style:volatile="true"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> € </number:text> + </number:number-style> + <number:text-style style:name="N231"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N231P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N231P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N231P2"/> + </number:text-style> + <number:number-style style:name="N232"> + <number:number number:decimal-places="7" number:min-decimal-places="7" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N236P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N236P1" style:volatile="true"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N236P2" style:volatile="true"> + <number:text> - </number:text> + </number:number-style> + <number:text-style style:name="N236"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N236P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N236P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N236P2"/> + </number:text-style> + <number:date-style style:name="N237"> + <number:month number:style="long"/> + <number:text>/</number:text> + <number:year number:style="long"/> + </number:date-style> + <number:currency-style style:name="N238P0" style:volatile="true"> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N238"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N238P0"/> + </number:currency-style> + <number:currency-style style:name="N240P0" style:volatile="true"> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="0" number:decimal-replacement="--" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N240"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="0" number:decimal-replacement="--" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N240P0"/> + </number:currency-style> + <number:number-style style:name="N244P0" style:volatile="true"> + <number:text> $</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N244P1" style:volatile="true"> + <number:text> $(</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:number-style> + <number:number-style style:name="N244P2" style:volatile="true"> + <number:text> $-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:number-style> + <number:text-style style:name="N244"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N244P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N244P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N244P2"/> + </number:text-style> + <number:number-style style:name="N248P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N248P1" style:volatile="true"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N248P2" style:volatile="true"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:number-style> + <number:text-style style:name="N248"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N248P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N248P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N248P2"/> + </number:text-style> + <number:number-style style:name="N250P0" style:volatile="true"> + <number:text>WAHR</number:text> + </number:number-style> + <number:number-style style:name="N250P1" style:volatile="true"> + <number:text>WAHR</number:text> + </number:number-style> + <number:number-style style:name="N250"> + <number:text>FALSCH</number:text> + <style:map style:condition="value()>0" style:apply-style-name="N250P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N250P1"/> + </number:number-style> + <number:date-style style:name="N251"> + <number:month number:style="long"/> + <number:text>.</number:text> + <number:year number:style="long"/> + </number:date-style> + <number:currency-style style:name="N253P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="fr" number:country="FR">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N253"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="fr" number:country="FR">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N253P0"/> + </number:currency-style> + <number:currency-style style:name="N255P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N255"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N255P0"/> + </number:currency-style> + <number:number-style style:name="N256"> + <number:number number:decimal-places="16" number:min-decimal-places="16" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N259P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N259P1" style:volatile="true"> + <number:text> (</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:number-style> + <number:number-style style:name="N259P2" style:volatile="true"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:number-style> + <number:text-style style:name="N259"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N259P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N259P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N259P2"/> + </number:text-style> + <number:time-style style:name="N260"> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long" number:decimal-places="1"/> + </number:time-style> + <number:time-style style:name="N261"> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + </number:time-style> + <number:currency-style style:name="N263P0" style:volatile="true"> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N263"> + <number:text>-</number:text> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N263P0"/> + </number:currency-style> + <number:number-style style:name="N264P0" style:volatile="true"> + <number:text>\</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N264"> + <style:text-properties fo:color="#ff0000"/> + <number:text>\-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N264P0"/> + </number:number-style> + <number:currency-style style:name="N266P0" style:volatile="true"> + <number:currency-symbol number:language="nl" number:country="NL">€</number:currency-symbol> + <number:text> </number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N266"> + <number:currency-symbol number:language="nl" number:country="NL">€</number:currency-symbol> + <number:text> -</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N266P0"/> + </number:currency-style> + <number:currency-style style:name="N268P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N268"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N268P0"/> + </number:currency-style> + <number:number-style style:name="N269"> + <number:number number:decimal-places="10" number:min-decimal-places="10" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N270"> + <number:number number:decimal-places="13" number:min-decimal-places="13" number:min-integer-digits="1"/> + </number:number-style> + <number:number-style style:name="N271P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N271"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N271P0"/> + </number:number-style> + <number:currency-style style:name="N272P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N272"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N272P0"/> + </number:currency-style> + <number:time-style style:name="N273" number:truncate-on-overflow="false"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + </number:time-style> + <number:number-style style:name="N274P0" style:volatile="true"> + <number:text>\</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N274"> + <number:text>\-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N274P0"/> + </number:number-style> + <number:number-style style:name="N276P0" style:volatile="true"> + <number:text/> + </number:number-style> + <number:currency-style style:name="N276"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="fr" number:country="FR">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N276P0"/> + </number:currency-style> + <number:date-style style:name="N277"> + <number:day-of-week/> + <number:text> </number:text> + <number:day number:style="long"/> + <number:text>/</number:text> + <number:month number:style="long"/> + <number:text>/</number:text> + <number:year/> + </number:date-style> + <number:date-style style:name="N278"> + <number:day-of-week number:style="long"/> + <number:text> </number:text> + <number:day number:style="long"/> + <number:text>/</number:text> + <number:month number:style="long"/> + <number:text>/</number:text> + <number:year/> + </number:date-style> + <number:currency-style style:name="N280P0" style:volatile="true"> + <number:currency-symbol number:language="de" number:country="AT">€</number:currency-symbol> + <number:text> </number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N280"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:currency-symbol number:language="de" number:country="AT">€</number:currency-symbol> + <number:text> </number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N280P0"/> + </number:currency-style> + <number:number-style style:name="N282P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč</number:text> + </number:number-style> + <number:number-style style:name="N282"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N282P0"/> + </number:number-style> + <number:number-style style:name="N283P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč</number:text> + </number:number-style> + <number:number-style style:name="N283"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N283P0"/> + </number:number-style> + <number:number-style style:name="N285P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč</number:text> + </number:number-style> + <number:number-style style:name="N285"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N285P0"/> + </number:number-style> + <number:number-style style:name="N286P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč</number:text> + </number:number-style> + <number:number-style style:name="N286"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N286P0"/> + </number:number-style> + <number:number-style style:name="N287P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N287"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N287P0"/> + </number:number-style> + <number:number-style style:name="N288P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N288"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N288P0"/> + </number:number-style> + <number:number-style style:name="N289P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N289"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N289P0"/> + </number:number-style> + <number:number-style style:name="N290P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N290"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N290P0"/> + </number:number-style> + <number:number-style style:name="N294P0" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N294P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N294P2" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>- </number:text> + </number:number-style> + <number:text-style style:name="N294"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N294P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N294P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N294P2"/> + </number:text-style> + <number:number-style style:name="N298P0" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč </number:text> + </number:number-style> + <number:number-style style:name="N298P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč </number:text> + </number:number-style> + <number:number-style style:name="N298P2" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>- Kč </number:text> + </number:number-style> + <number:text-style style:name="N298"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N298P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N298P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N298P2"/> + </number:text-style> + <number:number-style style:name="N302P0" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N302P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N302P2" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:number-style> + <number:text-style style:name="N302"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N302P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N302P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N302P2"/> + </number:text-style> + <number:number-style style:name="N306P0" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč </number:text> + </number:number-style> + <number:number-style style:name="N306P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Kč </number:text> + </number:number-style> + <number:number-style style:name="N306P2" style:volatile="true"> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> Kč </number:text> + </number:number-style> + <number:text-style style:name="N306"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N306P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N306P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N306P2"/> + </number:text-style> + <number:currency-style style:name="N308P0" style:volatile="true"> + <number:currency-symbol number:language="cs" number:country="CZ">¥€</number:currency-symbol> + <number:text> </number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="3"> + <number:embedded-text number:position="5"> </number:embedded-text> + </number:number> + <number:text> </number:text> + </number:currency-style> + <number:currency-style style:name="N308"> + <style:text-properties fo:color="#ff0000"/> + <number:text>(</number:text> + <number:currency-symbol number:language="cs" number:country="CZ">€</number:currency-symbol> + <number:text> </number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="3"> + <number:embedded-text number:position="5"> </number:embedded-text> + </number:number> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N308P0"/> + </number:currency-style> + <number:number-style style:name="N310P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N310"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N310P0"/> + </number:number-style> + <number:number-style style:name="N311P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N311"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N311P0"/> + </number:number-style> + <number:number-style style:name="N313P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N313"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N313P0"/> + </number:number-style> + <number:number-style style:name="N314P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N314"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N314P0"/> + </number:number-style> + <number:percentage-style style:name="N315"> + <number:number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N316"> + <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N317"> + <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N318"> + <number:number number:decimal-places="5" number:min-decimal-places="5" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N319"> + <number:number number:decimal-places="6" number:min-decimal-places="6" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N320"> + <number:number number:decimal-places="7" number:min-decimal-places="7" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N321"> + <number:number number:decimal-places="8" number:min-decimal-places="8" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N322"> + <number:number number:decimal-places="9" number:min-decimal-places="9" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N323"> + <number:number number:decimal-places="10" number:min-decimal-places="10" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:currency-style style:name="N325P0" style:volatile="true"> + <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N325"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N325P0"/> + </number:currency-style> + <number:currency-style style:name="N327P0" style:volatile="true"> + <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N327"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N327P0"/> + </number:currency-style> + <number:currency-style style:name="N329P0" style:volatile="true"> + <number:number number:decimal-places="5" number:min-decimal-places="5" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N329"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="5" number:min-decimal-places="5" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N329P0"/> + </number:currency-style> + <number:currency-style style:name="N331P0" style:volatile="true"> + <number:number number:decimal-places="6" number:min-decimal-places="6" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N331"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="6" number:min-decimal-places="6" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N331P0"/> + </number:currency-style> + <number:currency-style style:name="N333P0" style:volatile="true"> + <number:number number:decimal-places="7" number:min-decimal-places="7" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N333"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="7" number:min-decimal-places="7" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N333P0"/> + </number:currency-style> + <number:currency-style style:name="N335P0" style:volatile="true"> + <number:number number:decimal-places="8" number:min-decimal-places="8" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N335"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="8" number:min-decimal-places="8" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N335P0"/> + </number:currency-style> + <number:currency-style style:name="N337P0" style:volatile="true"> + <number:number number:decimal-places="9" number:min-decimal-places="9" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N337"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="9" number:min-decimal-places="9" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N337P0"/> + </number:currency-style> + <number:currency-style style:name="N339P0" style:volatile="true"> + <number:number number:decimal-places="10" number:min-decimal-places="10" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N339"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="10" number:min-decimal-places="10" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N339P0"/> + </number:currency-style> + <number:currency-style style:name="N341P0" style:volatile="true"> + <number:number number:decimal-places="11" number:min-decimal-places="11" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N341"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="11" number:min-decimal-places="11" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N341P0"/> + </number:currency-style> + <number:currency-style style:name="N343P0" style:volatile="true"> + <number:number number:decimal-places="12" number:min-decimal-places="12" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N343"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="12" number:min-decimal-places="12" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N343P0"/> + </number:currency-style> + <number:currency-style style:name="N345P0" style:volatile="true"> + <number:number number:decimal-places="13" number:min-decimal-places="13" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N345"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="13" number:min-decimal-places="13" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N345P0"/> + </number:currency-style> + <number:currency-style style:name="N347P0" style:volatile="true"> + <number:number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N347"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N347P0"/> + </number:currency-style> + <number:currency-style style:name="N349P0" style:volatile="true"> + <number:number number:decimal-places="15" number:min-decimal-places="15" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N349"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="15" number:min-decimal-places="15" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N349P0"/> + </number:currency-style> + <number:currency-style style:name="N351P0" style:volatile="true"> + <number:number number:decimal-places="16" number:min-decimal-places="16" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N351"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="16" number:min-decimal-places="16" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N351P0"/> + </number:currency-style> + <number:currency-style style:name="N353P0" style:volatile="true"> + <number:number number:decimal-places="17" number:min-decimal-places="17" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + </number:currency-style> + <number:currency-style style:name="N353"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="17" number:min-decimal-places="17" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <number:currency-symbol number:language="de" number:country="DE">€</number:currency-symbol> + <style:map style:condition="value()>=0" style:apply-style-name="N353P0"/> + </number:currency-style> + <number:percentage-style style:name="N354"> + <number:number number:decimal-places="15" number:min-decimal-places="15" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N355"> + <number:number number:decimal-places="16" number:min-decimal-places="16" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N356"> + <number:number number:decimal-places="17" number:min-decimal-places="17" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N357"> + <number:number number:decimal-places="18" number:min-decimal-places="18" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N358"> + <number:number number:decimal-places="19" number:min-decimal-places="19" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N359"> + <number:number number:decimal-places="20" number:min-decimal-places="20" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:number-style style:name="N360"> + <number:number number:decimal-places="19" number:min-decimal-places="19" number:min-integer-digits="1"/> + </number:number-style> + <number:currency-style style:name="N362P0" style:volatile="true"> + <number:currency-symbol number:language="en" number:country="US">$</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N362"> + <style:text-properties fo:color="#ff0000"/> + <number:text>(</number:text> + <number:currency-symbol number:language="en" number:country="US">$</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N362P0"/> + </number:currency-style> + <number:percentage-style style:name="N363" number:title="User-defined"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N365P0" style:volatile="true"> + <number:number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1" number:grouping="true"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N365"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1" number:grouping="true"/> + <number:text>%</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N365P0"/> + </number:percentage-style> + <number:number-style style:name="N366P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="0" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N366"> + <style:text-properties fo:color="#000000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="0" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N366P0"/> + </number:number-style> + <number:date-style style:name="N367"> + <number:day/> + <number:text>-</number:text> + <number:month number:textual="true"/> + <number:text>-</number:text> + <number:year/> + </number:date-style> + <number:currency-style style:name="N369P0" style:volatile="true"> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N369"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N369P0"/> + </number:currency-style> + <number:currency-style style:name="N371P0" style:volatile="true"> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N371"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:currency-symbol number:language="en" number:country="GB">£</number:currency-symbol> + <number:number number:decimal-places="4" number:min-decimal-places="4" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N371P0"/> + </number:currency-style> + <number:percentage-style style:name="N373P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:percentage-style style:name="N373"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1"/> + <number:text>%</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N373P0"/> + </number:percentage-style> + <number:number-style style:name="N375P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM</number:text> + </number:number-style> + <number:number-style style:name="N375"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N375P0"/> + </number:number-style> + <number:number-style style:name="N376P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM</number:text> + </number:number-style> + <number:number-style style:name="N376"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N376P0"/> + </number:number-style> + <number:number-style style:name="N378P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM</number:text> + </number:number-style> + <number:number-style style:name="N378"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N378P0"/> + </number:number-style> + <number:number-style style:name="N379P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM</number:text> + </number:number-style> + <number:number-style style:name="N379"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N379P0"/> + </number:number-style> + <number:number-style style:name="N383P0" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N383P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N383P2" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:text>- </number:text> + </number:number-style> + <number:text-style style:name="N383"> + <number:text> </number:text> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N383P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N383P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N383P2"/> + </number:text-style> + <number:number-style style:name="N387P0" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM </number:text> + </number:number-style> + <number:number-style style:name="N387P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM </number:text> + </number:number-style> + <number:number-style style:name="N387P2" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:text>- DM </number:text> + </number:number-style> + <number:text-style style:name="N387"> + <number:text> </number:text> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N387P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N387P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N387P2"/> + </number:text-style> + <number:number-style style:name="N391P0" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N391P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N391P2" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:number-style> + <number:text-style style:name="N391"> + <number:text> </number:text> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N391P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N391P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N391P2"/> + </number:text-style> + <number:number-style style:name="N395P0" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM </number:text> + </number:number-style> + <number:number-style style:name="N395P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> DM </number:text> + </number:number-style> + <number:number-style style:name="N395P2" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> DM </number:text> + </number:number-style> + <number:text-style style:name="N395"> + <number:text> </number:text> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N395P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N395P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N395P2"/> + </number:text-style> + <number:text-style style:name="N396"> + <number:text>Ouch! - </number:text> + <number:text-content/> + <number:text> - Error detected!</number:text> + </number:text-style> + <number:text-style style:name="N397"> + <number:text-content/> + <number:text> - Result=0 - No Errordetection</number:text> + </number:text-style> + <number:date-style style:name="N398"> + <number:day/> + <number:text>/</number:text> + <number:month/> + <number:text>/</number:text> + <number:year/> + </number:date-style> + <number:date-style style:name="N399"> + <number:day/> + <number:text>. </number:text> + <number:month/> + <number:text>. </number:text> + <number:year number:style="long"/> + </number:date-style> + <number:number-style style:name="N403P0" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N403P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N403P2" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:text>- </number:text> + </number:number-style> + <number:text-style style:name="N403"> + <number:text> </number:text> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N403P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N403P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N403P2"/> + </number:text-style> + <number:number-style style:name="N407P0" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> € </number:text> + </number:number-style> + <number:number-style style:name="N407P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> € </number:text> + </number:number-style> + <number:number-style style:name="N407P2" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:text>- € </number:text> + </number:number-style> + <number:text-style style:name="N407"> + <number:text> </number:text> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N407P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N407P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N407P2"/> + </number:text-style> + <number:number-style style:name="N411P0" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N411P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N411P2" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:number-style> + <number:text-style style:name="N411"> + <number:text> </number:text> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N411P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N411P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N411P2"/> + </number:text-style> + <number:number-style style:name="N415P0" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> € </number:text> + </number:number-style> + <number:number-style style:name="N415P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> € </number:text> + </number:number-style> + <number:number-style style:name="N415P2" style:volatile="true"> + <number:text> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> € </number:text> + </number:number-style> + <number:text-style style:name="N415"> + <number:text> </number:text> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N415P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N415P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N415P2"/> + </number:text-style> + <number:currency-style style:name="N416"> + <number:currency-symbol number:language="en" number:country="AU">$</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N417P0" style:volatile="true"> + <number:currency-symbol number:language="en" number:country="AU">$</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:currency-style> + <number:currency-style style:name="N417"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:currency-symbol number:language="en" number:country="AU">$</number:currency-symbol> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N417P0"/> + </number:currency-style> + <number:date-style style:name="N418"> + <number:day number:style="long"/> + <number:text>.</number:text> + <number:month number:style="long"/> + <number:text>.</number:text> + <number:year/> + </number:date-style> + <number:date-style style:name="N419"> + <number:day number:style="long"/> + <number:text>. </number:text> + <number:month number:textual="true"/> + <number:text> </number:text> + <number:year/> + </number:date-style> + <number:date-style style:name="N420"> + <number:day number:style="long"/> + <number:text>. </number:text> + <number:month number:textual="true"/> + </number:date-style> + <number:date-style style:name="N421"> + <number:month number:textual="true"/> + <number:text> </number:text> + <number:year/> + </number:date-style> + <number:time-style style:name="N422"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text> </number:text> + <number:am-pm/> + </number:time-style> + <number:time-style style:name="N423"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + <number:text> </number:text> + <number:am-pm/> + </number:time-style> + <number:date-style style:name="N424"> + <number:day number:style="long"/> + <number:text>.</number:text> + <number:month number:style="long"/> + <number:text>.</number:text> + <number:year number:style="long"/> + <number:text> </number:text> + <number:hours number:style="long"/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + </number:date-style> + <number:number-style style:name="N425P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N425"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N425P0"/> + </number:number-style> + <number:number-style style:name="N426P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N426"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N426P0"/> + </number:number-style> + <number:number-style style:name="N427P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N427"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N427P0"/> + </number:number-style> + <number:number-style style:name="N428P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N428"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N428P0"/> + </number:number-style> + <number:number-style style:name="N429"> + <number:text>$</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N430P0" style:volatile="true"> + <number:text>$</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N430"> + <number:text>-$</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N430P0"/> + </number:number-style> + <number:number-style style:name="N431P0" style:volatile="true"> + <number:text>$</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N431"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-$</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N431P0"/> + </number:number-style> + <number:number-style style:name="N432P0" style:volatile="true"> + <number:text>$</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N432"> + <number:text>-$</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N432P0"/> + </number:number-style> + <number:number-style style:name="N433P0" style:volatile="true"> + <number:text>$</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N433"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-$</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <style:map style:condition="value()>=0" style:apply-style-name="N433P0"/> + </number:number-style> + <number:number-style style:name="N434"> + <number:text>-$</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N435P0" style:volatile="true"> + <number:text>$</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N435P1" style:volatile="true"> + <number:text>-$</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N435"> + <number:text>$-</number:text> + <style:map style:condition="value()>0" style:apply-style-name="N435P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N435P1"/> + </number:number-style> + <number:number-style style:name="N436"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N437P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N437P1" style:volatile="true"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N437"> + <number:text>-</number:text> + <style:map style:condition="value()>0" style:apply-style-name="N437P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N437P1"/> + </number:number-style> + <number:number-style style:name="N438"> + <number:text>-$</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N439P0" style:volatile="true"> + <number:text>$</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N439P1" style:volatile="true"> + <number:text>-$</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N439"> + <number:text>$-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <style:map style:condition="value()>0" style:apply-style-name="N439P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N439P1"/> + </number:number-style> + <number:number-style style:name="N440"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N441P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N441P1" style:volatile="true"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:number-style style:name="N441"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <style:map style:condition="value()>0" style:apply-style-name="N441P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N441P1"/> + </number:number-style> + <number:number-style style:name="N443P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + </number:number-style> + <number:number-style style:name="N443"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N443P0"/> + </number:number-style> + <number:number-style style:name="N444P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + </number:number-style> + <number:number-style style:name="N444"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N444P0"/> + </number:number-style> + <number:number-style style:name="N446P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + </number:number-style> + <number:number-style style:name="N446"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N446P0"/> + </number:number-style> + <number:number-style style:name="N447P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + </number:number-style> + <number:number-style style:name="N447"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> Ft</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N447P0"/> + </number:number-style> + <number:date-style style:name="N448"> + <number:year number:style="long"/> + <number:text>.</number:text> + <number:month number:style="long"/> + <number:text>.</number:text> + <number:day number:style="long"/> + </number:date-style> + <number:date-style style:name="N449"> + <number:day number:style="long"/> + <number:text>.</number:text> + <number:month number:textual="true"/> + <number:text>.</number:text> + <number:year/> + </number:date-style> + <number:date-style style:name="N450"> + <number:day number:style="long"/> + <number:text>.</number:text> + <number:month number:textual="true"/> + </number:date-style> + <number:date-style style:name="N451"> + <number:month number:textual="true"/> + <number:text>.</number:text> + <number:year/> + </number:date-style> + <number:date-style style:name="N452"> + <number:year number:style="long"/> + <number:text>.</number:text> + <number:month number:style="long"/> + <number:text>.</number:text> + <number:day number:style="long"/> + <number:text> </number:text> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + </number:date-style> + <number:number-style style:name="N454P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + </number:number-style> + <number:number-style style:name="N454"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N454P0"/> + </number:number-style> + <number:number-style style:name="N455P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + </number:number-style> + <number:number-style style:name="N455"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N455P0"/> + </number:number-style> + <number:number-style style:name="N457P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + </number:number-style> + <number:number-style style:name="N457"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N457P0"/> + </number:number-style> + <number:number-style style:name="N458P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + </number:number-style> + <number:number-style style:name="N458"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N458P0"/> + </number:number-style> + <number:number-style style:name="N462P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3_-4"> </number:text> + </number:number-style> + <number:number-style style:name="N462P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3_-4"> </number:text> + </number:number-style> + <number:number-style style:name="N462P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text loext:blank-width-char="F2_t4_-5">- </number:text> + </number:number-style> + <number:text-style style:name="N462"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N462P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N462P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N462P2"/> + </number:text-style> + <number:number-style style:name="N466P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-3"> Ft </number:text> + </number:number-style> + <number:number-style style:name="N466P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-3"> Ft </number:text> + </number:number-style> + <number:number-style style:name="N466P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text loext:blank-width-char="-4">- Ft </number:text> + </number:number-style> + <number:text-style style:name="N466"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N466P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N466P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N466P2"/> + </number:text-style> + <number:number-style style:name="N470P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3_-4"> </number:text> + </number:number-style> + <number:number-style style:name="N470P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="F1_t3_-4"> </number:text> + </number:number-style> + <number:number-style style:name="N470P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="2" loext:max-blank-integer-digits="2"/> + <number:text loext:blank-width-char="F1_t3_-4"> </number:text> + </number:number-style> + <number:text-style style:name="N470"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N470P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N470P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N470P2"/> + </number:text-style> + <number:number-style style:name="N474P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-3"> Ft </number:text> + </number:number-style> + <number:number-style style:name="N474P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-3"> Ft </number:text> + </number:number-style> + <number:number-style style:name="N474P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="2" loext:max-blank-integer-digits="2"/> + <number:text loext:blank-width-char="-3"> Ft </number:text> + </number:number-style> + <number:text-style style:name="N474"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N474P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N474P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N474P2"/> + </number:text-style> + <number:date-style style:name="N475"> + <number:day number:style="long"/> + <number:text>-</number:text> + <number:month number:textual="true"/> + <number:text>-</number:text> + <number:year/> + </number:date-style> + <number:date-style style:name="N476"> + <number:day number:style="long"/> + <number:text>-</number:text> + <number:month number:textual="true"/> + </number:date-style> + <number:date-style style:name="N477"> + <number:month number:textual="true"/> + <number:text>-</number:text> + <number:year/> + </number:date-style> + <number:time-style style:name="N478"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + </number:time-style> + <number:time-style style:name="N479"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + </number:time-style> + <number:date-style style:name="N480"> + <number:day number:style="long"/> + <number:text>/</number:text> + <number:month number:style="long"/> + <number:text>/</number:text> + <number:year number:style="long"/> + <number:text> </number:text> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + </number:date-style> + <number:number-style style:name="N482P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + </number:number-style> + <number:number-style style:name="N482"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N482P0"/> + </number:number-style> + <number:number-style style:name="N483P0" style:volatile="true"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + </number:number-style> + <number:number-style style:name="N483"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N483P0"/> + </number:number-style> + <number:number-style style:name="N485P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + </number:number-style> + <number:number-style style:name="N485"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N485P0"/> + </number:number-style> + <number:number-style style:name="N486P0" style:volatile="true"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + </number:number-style> + <number:number-style style:name="N486"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1"> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N486P0"/> + </number:number-style> + <number:number-style style:name="N490P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1_-3"> </number:text> + </number:number-style> + <number:number-style style:name="N490P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1_-3"> </number:text> + </number:number-style> + <number:number-style style:name="N490P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text loext:blank-width-char="€2_-4">- </number:text> + </number:number-style> + <number:text-style style:name="N490"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N490P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N490P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N490P2"/> + </number:text-style> + <number:number-style style:name="N494P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-2"> € </number:text> + </number:number-style> + <number:number-style style:name="N494P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-2"> € </number:text> + </number:number-style> + <number:number-style style:name="N494P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text loext:blank-width-char="-3">- € </number:text> + </number:number-style> + <number:text-style style:name="N494"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N494P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N494P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N494P2"/> + </number:text-style> + <number:number-style style:name="N498P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1_-3"> </number:text> + </number:number-style> + <number:number-style style:name="N498P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="€1_-3"> </number:text> + </number:number-style> + <number:number-style style:name="N498P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="2" loext:max-blank-integer-digits="2"/> + <number:text loext:blank-width-char="€1_-3"> </number:text> + </number:number-style> + <number:text-style style:name="N498"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N498P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N498P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N498P2"/> + </number:text-style> + <number:number-style style:name="N502P0" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-2"> € </number:text> + </number:number-style> + <number:number-style style:name="N502P1" style:volatile="true"> + <number:text>-</number:text> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text loext:blank-width-char="-2"> € </number:text> + </number:number-style> + <number:number-style style:name="N502P2" style:volatile="true"> + <number:text loext:blank-width-char="-"> </number:text> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="2" loext:max-blank-integer-digits="2"/> + <number:text loext:blank-width-char="-2"> € </number:text> + </number:number-style> + <number:text-style style:name="N502"> + <number:text loext:blank-width-char="-"> </number:text> + <number:text-content/> + <number:text loext:blank-width-char="-"> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N502P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N502P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N502P2"/> + </number:text-style> + <number:date-style style:name="N10129" number:language="en" number:country="US"> + <number:month/> + <number:text>/</number:text> + <number:day/> + <number:text>/</number:text> + <number:year number:style="long"/> + </number:date-style> + <number:date-style style:name="N10130" number:language="en" number:country="US"> + <number:day/> + <number:text>-</number:text> + <number:month number:textual="true"/> + <number:text>-</number:text> + <number:year/> + </number:date-style> + <number:date-style style:name="N10131" number:language="en" number:country="US"> + <number:day/> + <number:text>-</number:text> + <number:month number:textual="true"/> + </number:date-style> + <number:date-style style:name="N10132" number:language="en" number:country="US"> + <number:month number:textual="true"/> + <number:text>-</number:text> + <number:year/> + </number:date-style> + <number:time-style style:name="N10133" number:language="en" number:country="US"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text> </number:text> + <number:am-pm/> + </number:time-style> + <number:time-style style:name="N10134" number:language="en" number:country="US"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + <number:text> </number:text> + <number:am-pm/> + </number:time-style> + <number:time-style style:name="N10135" number:language="en" number:country="US"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + </number:time-style> + <number:time-style style:name="N10136" number:language="en" number:country="US"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + </number:time-style> + <number:date-style style:name="N10137" number:language="en" number:country="US"> + <number:month/> + <number:text>/</number:text> + <number:day/> + <number:text>/</number:text> + <number:year number:style="long"/> + <number:text> </number:text> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + </number:date-style> + <number:number-style style:name="N10139P0" style:volatile="true" number:language="en" number:country="US"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N10139" number:language="en" number:country="US"> + <style:text-properties fo:color="#ff0000"/> + <number:text>(</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N10139P0"/> + </number:number-style> + <number:number-style style:name="N10141P0" style:volatile="true" number:language="en" number:country="US"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N10141" number:language="en" number:country="US"> + <style:text-properties fo:color="#ff0000"/> + <number:text>(</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N10141P0"/> + </number:number-style> + <number:currency-style style:name="N10143P0" style:volatile="true" number:language="en" number:country="US"> + <number:currency-symbol/> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:currency-style> + <number:currency-style style:name="N10143" number:language="en" number:country="US"> + <number:text>(</number:text> + <number:currency-symbol/> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N10143P0"/> + </number:currency-style> + <number:currency-style style:name="N10144P0" style:volatile="true" number:language="en" number:country="US"> + <number:currency-symbol/> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:currency-style> + <number:currency-style style:name="N10144" number:language="en" number:country="US"> + <style:text-properties fo:color="#ff0000"/> + <number:text>(</number:text> + <number:currency-symbol/> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N10144P0"/> + </number:currency-style> + <number:currency-style style:name="N10146P0" style:volatile="true" number:language="en" number:country="US"> + <number:currency-symbol/> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:currency-style> + <number:currency-style style:name="N10146" number:language="en" number:country="US"> + <number:text>(</number:text> + <number:currency-symbol/> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N10146P0"/> + </number:currency-style> + <number:currency-style style:name="N10147P0" style:volatile="true" number:language="en" number:country="US"> + <number:currency-symbol/> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:currency-style> + <number:currency-style style:name="N10147" number:language="en" number:country="US"> + <style:text-properties fo:color="#ff0000"/> + <number:text>(</number:text> + <number:currency-symbol/> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N10147P0"/> + </number:currency-style> + <number:number-style style:name="N10148P0" style:volatile="true" number:language="en" number:country="US"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N10148" number:language="en" number:country="US"> + <number:text>(</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N10148P0"/> + </number:number-style> + <number:number-style style:name="N10149P0" style:volatile="true" number:language="en" number:country="US"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N10149" number:language="en" number:country="US"> + <number:text>(</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N10149P0"/> + </number:number-style> + <number:number-style style:name="N10153P0" style:volatile="true" number:language="en" number:country="US"> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N10153P1" style:volatile="true" number:language="en" number:country="US"> + <number:fill-character> </number:fill-character> + <number:text>(</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:number-style> + <number:number-style style:name="N10153P2" style:volatile="true" number:language="en" number:country="US"> + <number:fill-character> </number:fill-character> + <number:text>- </number:text> + </number:number-style> + <number:text-style style:name="N10153" number:language="en" number:country="US"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N10153P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N10153P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N10153P2"/> + </number:text-style> + <number:currency-style style:name="N10157P0" style:volatile="true" number:language="en" number:country="US"> + <number:currency-symbol/> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:currency-style> + <number:currency-style style:name="N10157P1" style:volatile="true" number:language="en" number:country="US"> + <number:currency-symbol/> + <number:fill-character> </number:fill-character> + <number:text>(</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:currency-style> + <number:currency-style style:name="N10157P2" style:volatile="true" number:language="en" number:country="US"> + <number:currency-symbol/> + <number:fill-character> </number:fill-character> + <number:text>- </number:text> + </number:currency-style> + <number:text-style style:name="N10157" number:language="en" number:country="US"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N10157P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N10157P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N10157P2"/> + </number:text-style> + <number:number-style style:name="N10161P0" style:volatile="true" number:language="en" number:country="US"> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N10161P1" style:volatile="true" number:language="en" number:country="US"> + <number:fill-character> </number:fill-character> + <number:text>(</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:number-style> + <number:number-style style:name="N10161P2" style:volatile="true" number:language="en" number:country="US"> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:number-style> + <number:text-style style:name="N10161" number:language="en" number:country="US"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N10161P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N10161P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N10161P2"/> + </number:text-style> + <number:currency-style style:name="N10165P0" style:volatile="true" number:language="en" number:country="US"> + <number:currency-symbol/> + <number:fill-character> </number:fill-character> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:currency-style> + <number:currency-style style:name="N10165P1" style:volatile="true" number:language="en" number:country="US"> + <number:currency-symbol/> + <number:fill-character> </number:fill-character> + <number:text>(</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text>)</number:text> + </number:currency-style> + <number:currency-style style:name="N10165P2" style:volatile="true" number:language="en" number:country="US"> + <number:currency-symbol/> + <number:fill-character> </number:fill-character> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="0"/> + <number:text> </number:text> + </number:currency-style> + <number:text-style style:name="N10165" number:language="en" number:country="US"> + <number:text-content/> + <number:text> </number:text> + <style:map style:condition="value()>0" style:apply-style-name="N10165P0"/> + <style:map style:condition="value()<0" style:apply-style-name="N10165P1"/> + <style:map style:condition="value()=0" style:apply-style-name="N10165P2"/> + </number:text-style> + <number:number-style style:name="N10166" number:language="en" number:country="US"> + <number:scientific-number number:decimal-places="14" number:min-decimal-places="14" number:min-integer-digits="1" number:min-exponent-digits="3" number:exponent-interval="1" number:forced-exponent-sign="true"/> + </number:number-style> + <number:number-style style:name="N10167" number:language="en" number:country="US"> + <number:scientific-number number:decimal-places="15" number:min-decimal-places="15" number:min-integer-digits="1" number:min-exponent-digits="3" number:exponent-interval="1" number:forced-exponent-sign="true"/> + </number:number-style> + <number:date-style style:name="N10168" number:language="en" number:country="US"> + <number:day number:style="long"/> + <number:text>-</number:text> + <number:month number:textual="true"/> + </number:date-style> + <number:time-style style:name="N10169" number:language="en" number:country="US" number:truncate-on-overflow="false"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + </number:time-style> + <number:time-style style:name="N10170" number:language="en" number:country="US"> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long" number:decimal-places="1"/> + </number:time-style> + <number:number-style style:name="N10171" number:language="en" number:country="US"> + <number:number number:decimal-places="6" number:min-decimal-places="6" number:min-integer-digits="1"/> + </number:number-style> + <number:percentage-style style:name="N10172" number:language="en" number:country="US"> + <number:number number:decimal-places="1" number:min-decimal-places="1" number:min-integer-digits="1"/> + <number:text>%</number:text> + </number:percentage-style> + <number:number-style style:name="N10173" number:language="en" number:country="US"> + <number:number number:decimal-places="3" number:min-decimal-places="3" number:min-integer-digits="1" number:grouping="true"/> + </number:number-style> + <number:date-style style:name="N10174P0" style:volatile="true" number:language="en" number:country="US"> + <number:day/> + <number:text>-</number:text> + <number:month number:textual="true"/> + <number:text>-</number:text> + <number:year/> + </number:date-style> + <number:text-style style:name="N10174" number:language="en" number:country="US"> + <number:text-content/> + <style:map style:condition="value()<=1.7976931348623157E+308" style:apply-style-name="N10174P0"/> + </number:text-style> + <number:date-style style:name="N10175P0" style:volatile="true" number:language="en" number:country="US"> + <number:day/> + <number:text>-</number:text> + <number:month number:textual="true"/> + </number:date-style> + <number:text-style style:name="N10175" number:language="en" number:country="US"> + <number:text-content/> + <style:map style:condition="value()<=1.7976931348623157E+308" style:apply-style-name="N10175P0"/> + </number:text-style> + <number:date-style style:name="N20114" number:language="de" number:country="DE"> + <number:day number:style="long"/> + <number:text>. </number:text> + <number:month number:textual="true"/> + <number:text> </number:text> + <number:year/> + </number:date-style> + <number:date-style style:name="N20115" number:language="de" number:country="DE"> + <number:day number:style="long"/> + <number:text>. </number:text> + <number:month number:textual="true"/> + </number:date-style> + <number:date-style style:name="N20116" number:language="de" number:country="DE"> + <number:month number:textual="true"/> + <number:text> </number:text> + <number:year/> + </number:date-style> + <number:time-style style:name="N20117" number:language="de" number:country="DE"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text> </number:text> + <number:am-pm/> + </number:time-style> + <number:time-style style:name="N20118" number:language="de" number:country="DE"> + <number:hours/> + <number:text>:</number:text> + <number:minutes number:style="long"/> + <number:text>:</number:text> + <number:seconds number:style="long"/> + <number:text> </number:text> + <number:am-pm/> + </number:time-style> + <number:number-style style:name="N20120P0" style:volatile="true" number:language="de" number:country="DE"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N20120" number:language="de" number:country="DE"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N20120P0"/> + </number:number-style> + <number:number-style style:name="N20121P0" style:volatile="true" number:language="de" number:country="DE"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N20121" number:language="de" number:country="DE"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N20121P0"/> + </number:number-style> + <number:number-style style:name="N20123P0" style:volatile="true" number:language="de" number:country="DE"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N20123" number:language="de" number:country="DE"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N20123P0"/> + </number:number-style> + <number:number-style style:name="N20124P0" style:volatile="true" number:language="de" number:country="DE"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + </number:number-style> + <number:number-style style:name="N20124" number:language="de" number:country="DE"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> </number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N20124P0"/> + </number:number-style> + <number:number-style style:name="N20126P0" style:volatile="true" number:language="de" number:country="DE"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N20126" number:language="de" number:country="DE"> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N20126P0"/> + </number:number-style> + <number:number-style style:name="N20127P0" style:volatile="true" number:language="de" number:country="DE"> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N20127" number:language="de" number:country="DE"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="0" number:min-decimal-places="0" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N20127P0"/> + </number:number-style> + <number:number-style style:name="N20129P0" style:volatile="true" number:language="de" number:country="DE"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N20129" number:language="de" number:country="DE"> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N20129P0"/> + </number:number-style> + <number:number-style style:name="N20130P0" style:volatile="true" number:language="de" number:country="DE"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + </number:number-style> + <number:number-style style:name="N20130" number:language="de" number:country="DE"> + <style:text-properties fo:color="#ff0000"/> + <number:text>-</number:text> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/> + <number:text> €</number:text> + <style:map style:condition="value()>=0" style:apply-style-name="N20130P0"/> + </number:number-style> + <style:style style:name="Default" style:family="table-cell"/> + <style:style style:name="Heading" style:family="table-cell" style:parent-style-name="Default"> + <style:text-properties fo:color="#000000" fo:font-size="24pt" fo:font-style="normal" fo:font-weight="bold" style:font-size-asian="24pt" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-size-complex="24pt" style:font-style-complex="normal" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="table-cell" style:parent-style-name="Heading"> + <style:text-properties fo:font-size="18pt" style:font-size-asian="18pt" style:font-size-complex="18pt"/> + </style:style> + <style:style style:name="Heading_20_2" style:display-name="Heading 2" style:family="table-cell" style:parent-style-name="Heading"> + <style:text-properties fo:font-size="12pt" style:font-size-asian="12pt" style:font-size-complex="12pt"/> + </style:style> + <style:style style:name="Text" style:family="table-cell" style:parent-style-name="Default"/> + <style:style style:name="Note" style:family="table-cell" style:parent-style-name="Text"> + <style:table-cell-properties fo:background-color="#ffffcc" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" fo:border="0.74pt solid #808080"/> + <style:text-properties fo:color="#333333"/> + </style:style> + <style:style style:name="Footnote" style:family="table-cell" style:parent-style-name="Text"> + <style:text-properties fo:color="#808080" fo:font-style="italic" style:font-style-asian="italic" style:font-style-complex="italic"/> + </style:style> + <style:style style:name="Hyperlink" style:family="table-cell" style:parent-style-name="Text"> + <style:text-properties fo:color="#0000ee" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="#0000ee"/> + </style:style> + <style:style style:name="Status" style:family="table-cell" style:parent-style-name="Default"/> + <style:style style:name="Good" style:family="table-cell" style:parent-style-name="Status"> + <style:table-cell-properties fo:background-color="#ccffcc"/> + <style:text-properties fo:color="#006600"/> + </style:style> + <style:style style:name="Neutral" style:family="table-cell" style:parent-style-name="Status"> + <style:table-cell-properties fo:background-color="#ffffcc"/> + <style:text-properties fo:color="#996600"/> + </style:style> + <style:style style:name="Bad" style:family="table-cell" style:parent-style-name="Status"> + <style:table-cell-properties fo:background-color="#ffcccc"/> + <style:text-properties fo:color="#cc0000"/> + </style:style> + <style:style style:name="Warning" style:family="table-cell" style:parent-style-name="Status"> + <style:text-properties fo:color="#cc0000"/> + </style:style> + <style:style style:name="Error" style:family="table-cell" style:parent-style-name="Status"> + <style:table-cell-properties fo:background-color="#cc0000"/> + <style:text-properties fo:color="#ffffff" fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="Accent" style:family="table-cell" style:parent-style-name="Default"> + <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="Accent_20_1" style:display-name="Accent 1" style:family="table-cell" style:parent-style-name="Accent"> + <style:table-cell-properties fo:background-color="#000000"/> + <style:text-properties fo:color="#ffffff"/> + </style:style> + <style:style style:name="Accent_20_2" style:display-name="Accent 2" style:family="table-cell" style:parent-style-name="Accent"> + <style:table-cell-properties fo:background-color="#808080"/> + <style:text-properties fo:color="#ffffff"/> + </style:style> + <style:style style:name="Accent_20_3" style:display-name="Accent 3" style:family="table-cell" style:parent-style-name="Accent"> + <style:table-cell-properties fo:background-color="#dddddd"/> + </style:style> + <style:style style:name="Result" style:family="table-cell" style:parent-style-name="Default"> + <style:text-properties fo:font-style="italic" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" fo:font-weight="bold" style:font-style-asian="italic" style:font-weight-asian="bold" style:font-style-complex="italic" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="false" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:background-color="#ff3333"/> + </style:style> + <style:style style:name="true" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:background-color="#99ff66"/> + </style:style> + <draw:marker draw:name="Arrowheads_20_1" draw:display-name="Arrowheads 1" svg:viewBox="0 0 20 30" svg:d="M10 0l-10 30h20z"/> + <loext:theme loext:name="Office"> + <loext:theme-colors loext:name="LibreOffice"> + <loext:color loext:name="dark1" loext:color="#000000"/> + <loext:color loext:name="light1" loext:color="#ffffff"/> + <loext:color loext:name="dark2" loext:color="#000000"/> + <loext:color loext:name="light2" loext:color="#ffffff"/> + <loext:color loext:name="accent1" loext:color="#18a303"/> + <loext:color loext:name="accent2" loext:color="#0369a3"/> + <loext:color loext:name="accent3" loext:color="#a33e03"/> + <loext:color loext:name="accent4" loext:color="#8e03a3"/> + <loext:color loext:name="accent5" loext:color="#c99c00"/> + <loext:color loext:name="accent6" loext:color="#c9211e"/> + <loext:color loext:name="hyperlink" loext:color="#0000ee"/> + <loext:color loext:name="followed-hyperlink" loext:color="#551a8b"/> + </loext:theme-colors> + </loext:theme> + </office:styles> + <office:automatic-styles> + <style:style style:name="co1" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="3.884cm"/> + </style:style> + <style:style style:name="co2" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="1.794cm"/> + </style:style> + <style:style style:name="co3" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="10.633cm"/> + </style:style> + <style:style style:name="co4" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="2.258cm"/> + </style:style> + <style:style style:name="co5" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="2.685cm"/> + </style:style> + <style:style style:name="co6" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="6.736cm"/> + </style:style> + <style:style style:name="co7" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="2.713cm"/> + </style:style> + <style:style style:name="co8" style:family="table-column"> + <style:table-column-properties fo:break-before="auto" style:column-width="7.008cm"/> + </style:style> + <style:style style:name="ro1" style:family="table-row"> + <style:table-row-properties style:row-height="1.614cm" fo:break-before="auto" style:use-optimal-row-height="true"/> + </style:style> + <style:style style:name="ro2" style:family="table-row"> + <style:table-row-properties style:row-height="0.452cm" fo:break-before="auto" style:use-optimal-row-height="true"/> + </style:style> + <style:style style:name="ro3" style:family="table-row"> + <style:table-row-properties style:row-height="0.612cm" fo:break-before="auto" style:use-optimal-row-height="true"/> + </style:style> + <style:style style:name="ro4" style:family="table-row"> + <style:table-row-properties style:row-height="0.529cm" fo:break-before="auto" style:use-optimal-row-height="true"/> + </style:style> + <style:style style:name="ro5" style:family="table-row"> + <style:table-row-properties style:row-height="0.487cm" fo:break-before="auto" style:use-optimal-row-height="true"/> + </style:style> + <style:style style:name="ta1" style:family="table" style:master-page-name="Default"> + <style:table-properties table:display="true" style:writing-mode="lr-tb"/> + </style:style> + <number:number-style style:name="N2"> + <number:number number:decimal-places="2" number:min-decimal-places="2" number:min-integer-digits="1"/> + </number:number-style> + <number:date-style style:name="N36" number:automatic-order="true"> + <number:day number:style="long"/> + <number:text>/</number:text> + <number:month number:style="long"/> + <number:text>/</number:text> + <number:year number:style="long"/> + </number:date-style> + <number:boolean-style style:name="N99"> + <number:boolean/> + </number:boolean-style> + <number:text-style style:name="N100"> + <number:text-content/> + </number:text-style> + <style:style style:name="ce12" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:wrap-option="wrap"/> + <style:text-properties fo:font-size="20pt" fo:font-weight="bold" style:font-size-asian="20pt" style:font-weight-asian="bold" style:font-size-complex="20pt" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="ce14" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/> + <style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/> + <style:text-properties fo:font-size="14pt" fo:font-weight="bold" style:font-size-asian="14pt" style:font-weight-asian="bold" style:font-size-complex="14pt" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="ce15" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/> + <style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/> + <style:text-properties fo:font-size="12pt" fo:font-weight="bold" style:font-size-asian="12pt" style:font-weight-asian="bold" style:font-size-complex="12pt" style:font-weight-complex="bold"/> + </style:style> + <style:style style:name="ce4" style:family="table-cell" style:parent-style-name="Default"> + <style:map style:condition="cell-content()=""" style:apply-style-name="Default" style:base-cell-address="Sheet1.B2"/> + <style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B2"/> + <style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B2"/> + </style:style> + <style:style style:name="ce21" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99"> + <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/> + <style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/> + <style:map style:condition="cell-content()=""" style:apply-style-name="Default" style:base-cell-address="Sheet1.B2"/> + <style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B2"/> + <style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B2"/> + </style:style> + <style:style style:name="ce23" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/> + <style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/> + <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/> + <style:map style:condition="cell-content()=""" style:apply-style-name="Default" style:base-cell-address="Sheet1.B2"/> + <style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B2"/> + <style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B2"/> + </style:style> + <style:style style:name="ce24" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99"> + <style:map style:condition="cell-content()=""" style:apply-style-name="Default" style:base-cell-address="Sheet1.B2"/> + <style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet1.B2"/> + <style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet1.B2"/> + </style:style> + <style:style style:name="ce26" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/> + <style:paragraph-properties fo:text-align="center" fo:margin-left="0cm"/> + </style:style> + <style:style style:name="ce9" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N0"/> + <style:style style:name="ce11" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N100"> + <style:text-properties style:font-name="Liberation Sans1"/> + </style:style> + <style:style style:name="ce27" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:border-bottom="none" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="fix" style:repeat-content="false" fo:wrap-option="no-wrap" fo:border-left="0.74pt solid #c5e0b4" style:direction="ltr" fo:border-right="0.74pt solid #c5e0b4" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="none" style:vertical-align="bottom" loext:vertical-justify="auto"> + <loext:border-left-complex-color loext:theme-type="accent6" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="4000"/> + <loext:transformation loext:type="lumoff" loext:value="5999"/> + </loext:border-left-complex-color> + <loext:border-right-complex-color loext:theme-type="accent6" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="4000"/> + <loext:transformation loext:type="lumoff" loext:value="5999"/> + </loext:border-right-complex-color> + </style:table-cell-properties> + <style:paragraph-properties fo:text-align="start" css3t:text-justify="auto" fo:margin-left="0cm" style:writing-mode="page"/> + </style:style> + <style:style style:name="ce19" style:family="table-cell" style:parent-style-name="Default"> + <style:text-properties style:font-name="Liberation Sans2"/> + </style:style> + <style:style style:name="ce13" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N100"> + <style:text-properties style:font-name="Liberation Sans2"/> + </style:style> + <style:style style:name="ce31" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99"/> + <style:style style:name="ce29" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N99"> + <style:map style:condition="cell-content()=""" style:apply-style-name="Default" style:base-cell-address="Sheet2.I2"/> + <style:map style:condition="cell-content()=1" style:apply-style-name="true" style:base-cell-address="Sheet2.I2"/> + <style:map style:condition="cell-content()=0" style:apply-style-name="false" style:base-cell-address="Sheet2.I2"/> + </style:style> + <style:style style:name="ce16" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/> + <style:paragraph-properties fo:text-align="start" fo:margin-left="0cm"/> + </style:style> + <style:style style:name="ce18" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:border-bottom="0.74pt solid #c5e0b4" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="fix" style:repeat-content="false" fo:wrap-option="no-wrap" fo:border-left="0.74pt solid #c5e0b4" style:direction="ltr" fo:border-right="none" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="none" style:vertical-align="bottom" loext:vertical-justify="auto"> + <loext:border-bottom-complex-color loext:theme-type="accent6" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="4000"/> + <loext:transformation loext:type="lumoff" loext:value="5999"/> + </loext:border-bottom-complex-color> + <loext:border-left-complex-color loext:theme-type="accent6" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="4000"/> + <loext:transformation loext:type="lumoff" loext:value="5999"/> + </loext:border-left-complex-color> + </style:table-cell-properties> + <style:paragraph-properties fo:text-align="start" css3t:text-justify="auto" fo:margin-left="0cm" style:writing-mode="page"/> + </style:style> + <style:style style:name="ce39" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:border-bottom="none" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="fix" style:repeat-content="false" fo:wrap-option="no-wrap" fo:border-left="0.74pt solid #ffffff" style:direction="ltr" fo:border-right="none" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="none" style:vertical-align="bottom" loext:vertical-justify="auto"> + <loext:border-left-complex-color loext:theme-type="light2" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="7500"/> + </loext:border-left-complex-color> + </style:table-cell-properties> + <style:paragraph-properties fo:text-align="start" css3t:text-justify="auto" fo:margin-left="0cm" style:writing-mode="page"/> + </style:style> + <style:style style:name="ce41" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:border-bottom="none" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="fix" style:repeat-content="false" fo:wrap-option="no-wrap" fo:border-left="0.74pt solid #ffffff" style:direction="ltr" fo:border-right="0.74pt solid #ffffff" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="none" style:vertical-align="bottom" loext:vertical-justify="auto"> + <loext:border-left-complex-color loext:theme-type="accent6" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="4000"/> + <loext:transformation loext:type="lumoff" loext:value="5999"/> + </loext:border-left-complex-color> + <loext:border-right-complex-color loext:theme-type="accent6" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="4000"/> + <loext:transformation loext:type="lumoff" loext:value="5999"/> + </loext:border-right-complex-color> + </style:table-cell-properties> + <style:paragraph-properties fo:text-align="start" css3t:text-justify="auto" fo:margin-left="0cm" style:writing-mode="page"/> + </style:style> + <style:style style:name="ce32" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N36"> + <style:table-cell-properties style:text-align-source="fix" style:repeat-content="false" fo:wrap-option="no-wrap" style:direction="ltr" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" style:vertical-align="bottom" loext:vertical-justify="auto"/> + <style:paragraph-properties fo:text-align="end" css3t:text-justify="auto" fo:margin-left="0cm" style:writing-mode="page"/> + </style:style> + <style:style style:name="ce37" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:border-bottom="0.74pt solid #c5e0b4" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="fix" style:repeat-content="false" fo:wrap-option="no-wrap" fo:border-left="0.74pt solid #c5e0b4" style:direction="ltr" fo:border-right="none" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="none" style:vertical-align="bottom" loext:vertical-justify="auto"> + <loext:border-bottom-complex-color loext:theme-type="accent6" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="4000"/> + <loext:transformation loext:type="lumoff" loext:value="5999"/> + </loext:border-bottom-complex-color> + <loext:border-left-complex-color loext:theme-type="accent6" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="4000"/> + <loext:transformation loext:type="lumoff" loext:value="5999"/> + </loext:border-left-complex-color> + </style:table-cell-properties> + <style:paragraph-properties fo:text-align="start" css3t:text-justify="auto" fo:margin-left="0cm" style:writing-mode="page"/> + <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Calibri" fo:font-size="11pt" fo:language="es" fo:country="ES" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:text-underline-mode="continuous" style:text-overline-mode="continuous" style:text-line-through-mode="continuous" style:font-name-asian="Noto Sans CJK SC" style:font-size-asian="11pt" style:language-asian="zh" style:country-asian="CN" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-name-complex="Noto Sans" style:font-size-complex="11pt" style:language-complex="hi" style:country-complex="IN" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-emphasize="none" style:font-relief="none" style:text-overline-style="none" style:text-overline-color="font-color"> + <loext:char-complex-color loext:theme-type="dark1" loext:color-type="theme"/> + </style:text-properties> + </style:style> + <style:style style:name="ce43" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:border-bottom="0.74pt solid #ffffff" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="fix" style:repeat-content="false" fo:wrap-option="no-wrap" fo:border-left="none" style:direction="ltr" fo:border-right="0.74pt solid #ffffff" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="none" style:vertical-align="bottom" loext:vertical-justify="auto"> + <loext:border-bottom-complex-color loext:theme-type="light2" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="7500"/> + </loext:border-bottom-complex-color> + <loext:border-right-complex-color loext:theme-type="light2" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="7500"/> + </loext:border-right-complex-color> + </style:table-cell-properties> + <style:paragraph-properties fo:text-align="start" css3t:text-justify="auto" fo:margin-left="0cm" style:writing-mode="page"/> + </style:style> + <style:style style:name="ce44" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:border-bottom="0.74pt solid #ffffff" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="fix" style:repeat-content="false" fo:wrap-option="no-wrap" fo:border-left="0.74pt solid #ffffff" style:direction="ltr" fo:border-right="0.74pt solid #ffffff" style:rotation-angle="0" style:rotation-align="none" style:shrink-to-fit="false" fo:border-top="none" style:vertical-align="bottom" loext:vertical-justify="auto"> + <loext:border-bottom-complex-color loext:theme-type="accent6" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="4000"/> + <loext:transformation loext:type="lumoff" loext:value="5999"/> + </loext:border-bottom-complex-color> + <loext:border-left-complex-color loext:theme-type="accent6" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="4000"/> + <loext:transformation loext:type="lumoff" loext:value="5999"/> + </loext:border-left-complex-color> + <loext:border-right-complex-color loext:theme-type="accent6" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="4000"/> + <loext:transformation loext:type="lumoff" loext:value="5999"/> + </loext:border-right-complex-color> + </style:table-cell-properties> + <style:paragraph-properties fo:text-align="start" css3t:text-justify="auto" fo:margin-left="0cm" style:writing-mode="page"/> + </style:style> + <style:style style:name="ce45" style:family="table-cell" style:parent-style-name="Default"> + <style:table-cell-properties fo:border-bottom="0.74pt solid #ffffff" style:diagonal-bl-tr="none" style:diagonal-tl-br="none" style:text-align-source="fix" style:repeat-content="false" fo:border-left="0.74pt solid #ffffff" fo:border-right="none" style:rotation-align="none" fo:border-top="none"> + <loext:border-bottom-complex-color loext:theme-type="light2" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="7500"/> + </loext:border-bottom-complex-color> + <loext:border-left-complex-color loext:theme-type="light2" loext:color-type="theme"> + <loext:transformation loext:type="lummod" loext:value="7500"/> + </loext:border-left-complex-color> + </style:table-cell-properties> + <style:paragraph-properties fo:text-align="start" fo:margin-left="0cm"/> + </style:style> + <style:page-layout style:name="pm1"> + <style:page-layout-properties style:writing-mode="lr-tb"/> + <style:header-style> + <style:header-footer-properties fo:min-height="0.75cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="0.25cm"/> + </style:header-style> + <style:footer-style> + <style:header-footer-properties fo:min-height="0.75cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.25cm"/> + </style:footer-style> + </style:page-layout> + <style:page-layout style:name="pm2"> + <style:page-layout-properties style:writing-mode="lr-tb"/> + <style:header-style> + <style:header-footer-properties fo:min-height="0.75cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-bottom="0.25cm" fo:border="1.5pt solid #000000" fo:padding="0.018cm" fo:background-color="#c0c0c0"> + <style:background-image/> + </style:header-footer-properties> + </style:header-style> + <style:footer-style> + <style:header-footer-properties fo:min-height="0.75cm" fo:margin-left="0cm" fo:margin-right="0cm" fo:margin-top="0.25cm" fo:border="1.5pt solid #000000" fo:padding="0.018cm" fo:background-color="#c0c0c0"> + <style:background-image/> + </style:header-footer-properties> + </style:footer-style> + </style:page-layout> + <style:style style:name="T1" style:family="text"> + <style:text-properties style:font-name="Liberation Sans1"/> + </style:style> + </office:automatic-styles> + <office:master-styles> + <style:master-page style:name="Default" style:page-layout-name="pm1"> + <style:header> + <text:p><text:sheet-name>???</text:sheet-name></text:p> + </style:header> + <style:header-left style:display="false"/> + <style:header-first style:display="false"/> + <style:footer> + <text:p>Page <text:page-number>1</text:page-number></text:p> + </style:footer> + <style:footer-left style:display="false"/> + <style:footer-first style:display="false"/> + </style:master-page> + <style:master-page style:name="Report" style:page-layout-name="pm2"> + <style:header> + <style:region-left> + <text:p><text:sheet-name>???</text:sheet-name><text:s/>(<text:title>???</text:title>)</text:p> + </style:region-left> + <style:region-right> + <text:p><text:date style:data-style-name="N2" text:date-value="2025-05-08">00/00/0000</text:date>, <text:time style:data-style-name="N2" text:time-value="20:31:57.077622871">00:00:00</text:time></text:p> + </style:region-right> + </style:header> + <style:header-left style:display="false"/> + <style:header-first style:display="false"/> + <style:footer> + <text:p>Page <text:page-number>1</text:page-number><text:s/>/ <text:page-count>99</text:page-count></text:p> + </style:footer> + <style:footer-left style:display="false"/> + <style:footer-first style:display="false"/> + </style:master-page> + </office:master-styles> + <office:body> + <office:spreadsheet> + <table:calculation-settings table:automatic-find-labels="false" table:use-regular-expressions="false" table:use-wildcards="true"/> + <table:table table:name="Sheet1" table:style-name="ta1"> + <table:table-column table:style-name="co1" table:default-cell-style-name="Default"/> + <table:table-column table:style-name="co2" table:default-cell-style-name="ce4"/> + <table:table-column table:style-name="co3" table:default-cell-style-name="Default"/> + <table:table-row table:style-name="ro1"> + <table:table-cell table:style-name="ce12" office:value-type="string" calcext:value-type="string"> + <text:p>TextSplit Function</text:p> + </table:table-cell> + <table:table-cell table:style-name="Default"/> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro3"> + <table:table-cell table:style-name="ce14" office:value-type="string" calcext:value-type="string"> + <text:p>Result</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce21" table:formula="of:=AND([.B8:.B95])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2" table:number-rows-repeated="3"> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro4"> + <table:table-cell table:style-name="ce15" office:value-type="string" calcext:value-type="string"> + <text:p>Sheet</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce23" office:value-type="string" calcext:value-type="string"> + <text:p>Result</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce15" office:value-type="string" calcext:value-type="string"> + <text:p>Description</text:p> + </table:table-cell> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="float" office:value="2" calcext:value-type="float"> + <text:p>2</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce21" table:formula="of:=AND([Sheet2.I2:.I200])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce26" office:value-type="string" calcext:value-type="string"> + <text:p>Simple TEXTSPLIT formulas with local references and values</text:p> + </table:table-cell> + </table:table-row> + <table:table-row table:style-name="ro2" table:number-rows-repeated="20"> + <table:table-cell/> + <table:table-cell table:style-name="ce24"/> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2" table:number-rows-repeated="21"> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <calcext:conditional-formats> + <calcext:conditional-format calcext:target-range-address="Sheet1.B2:Sheet1.B50"> + <calcext:condition calcext:apply-style-name="Default" calcext:value="=""" calcext:base-cell-address="Sheet1.B2"/> + <calcext:condition calcext:apply-style-name="true" calcext:value="=1" calcext:base-cell-address="Sheet1.B2"/> + <calcext:condition calcext:apply-style-name="false" calcext:value="=0" calcext:base-cell-address="Sheet1.B2"/> + </calcext:conditional-format> + </calcext:conditional-formats> + </table:table> + <table:table table:name="Sheet2" table:style-name="ta1"> + <table:table-column table:style-name="co4" table:default-cell-style-name="Default"/> + <table:table-column table:style-name="co5" table:default-cell-style-name="Default"/> + <table:table-column table:style-name="co4" table:number-columns-repeated="7" table:default-cell-style-name="Default"/> + <table:table-column table:style-name="co6" table:default-cell-style-name="Default"/> + <table:table-column table:style-name="co7" table:default-cell-style-name="Default"/> + <table:table-column table:style-name="co8" table:default-cell-style-name="ce16"/> + <table:table-column table:style-name="co4" table:default-cell-style-name="Default"/> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Function</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Expected</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce31" office:value-type="string" calcext:value-type="string"> + <text:p>Correct</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>FunctionString</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Comment</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Data</text:p> + </table:table-cell> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Data</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Data</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29"/> + <table:table-cell/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>row to array</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce18" office:value-type="string" calcext:value-type="string"> + <text:p>Apples,Lemons,Oranges</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Mr. </text:p> + </table:table-cell> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L2];",")" office:value-type="string" office:string-value="Apples" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Lemons" calcext:value-type="string"> + <text:p>Lemons</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Oranges" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Lemons</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A3]=[.E3])AND([.B3]=[.F3])AND([.C3]=[.G3])AND([.D3]=[.H3])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A3])" office:value-type="string" office:string-value="{=TEXTSPLIT(L2;",")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L2;",")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce39" office:value-type="string" calcext:value-type="string"> + <text:p>Name=Aiden, Score=93, Result=Excellent</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Ms. </text:p> + </table:table-cell> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="3" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L2]; ;",")" office:value-type="string" office:string-value="Apples" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A4]=[.E4])AND([.B4]=[.F4])AND([.C4]=[.G4])AND([.D4]=[.H4])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A4])" office:value-type="string" office:string-value="{=TEXTSPLIT(L2; ;",")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L2; ;",")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce41" office:value-type="string" calcext:value-type="string"> + <text:p>1111XXX2222XXX3333</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>, </text:p> + </table:table-cell> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Lemons" calcext:value-type="string"> + <text:p>Lemons</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Lemons</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A5]=[.E5])AND([.B5]=[.F5])AND([.C5]=[.G5])AND([.D5]=[.H5])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A5])" office:value-type="string" office:string-value="{=TEXTSPLIT(L2; ;",")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L2; ;",")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce41" office:value-type="string" calcext:value-type="string"> + <text:p>Apples, ,Oranges</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p><text:s/></text:p> + </table:table-cell> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Oranges" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A6]=[.E6])AND([.B6]=[.F6])AND([.C6]=[.G6])AND([.D6]=[.H6])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A6])" office:value-type="string" office:string-value="{=TEXTSPLIT(L2; ;",")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L2; ;",")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce32" office:value-type="date" office:date-value="2022-01-16" calcext:value-type="date"> + <text:p>16/01/2022</text:p> + </table:table-cell> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L2];"x")" office:value-type="string" office:string-value="Apples,Lemons,Oranges" calcext:value-type="string"> + <text:p>Apples,Lemons,Oranges</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Apples,Lemons,Oranges</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A7]=[.E7])AND([.B7]=[.F7])AND([.C7]=[.G7])AND([.D7]=[.H7])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A7])" office:value-type="string" office:string-value="{=TEXTSPLIT(L2;"x")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L2;"x")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="Default" office:value-type="string" calcext:value-type="string"> + <text:p>Ms. Mia Brown, 82, Good</text:p> + </table:table-cell> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L2];;"x")" office:value-type="string" office:string-value="Apples,Lemons,Oranges" calcext:value-type="string"> + <text:p>Apples,Lemons,Oranges</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Apples,Lemons,Oranges</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A8]=[.E8])AND([.B8]=[.F8])AND([.C8]=[.G8])AND([.D8]=[.H8])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A8])" office:value-type="string" office:string-value="{=TEXTSPLIT(L2;;"x")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L2;;"x")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="Default" office:value-type="string" calcext:value-type="string"> + <text:p>,,,,,,,,One,,,,,Two,,,,Three</text:p> + </table:table-cell> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="2" table:number-matrix-rows-spanned="3" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L3]; "="; ", ")" office:value-type="string" office:string-value="Name" calcext:value-type="string"> + <text:p>Name</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Aiden" calcext:value-type="string"> + <text:p>Aiden</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Name</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Aiden</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A9]=[.E9])AND([.B9]=[.F9])AND([.C9]=[.G9])AND([.D9]=[.H9])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A9])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; "="; ", ")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; "="; ", ")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce41" office:value-type="string" calcext:value-type="string"> + <text:p>1111ÇÇÇ2222ÇÇÇ3333</text:p> + </table:table-cell> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro5"> + <table:table-cell office:value-type="string" office:string-value="Score" calcext:value-type="string"> + <text:p>Score</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="93" calcext:value-type="string"> + <text:p>93</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Score</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>93</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A10]=[.E10])AND([.B10]=[.F10])AND([.C10]=[.G10])AND([.D10]=[.H10])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A10])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; "="; ", ")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; "="; ", ")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce37"/> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Result" calcext:value-type="string"> + <text:p>Result</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Excellent" calcext:value-type="string"> + <text:p>Excellent</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Result</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Excellent</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A11]=[.E11])AND([.B11]=[.F11])AND([.C11]=[.G11])AND([.D11]=[.H11])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A11])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; "="; ", ")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; "="; ", ")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce41"/> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="2" table:number-matrix-rows-spanned="4" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L3]; ", "; "=")" office:value-type="string" office:string-value="Name" calcext:value-type="string"> + <text:p>Name</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="" calcext:value-type="error"> + <text:p>#N/A</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Name</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>#N/A</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A12]=[.E12])AND(ISERROR([.B12]))" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A12])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce43"/> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Aiden" calcext:value-type="string"> + <text:p>Aiden</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Score" calcext:value-type="string"> + <text:p>Score</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Aiden</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Score</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A13]=[.E13])AND([.B13]=[.F13])AND([.C13]=[.G13])AND([.D13]=[.H13])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A13])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce41"/> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="93" calcext:value-type="string"> + <text:p>93</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Result" calcext:value-type="string"> + <text:p>Result</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>93</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Result</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A14]=[.E14])AND([.B14]=[.F14])AND([.C14]=[.G14])AND([.D14]=[.H14])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A14])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce41"/> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Excellent" calcext:value-type="string"> + <text:p>Excellent</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="" calcext:value-type="error"> + <text:p>#N/A</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Excellent</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>#N/A</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A15]=[.E15])AND(ISERROR([.B15]))" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A15])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce44"/> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L4];"XXX")" office:value-type="string" office:string-value="1111" calcext:value-type="string"> + <text:p>1111</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="2222" calcext:value-type="string"> + <text:p>2222</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="3333" calcext:value-type="string"> + <text:p>3333</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>1111</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce13" office:value-type="string" calcext:value-type="string"> + <text:p>2222</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>3333</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce11"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A16]=[.E16])AND([.B16]=[.F16])AND([.C16]=[.G16])AND([.D16]=[.H16])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A16])" office:value-type="string" office:string-value="{=TEXTSPLIT(L4;"XXX")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L4;"XXX")}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce45"/> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L5];",")" office:value-type="string" office:string-value="Apples" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value=" " calcext:value-type="string"> + <text:p><text:s/></text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Oranges" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p><text:s/></text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A17]=[.E17])AND([.B17]=[.F17])AND([.C17]=[.G17])AND([.D17]=[.H17])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A17])" office:value-type="string" office:string-value="{=TEXTSPLIT(L5;",")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L5;",")}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L5];",";;TRUE())" office:value-type="string" office:string-value="Apples" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value=" " calcext:value-type="string"> + <text:p><text:s/></text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Oranges" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p><text:s/></text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A18]=[.E18])AND([.B18]=[.F18])AND([.C18]=[.G18])AND([.D18]=[.H18])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A18])" office:value-type="string" office:string-value="{=TEXTSPLIT(L5;",";;TRUE())}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L5;",";;TRUE())}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L5];",";;FALSE())" office:value-type="string" office:string-value="Apples" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value=" " calcext:value-type="string"> + <text:p><text:s/></text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Oranges" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p><text:s/></text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A19]=[.E19])AND([.B19]=[.F19])AND([.C19]=[.G19])AND([.D19]=[.H19])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A19])" office:value-type="string" office:string-value="{=TEXTSPLIT(L5;",";;FALSE())}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L5;",";;FALSE())}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L5];"X";;TRUE())" office:value-type="string" office:string-value="Apples, ,Oranges" calcext:value-type="string"> + <text:p>Apples, ,Oranges</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce27" office:value-type="string" calcext:value-type="string"> + <text:p>Apples, ,Oranges</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A20]=[.E20])AND([.B20]=[.F20])AND([.C20]=[.G20])AND([.D20]=[.H20])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A20])" office:value-type="string" office:string-value="{=TEXTSPLIT(L5;"X";;TRUE())}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L5;"X";;TRUE())}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L4];"XXX";;;0)" office:value-type="string" office:string-value="1111" calcext:value-type="string"> + <text:p>1111</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="2222" calcext:value-type="string"> + <text:p>2222</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="3333" calcext:value-type="string"> + <text:p>3333</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>1111</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce13" office:value-type="string" calcext:value-type="string"> + <text:p>2222</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>3333</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce11"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A21]=[.E21])AND([.B21]=[.F21])AND([.C21]=[.G21])AND([.D21]=[.H21])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A21])" office:value-type="string" office:string-value="{=TEXTSPLIT(L4;"XXX";;;0)}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L4;"XXX";;;0)}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L4];"xxx";;;1)" office:value-type="string" office:string-value="1111" calcext:value-type="string"> + <text:p>1111</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="2222" calcext:value-type="string"> + <text:p>2222</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="3333" calcext:value-type="string"> + <text:p>3333</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>1111</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce13" office:value-type="string" calcext:value-type="string"> + <text:p>2222</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>3333</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce11"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A22]=[.E22])AND([.B22]=[.F22])AND([.C22]=[.G22])AND([.D22]=[.H22])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A22])" office:value-type="string" office:string-value="{=TEXTSPLIT(L4;"xxx";;;1)}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L4;"xxx";;;1)}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="2" table:number-matrix-rows-spanned="4" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L3]; ", "; "=";;;"")" office:value-type="string" office:string-value="Name" calcext:value-type="string"> + <text:p>Name</text:p> + </table:table-cell> + <table:table-cell> + <text:p/> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Name</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A23]=[.E23])AND([.B23]=[.F23])AND([.C23]=[.G23])AND([.D23]=[.H23])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A23])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=";;;"")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=";;;"")}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Aiden" calcext:value-type="string"> + <text:p>Aiden</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Score" calcext:value-type="string"> + <text:p>Score</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Aiden</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Score</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A24]=[.E24])AND([.B24]=[.F24])AND([.C24]=[.G24])AND([.D24]=[.H24])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A24])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=";;;"")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=";;;"")}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="93" calcext:value-type="string"> + <text:p>93</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Result" calcext:value-type="string"> + <text:p>Result</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>93</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Result</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A25]=[.E25])AND([.B25]=[.F25])AND([.C25]=[.G25])AND([.D25]=[.H25])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A25])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=";;;"")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=";;;"")}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Excellent" calcext:value-type="string"> + <text:p>Excellent</text:p> + </table:table-cell> + <table:table-cell> + <text:p/> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Excellent</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A26]=[.E26])AND([.B26]=[.F26])AND([.C26]=[.G26])AND([.D26]=[.H26])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A26])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=";;;"")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=";;;"")}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="2" table:number-matrix-rows-spanned="4" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L3]; ", "; "=";;;"Test")" office:value-type="string" office:string-value="Name" calcext:value-type="string"> + <text:p>Name</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Test" calcext:value-type="string"> + <text:p>Test</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Name</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Test</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A27]=[.E27])AND([.B27]=[.F27])AND([.C27]=[.G27])AND([.D27]=[.H27])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A27])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=";;;"Test")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=";;;"Test")}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Aiden" calcext:value-type="string"> + <text:p>Aiden</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Score" calcext:value-type="string"> + <text:p>Score</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Aiden</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Score</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A28]=[.E28])AND([.B28]=[.F28])AND([.C28]=[.G28])AND([.D28]=[.H28])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A28])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=";;;"Test")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=";;;"Test")}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="93" calcext:value-type="string"> + <text:p>93</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Result" calcext:value-type="string"> + <text:p>Result</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>93</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Result</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A29]=[.E29])AND([.B29]=[.F29])AND([.C29]=[.G29])AND([.D29]=[.H29])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A29])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=";;;"Test")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=";;;"Test")}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Excellent" calcext:value-type="string"> + <text:p>Excellent</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Test" calcext:value-type="string"> + <text:p>Test</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Excellent</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Test</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A30]=[.E30])AND([.B30]=[.F30])AND([.C30]=[.G30])AND([.D30]=[.H30])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A30])" office:value-type="string" office:string-value="{=TEXTSPLIT(L3; ", "; "=";;;"Test")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L3; ", "; "=";;;"Test")}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT(TEXT([.L6]; "m.d.yyyy"); ".")" office:value-type="string" office:string-value="1" calcext:value-type="string"> + <text:p>1</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="16" calcext:value-type="string"> + <text:p>16</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="2022" calcext:value-type="string"> + <text:p>2022</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>1</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce19" office:value-type="string" calcext:value-type="string"><text:p>1<text:span text:style-name="T1">6</text:span></text:p> + </table:table-cell> + <table:table-cell table:style-name="ce19" office:value-type="string" calcext:value-type="string"><text:p>2<text:span text:style-name="T1">022</text:span></text:p> + </table:table-cell> + <table:table-cell table:style-name="ce19"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A31]=[.E31])AND([.B31]=[.F31])AND([.C31]=[.G31])AND([.D31]=[.H31])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A31])" office:value-type="string" office:string-value="{=TEXTSPLIT(TEXT(L6; "m.d.yyyy"); ".")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(TEXT(L6; "m.d.yyyy"); ".")}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT("Apples,Lemons,Oranges";",")" office:value-type="string" office:string-value="Apples" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Lemons" calcext:value-type="string"> + <text:p>Lemons</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Oranges" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Apples</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Lemons</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Oranges</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A32]=[.E32])AND([.B32]=[.F32])AND([.C32]=[.G32])AND([.D32]=[.H32])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A32])" office:value-type="string" office:string-value="{=TEXTSPLIT("Apples,Lemons,Oranges";",")}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT("Apples,Lemons,Oranges";",")}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:style-name="ce9" table:number-matrix-columns-spanned="4" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L7]; {" ";", ";"Mr. ";"Ms. "};;TRUE())" office:value-type="string" office:string-value="Mia" calcext:value-type="string"> + <text:p>Mia</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Brown" calcext:value-type="string"> + <text:p>Brown</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="82" calcext:value-type="string"> + <text:p>82</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Good" calcext:value-type="string"> + <text:p>Good</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Mia</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Brown</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce19" office:value-type="string" calcext:value-type="string"><text:p>8<text:span text:style-name="T1">2</text:span></text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Good</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A33]=[.E33])AND([.B33]=[.F33])AND([.C33]=[.G33])AND([.D33]=[.H33])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A33])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; {" ".", "."Mr. "."Ms. "};;TRUE())}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; {" ".", "."Mr. "."Ms. "};;TRUE())}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:style-name="ce9" table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="4" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L7]; ;{" ";", ";"Mr. ";"Ms. "};TRUE())" office:value-type="string" office:string-value="Mia" calcext:value-type="string"> + <text:p>Mia</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Mia</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A34]=[.E34])AND([.B34]=[.F34])AND([.C34]=[.G34])AND([.D34]=[.H34])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A34])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "};TRUE())}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "};TRUE())}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:style-name="ce9" office:value-type="string" office:string-value="Brown" calcext:value-type="string"> + <text:p>Brown</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Brown</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A35]=[.E35])AND([.B35]=[.F35])AND([.C35]=[.G35])AND([.D35]=[.H35])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A35])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "};TRUE())}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "};TRUE())}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:style-name="ce9" office:value-type="string" office:string-value="82" calcext:value-type="string"> + <text:p>82</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce19" office:value-type="string" calcext:value-type="string"><text:p>8<text:span text:style-name="T1">2</text:span></text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A36]=[.E36])AND([.B36]=[.F36])AND([.C36]=[.G36])AND([.D36]=[.H36])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A36])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "};TRUE())}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "};TRUE())}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:style-name="ce9" office:value-type="string" office:string-value="Good" calcext:value-type="string"> + <text:p>Good</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Good</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A37]=[.E37])AND([.B37]=[.F37])AND([.C37]=[.G37])AND([.D37]=[.H37])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A37])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "};TRUE())}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "};TRUE())}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="5" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L7]; ;{" ";", ";"Mr. ";"Ms. "})"> + <text:p/> + </table:table-cell> + <table:table-cell table:number-columns-repeated="7"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A38]=[.E38])AND([.B38]=[.F38])AND([.C38]=[.G38])AND([.D38]=[.H38])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A38])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "})}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "})}</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="Default"/> + <table:table-cell/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Mia" calcext:value-type="string"> + <text:p>Mia</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce9"/> + <table:table-cell table:number-columns-repeated="2"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Mia</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A39]=[.E39])AND([.B39]=[.F39])AND([.C39]=[.G39])AND([.D39]=[.H39])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A39])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "})}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "})}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Brown" calcext:value-type="string"> + <text:p>Brown</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Brown</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A40]=[.E40])AND([.B40]=[.F40])AND([.C40]=[.G40])AND([.D40]=[.H40])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A40])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "})}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "})}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="82" calcext:value-type="string"> + <text:p>82</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce19" office:value-type="string" calcext:value-type="string"><text:p>8<text:span text:style-name="T1">2</text:span></text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A41]=[.E41])AND([.B41]=[.F41])AND([.C41]=[.G41])AND([.D41]=[.H41])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A41])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "})}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "})}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Good" calcext:value-type="string"> + <text:p>Good</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Good</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A42]=[.E42])AND([.B42]=[.F42])AND([.C42]=[.G42])AND([.D42]=[.H42])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A42])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "})}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;{" ".", "."Mr. "."Ms. "})}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L8];",";;TRUE())" office:value-type="string" office:string-value="One" calcext:value-type="string"> + <text:p>One</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce9" office:value-type="string" office:string-value="Two" calcext:value-type="string"> + <text:p>Two</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Three" calcext:value-type="string"> + <text:p>Three</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>One</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Two</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Three</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A43]=[.E43])AND([.B43]=[.F43])AND([.C43]=[.G43])AND([.D43]=[.H43])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A43])" office:value-type="string" office:string-value="{=TEXTSPLIT(L8;",";;TRUE())}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L8;",";;TRUE())}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="1" table:number-matrix-rows-spanned="5" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L7]; ;[.M2:.M5])"> + <text:p/> + </table:table-cell> + <table:table-cell table:number-columns-repeated="7"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A44]=[.E44])AND([.B44]=[.F44])AND([.C44]=[.G44])AND([.D44]=[.H44])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A44])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;M2:M5)}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;M2:M5)}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Mia" calcext:value-type="string"> + <text:p>Mia</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Mia</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A45]=[.E45])AND([.B45]=[.F45])AND([.C45]=[.G45])AND([.D45]=[.H45])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A45])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;M2:M5)}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;M2:M5)}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Brown" calcext:value-type="string"> + <text:p>Brown</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Brown</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A46]=[.E46])AND([.B46]=[.F46])AND([.C46]=[.G46])AND([.D46]=[.H46])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A46])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;M2:M5)}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;M2:M5)}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="82" calcext:value-type="string"> + <text:p>82</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce19" office:value-type="string" calcext:value-type="string"><text:p>8<text:span text:style-name="T1">2</text:span></text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A47]=[.E47])AND([.B47]=[.F47])AND([.C47]=[.G47])AND([.D47]=[.H47])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A47])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;M2:M5)}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;M2:M5)}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell office:value-type="string" office:string-value="Good" calcext:value-type="string"> + <text:p>Good</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Good</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A48]=[.E48])AND([.B48]=[.F48])AND([.C48]=[.G48])AND([.D48]=[.H48])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A48])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; ;M2:M5)}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; ;M2:M5)}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L9];"ÇÇÇ";;;1)" office:value-type="string" office:string-value="1111" calcext:value-type="string"> + <text:p>1111</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="2222" calcext:value-type="string"> + <text:p>2222</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="3333" calcext:value-type="string"> + <text:p>3333</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>1111</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce13" office:value-type="string" calcext:value-type="string"> + <text:p>2222</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>3333</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce11"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A49]=[.E49])AND([.B49]=[.F49])AND([.C49]=[.G49])AND([.D49]=[.H49])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A49])" office:value-type="string" office:string-value="{=TEXTSPLIT(L9;"ÇÇÇ";;;1)}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L9;"ÇÇÇ";;;1)}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="3" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L9];"ççç";;;1)" office:value-type="string" office:string-value="1111" calcext:value-type="string"> + <text:p>1111</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="2222" calcext:value-type="string"> + <text:p>2222</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="3333" calcext:value-type="string"> + <text:p>3333</text:p> + </table:table-cell> + <table:table-cell/> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>1111</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce13" office:value-type="string" calcext:value-type="string"> + <text:p>2222</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce11" office:value-type="string" calcext:value-type="string"> + <text:p>3333</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce11"/> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A50]=[.E50])AND([.B50]=[.F50])AND([.C50]=[.G50])AND([.D50]=[.H50])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A50])" office:value-type="string" office:string-value="{=TEXTSPLIT(L9;"ççç";;;1)}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L9;"ççç";;;1)}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-matrix-columns-spanned="4" table:number-matrix-rows-spanned="1" table:formula="of:=COM.MICROSOFT.TEXTSPLIT([.L7]; {" ";", ";"MR. ";"ms. "};;TRUE();1)" office:value-type="string" office:string-value="Mia" calcext:value-type="string"> + <text:p>Mia</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Brown" calcext:value-type="string"> + <text:p>Brown</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="82" calcext:value-type="string"> + <text:p>82</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" office:string-value="Good" calcext:value-type="string"> + <text:p>Good</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Mia</text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Brown</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce19" office:value-type="string" calcext:value-type="string"><text:p>8<text:span text:style-name="T1">2</text:span></text:p> + </table:table-cell> + <table:table-cell office:value-type="string" calcext:value-type="string"> + <text:p>Good</text:p> + </table:table-cell> + <table:table-cell table:style-name="ce29" table:formula="of:=([.A51]=[.E51])AND([.B51]=[.F51])AND([.C51]=[.G51])AND([.D51]=[.H51])" office:value-type="boolean" office:boolean-value="true" calcext:value-type="boolean"> + <text:p>VERDADERO</text:p> + </table:table-cell> + <table:table-cell table:formula="of:=FORMULA([.A51])" office:value-type="string" office:string-value="{=TEXTSPLIT(L7; {" ".", "."MR. "."ms. "};;TRUE();1)}" calcext:value-type="string"> + <text:p>{=TEXTSPLIT(L7; {" ".", "."MR. "."ms. "};;TRUE();1)}</text:p> + </table:table-cell> + <table:table-cell table:number-columns-repeated="3"/> + </table:table-row> + <table:table-row table:style-name="ro2" table:number-rows-repeated="4"> + <table:table-cell table:number-columns-repeated="8"/> + <table:table-cell table:style-name="ce29"/> + <table:table-cell table:number-columns-repeated="4"/> + </table:table-row> + <table:table-row table:style-name="ro2" table:number-rows-repeated="1048520"> + <table:table-cell table:number-columns-repeated="13"/> + </table:table-row> + <table:table-row table:style-name="ro2"> + <table:table-cell table:number-columns-repeated="13"/> + </table:table-row> + <calcext:conditional-formats> + <calcext:conditional-format calcext:target-range-address="Sheet2.I2:Sheet2.I55"> + <calcext:condition calcext:apply-style-name="Default" calcext:value="=""" calcext:base-cell-address="Sheet2.I2"/> + <calcext:condition calcext:apply-style-name="true" calcext:value="=1" calcext:base-cell-address="Sheet2.I2"/> + <calcext:condition calcext:apply-style-name="false" calcext:value="=0" calcext:base-cell-address="Sheet2.I2"/> + </calcext:conditional-format> + </calcext:conditional-formats> + </table:table> + <table:named-expressions/> + </office:spreadsheet> + </office:body> +</office:document> diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index 2e1c8fc40341..8ebef294b801 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -3125,6 +3125,7 @@ CPPUNIT_TEST_FIXTURE(Test, testFunctionLists) "SORTBY", "STYLE", "TAKE", + "TEXTSPLIT", "TOCOL", "TOROW", "UNIQUE", diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 231a42d52a4e..a1d3cb27431f 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -3502,7 +3502,9 @@ SCROW ScDocument::GetFirstEditTextRow( const ScRange& rRange ) const return -1; } -void ScDocument::SetTextCell( const ScAddress& rPos, const OUString& rStr ) + +void ScDocument::SetTextCell(const ScAddress& rPos, const OUString& rStr, + const ScSetStringParam* pParam) { if (ScTable* pTable = FetchTable(rPos.Tab())) { @@ -3514,9 +3516,14 @@ void ScDocument::SetTextCell( const ScAddress& rPos, const OUString& rStr ) } else { - ScSetStringParam aParam; - aParam.setTextInput(); - pTable->SetString(rPos.Col(), rPos.Row(), rPos.Tab(), rStr, &aParam); + if (pParam) + pTable->SetString(rPos.Col(), rPos.Row(), rPos.Tab(), rStr, pParam); + else + { + ScSetStringParam aParam; + aParam.setTextInput(); + pTable->SetString(rPos.Col(), rPos.Row(), rPos.Tab(), rStr, &aParam); + } } } } diff --git a/sc/source/core/data/funcdesc.cxx b/sc/source/core/data/funcdesc.cxx index 995f4dd76103..7a5bc437184e 100644 --- a/sc/source/core/data/funcdesc.cxx +++ b/sc/source/core/data/funcdesc.cxx @@ -466,7 +466,7 @@ ScFunctionList::ScFunctionList( bool bEnglishFunctionNames ) { SC_OPCODE_LOWER, ENTRY(SC_OPCODE_LOWER_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_KLEIN, 1, { 0 }, 0 }, { SC_OPCODE_LEN, ENTRY(SC_OPCODE_LEN_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LAENGE, 1, { 0 }, 0 }, { SC_OPCODE_T, ENTRY(SC_OPCODE_T_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_T, 1, { 0 }, 0 }, - { SC_OPCODE_VALUE, ENTRY(SC_OPCODE_VALUE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WERT, 1, { 0 }, 0 }, + { SC_OPCODE_VALUE, ENTRY(SC_OPCODE_VALUE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_VALUE, 1, { 0 }, 0 }, { SC_OPCODE_CLEAN, ENTRY(SC_OPCODE_CLEAN_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_SAEUBERN, 1, { 0 }, 0 }, { SC_OPCODE_CHAR, ENTRY(SC_OPCODE_CHAR_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ZEICHEN, 1, { 0 }, 0 }, { SC_OPCODE_LOG10, ENTRY(SC_OPCODE_LOG10_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_LOG10, 1, { 0 }, 0 }, @@ -800,6 +800,7 @@ ScFunctionList::ScFunctionList( bool bEnglishFunctionNames ) { SC_OPCODE_HSTACK, ENTRY(SC_OPCODE_HSTACK_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_HSTACK_MS, VAR_ARGS + 1, { 0, 0 }, 0 }, { SC_OPCODE_VSTACK, ENTRY(SC_OPCODE_VSTACK_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VSTACK_MS, VAR_ARGS + 1, { 0, 0 }, 0 }, { SC_OPCODE_TAKE, ENTRY(SC_OPCODE_TAKE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_TAKE_MS, 3, { 0, 1, 1 }, 0 }, + { SC_OPCODE_TEXTSPLIT, ENTRY(SC_OPCODE_TEXTSPLIT_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_TEXTSPLIT_MS, 6, { 0, 1, 1, 1, 1, 1 }, 0 }, { SC_OPCODE_TOCOL, ENTRY(SC_OPCODE_TOCOL_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_TOCOL_MS, 3, { 0, 1, 1 }, 0 }, { SC_OPCODE_TOROW, ENTRY(SC_OPCODE_TOROW_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_TOROW_MS, 3, { 0, 1, 1 }, 0 }, { SC_OPCODE_UNIQUE, ENTRY(SC_OPCODE_UNIQUE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_UNIQUE_MS, 3, { 0, 1, 1 }, 0 }, diff --git a/sc/source/core/data/patattr.cxx b/sc/source/core/data/patattr.cxx index 0e406b8c6cf8..2bbed442afb4 100644 --- a/sc/source/core/data/patattr.cxx +++ b/sc/source/core/data/patattr.cxx @@ -445,11 +445,8 @@ static bool StrCmp( const OUString* pStr1, const OUString* pStr2 ) { if (pStr1 == pStr2) return true; - if (pStr1 && !pStr2) - return false; - if (!pStr1 && pStr2) - return false; - assert(pStr1 && pStr2); + if (pStr1 == nullptr || pStr2 == nullptr) + return false; // one ptr is nullptr, not both, that would have triggered above return *pStr1 == *pStr2; } diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx index abeb868c45b2..218826b7ee18 100644 --- a/sc/source/core/inc/interpre.hxx +++ b/sc/source/core/inc/interpre.hxx @@ -736,6 +736,7 @@ private: void ScHStack(); void ScVStack(); void ScTake(); + void ScTextSplit(); void ScToCol(); void ScToRow(); void ScUnique(); diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 63aa0583e4a3..d668c24f5e07 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -9295,6 +9295,207 @@ void ScInterpreter::ScTake() ScTakeOrDrop(/*bTake*/ true); } + +static std::vector<OUString> lcl_SplitText(const OUString& rText, const std::vector<svl::SharedString>& rDelimiters, + bool bIgnoreEmpty, bool bMatchMode) +{ + std::vector<OUString> aResStr; + if (!rDelimiters.size() || rText.isEmpty()) + { + aResStr.push_back(rText); + } + else + { + const sal_Int32 nLength (rText.getLength()); + sal_Int32 nStart(0); + while (nStart < nLength) + { + sal_Int32 nIndex = nLength; + sal_Int32 nDelLength(0); + + // Find the first delimiter + for (auto& rDelimiter : rDelimiters) + { + if (rDelimiter.isEmpty()) + continue; + + OUString sDelimiter = rDelimiter.getString(); + sal_Int32 nDelimiterIndex; + if (bMatchMode) + { + nDelimiterIndex = ScGlobal::getCharClass().lowercase(rText).indexOf( + ScGlobal::getCharClass().lowercase(sDelimiter), nStart); + } + else + nDelimiterIndex = rText.indexOf(sDelimiter, nStart); + + if (nDelimiterIndex != -1 && nDelimiterIndex < nIndex) + { + nDelLength = sDelimiter.getLength(); + nIndex = nDelimiterIndex; + } + } + + OUString sRes(rText.copy(nStart, nIndex - nStart)); + if (!bIgnoreEmpty || !sRes.isEmpty()) + { + aResStr.push_back(sRes); + } + nStart = nIndex + nDelLength; + } + } + return aResStr; +} + +void ScInterpreter::ScTextSplit() +{ + sal_uInt8 nParamCount = GetByte(); + if (!MustHaveParamCount(nParamCount, 1, 6)) + return; + + // 6rd argument optional - pad_with + std::optional<svl::SharedString> aPadWith; + if (nParamCount == 6) + aPadWith = GetString(); + + // 5rd argument optional - match_mode + bool bMatchMode = false; + if (nParamCount >= 5) + { + if (!IsMissing()) + { + bMatchMode = GetBool(); + } + else + Pop(); + } + + // 4rd argument optional - ignore_empty + bool bIgnoreEmpty = false; + if (nParamCount >= 4) + { + if (!IsMissing()) + bIgnoreEmpty = GetBool(); + else + Pop(); + } + + // 3rd argument optional - row_delimiter + std::vector<svl::SharedString> aRowDelimiters; + if (nParamCount >= 3) + { + ScMatrixRef pMatSource = nullptr; + SCSIZE nsC = 0, nsR = 0; + switch (GetStackType()) + { + case svSingleRef: + case svDoubleRef: + case svMatrix: + case svExternalSingleRef: + case svExternalDoubleRef: + { + pMatSource = GetMatrix(); + if (!pMatSource) + { + PushIllegalParameter(); + return; + } + + pMatSource->GetDimensions(nsC, nsR); + for (SCSIZE i = 0; i < nsC; i++) + { + for (SCSIZE j = 0; j < nsR; j++) + { + aRowDelimiters.push_back(pMatSource->GetString(i,j)); + } + } + } + break; + + default: + aRowDelimiters.push_back(GetString()); + } + } + + // 2nd argument optional - col_delimiter + std::vector<svl::SharedString> aColDelimiters; + if (nParamCount >= 2) + { + ScMatrixRef pMatSource = nullptr; + SCSIZE nsC = 0, nsR = 0; + switch (GetStackType()) + { + case svSingleRef: + case svDoubleRef: + case svMatrix: + case svExternalSingleRef: + case svExternalDoubleRef: + { + pMatSource = GetMatrix(); + if (!pMatSource) + { + PushIllegalParameter(); + return; + } + + pMatSource->GetDimensions(nsC, nsR); + for (SCSIZE i = 0; i < nsC; i++) + { + for (SCSIZE j = 0; j < nsR; j++) + { + aColDelimiters.push_back(pMatSource->GetString(i,j)); + } + } + } + break; + + default: + aColDelimiters.push_back(GetString()); + } + } + + // 1st argument: text + svl::SharedString sText = GetString(); + if (sText.isEmpty()) + { + PushIllegalParameter(); + return; + } + + std::vector<OUString> aRowStrs = lcl_SplitText(sText.getString(), aRowDelimiters, bIgnoreEmpty, bMatchMode); + std::vector<std::vector<OUString>> aRes; + + SCSIZE nCols = 1; + SCSIZE nRows = aRowStrs.size(); + for (auto& rRow : aRowStrs) + { + std::vector<OUString> aColStrs = lcl_SplitText(rRow, aColDelimiters, bIgnoreEmpty, bMatchMode); + nCols = std::max(nCols, aColStrs.size()); + aRes.push_back(aColStrs); + } + + ScMatrixRef pResMat = GetNewMat(nCols, nRows, /*bEmpty*/true); + for (SCSIZE col = 0; col < nCols; ++col) + { + for (SCSIZE row = 0; row < nRows; ++row) + { + if (col < aRes[row].size()) + { + pResMat->PutString(mrStrPool.intern(aRes[row][col]), col, row); + } + else + { + if (!aPadWith.has_value()) + pResMat->PutError(FormulaError::NotAvailable, col, row); + else + pResMat->PutString(aPadWith.value(), col, row); + } + } + } + + PushMatrix(pResMat); +} + void ScInterpreter::ScToColOrRow(bool bCol) { sal_uInt8 nParamCount = GetByte(); diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index 3a996bd331f5..af2a60ef7eca 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -4130,6 +4130,7 @@ StackVar ScInterpreter::Interpret() case ocHStack : ScHStack(); break; case ocVStack : ScVStack(); break; case ocTake : ScTake(); break; + case ocTextSplit : ScTextSplit(); break; case ocToCol : ScToCol(); break; case ocToRow : ScToRow(); break; case ocUnique : ScUnique(); break; diff --git a/sc/source/core/tool/parclass.cxx b/sc/source/core/tool/parclass.cxx index 204c9a943f7d..7ea90ff0a23c 100644 --- a/sc/source/core/tool/parclass.cxx +++ b/sc/source/core/tool/parclass.cxx @@ -264,6 +264,7 @@ const ScParameterClassification::RawData ScParameterClassification::pRawData[] = { ocTake, {{ ReferenceOrRefArray, Value, Value, }, 0, ForceArrayReturn } }, { ocTTest, {{ ForceArray, ForceArray, Value, Value }, 0, Value }}, { ocTextJoin_MS, {{ Reference, Value, Reference }, 1, Value }}, + { ocTextSplit, {{ ReferenceOrRefArray, ReferenceOrRefArray, ReferenceOrRefArray, Value, Value, Value }, 0, ForceArrayReturn } }, { ocToCol, {{ ReferenceOrRefArray, Value, Value, }, 0, ForceArrayReturn } }, { ocToRow, {{ ReferenceOrRefArray, Value, Value, }, 0, ForceArrayReturn } }, { ocTrend, {{ Reference, Reference, Reference, Value }, 0, Value }}, diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index 75b1929f321d..d2d57372a91b 100644 --- a/sc/source/core/tool/token.cxx +++ b/sc/source/core/tool/token.cxx @@ -1598,6 +1598,7 @@ void ScTokenArray::CheckToken( const FormulaToken& r ) case ocHStack: case ocVStack: case ocTake: + case ocTextSplit: case ocToCol: case ocToRow: case ocUnique: diff --git a/sc/source/filter/excel/excdoc.cxx b/sc/source/filter/excel/excdoc.cxx index f62dfe0ace60..63f29d88aefc 100644 --- a/sc/source/filter/excel/excdoc.cxx +++ b/sc/source/filter/excel/excdoc.cxx @@ -844,7 +844,14 @@ void ExcDocument::WriteXml( XclExpXmlStream& rStrm ) sax_fastparser::FSHelperPtr& rWorkbook = rStrm.GetCurrentStream(); rWorkbook->startElement( XML_workbook, XML_xmlns, rStrm.getNamespaceURL(OOX_NS(xls)), - FSNS(XML_xmlns, XML_r), rStrm.getNamespaceURL(OOX_NS(officeRel)) ); + FSNS(XML_xmlns, XML_r), rStrm.getNamespaceURL(OOX_NS(officeRel)), + // the following are for chartex + FSNS(XML_xmlns, XML_mc), rStrm.getNamespaceURL(OOX_NS(mce)), + FSNS(XML_xmlns, XML_x15), rStrm.getNamespaceURL(OOX_NS(x15)), + FSNS(XML_xmlns, XML_xr), rStrm.getNamespaceURL(OOX_NS(xr)), + FSNS(XML_xmlns, XML_xr6), rStrm.getNamespaceURL(OOX_NS(xr6)), + FSNS(XML_xmlns, XML_xr10), rStrm.getNamespaceURL(OOX_NS(xr10)), + FSNS(XML_xmlns, XML_xr2), rStrm.getNamespaceURL(OOX_NS(xr2)) ); rWorkbook->singleElement( XML_fileVersion, XML_appName, "Calc" // OOXTODO: XML_codeName diff --git a/sc/source/filter/excel/xestream.cxx b/sc/source/filter/excel/xestream.cxx index b97720902f15..2dc780e35684 100644 --- a/sc/source/filter/excel/xestream.cxx +++ b/sc/source/filter/excel/xestream.cxx @@ -956,7 +956,9 @@ sax_fastparser::FSHelperPtr XclExpXmlStream::CreateOutputStream ( const uno::Reference< XOutputStream >& xParentRelation, const char* sContentType, const OUString& sRelationshipType, - OUString* pRelationshipId ) + OUString* pRelationshipId, + // if bNoHeader is true, don't create a header (<?xml... ) line + bool bNoHeader /* = false */ ) { OUString sRelationshipId; if (xParentRelation.is()) @@ -967,7 +969,8 @@ sax_fastparser::FSHelperPtr XclExpXmlStream::CreateOutputStream ( if( pRelationshipId ) *pRelationshipId = sRelationshipId; - sax_fastparser::FSHelperPtr p = openFragmentStreamWithSerializer( sFullStream, OUString::createFromAscii( sContentType ) ); + sax_fastparser::FSHelperPtr p = openFragmentStreamWithSerializer( + sFullStream, OUString::createFromAscii( sContentType ), bNoHeader ); maOpenedStreamMap[ sFullStream ] = std::make_pair( sRelationshipId, p ); diff --git a/sc/source/filter/excel/xlformula.cxx b/sc/source/filter/excel/xlformula.cxx index cbb211b19cd0..38d4c545ed58 100644 --- a/sc/source/filter/excel/xlformula.cxx +++ b/sc/source/filter/excel/xlformula.cxx @@ -626,6 +626,7 @@ const XclFunctionInfo saFuncTable_2024[] = EXC_FUNCENTRY_V_VR( ocHStack, 1, MX, 0, "HSTACK" ), EXC_FUNCENTRY_V_VR( ocVStack, 1, MX, 0, "VSTACK" ), EXC_FUNCENTRY_V_VR( ocTake, 1, 3, 0, "TAKE" ), + EXC_FUNCENTRY_V_VR( ocTextSplit, 1, 6, 0, "TEXTSPLIT" ), EXC_FUNCENTRY_V_VR( ocToCol, 1, 3, 0, "TOCOL" ), EXC_FUNCENTRY_V_VR( ocToRow, 1, 3, 0, "TOROW" ), EXC_FUNCENTRY_V_VR( ocWrapCols, 2, 3, 0, "WRAPCOLS"), diff --git a/sc/source/filter/inc/sheetdatabuffer.hxx b/sc/source/filter/inc/sheetdatabuffer.hxx index 538631330082..cf3dd2eeed7b 100644 --- a/sc/source/filter/inc/sheetdatabuffer.hxx +++ b/sc/source/filter/inc/sheetdatabuffer.hxx @@ -217,7 +217,7 @@ private: MergedRangeVector maMergedRanges; /// Merged cell ranges. MergedRangeVector maCenterFillRanges; /// Merged cell ranges from 'center across' or 'fill' alignment. bool mbPendingSharedFmla; /// True = maSharedFmlaAddr and maSharedBaseAddr are valid. - std::map< sal_Int32, std::vector< ValueRange > > maXfIdRowRangeList; /// Cached XF identifiers for a ranges of rows, we try and process rowranges with the same XF id together + std::vector< XfIdRowRange > maXfIdRowRangeList; /// row ranges with style ids }; } // namespace oox::xls diff --git a/sc/source/filter/inc/xestream.hxx b/sc/source/filter/inc/xestream.hxx index d0318848ecba..4da0e0b6067a 100644 --- a/sc/source/filter/inc/xestream.hxx +++ b/sc/source/filter/inc/xestream.hxx @@ -313,7 +313,9 @@ public: const css::uno::Reference< css::io::XOutputStream >& xParentRelation, const char* sContentType, const OUString& sRelationshipType, - OUString* pRelationshipId = nullptr ); + OUString* pRelationshipId = nullptr, + // if bNoHeader is true, don't create a header (<?xml... ) line + bool bNoHeader = false); // ignore virtual bool exportDocument() override; diff --git a/sc/source/filter/oox/formulabase.cxx b/sc/source/filter/oox/formulabase.cxx index d722b75a9837..6e37a663fdaa 100644 --- a/sc/source/filter/oox/formulabase.cxx +++ b/sc/source/filter/oox/formulabase.cxx @@ -901,6 +901,7 @@ const FunctionData saFuncTable2024[] = { "COM.MICROSOFT.HSTACK", "HSTACK", NOID, NOID, 1, MX, A, { VO }, FuncFlags::MACROCALL_NEW }, { "COM.MICROSOFT.VSTACK", "VSTACK", NOID, NOID, 1, MX, A, { VO }, FuncFlags::MACROCALL_NEW }, { "COM.MICROSOFT.TAKE", "TAKE", NOID, NOID, 1, 3, A, { VO }, FuncFlags::MACROCALL_NEW }, + { "COM.MICROSOFT.TEXTSPLIT", "TEXTSPLIT", NOID, NOID, 1, 6, A, { VO }, FuncFlags::MACROCALL_NEW }, { "COM.MICROSOFT.TOCOL", "TOCOL", NOID, NOID, 1, 3, A, { VO }, FuncFlags::MACROCALL_NEW }, { "COM.MICROSOFT.TOROW", "TOROW", NOID, NOID, 1, 3, A, { VO }, FuncFlags::MACROCALL_NEW }, { "COM.MICROSOFT.WRAPCOLS", "WRAPCOLS", NOID, NOID, 2, 3, A, { VO }, FuncFlags::MACROCALL_NEW }, diff --git a/sc/source/filter/oox/sheetdatabuffer.cxx b/sc/source/filter/oox/sheetdatabuffer.cxx index e9286d5f1523..5fa7f268e43a 100644 --- a/sc/source/filter/oox/sheetdatabuffer.cxx +++ b/sc/source/filter/oox/sheetdatabuffer.cxx @@ -281,15 +281,14 @@ void SheetDataBuffer::setRowFormat( sal_Int32 nRow, sal_Int32 nXfId, bool bCusto // try to expand cached row range, if formatting is equal if( (maXfIdRowRange.maRowRange.mnLast < 0) || !maXfIdRowRange.tryExpand( nRow, nXfId ) ) { - - maXfIdRowRangeList[ maXfIdRowRange.mnXfId ].push_back( maXfIdRowRange.maRowRange ); + maXfIdRowRangeList.push_back( maXfIdRowRange ); maXfIdRowRange.set( nRow, nXfId ); } } else if( maXfIdRowRange.maRowRange.mnLast >= 0 ) { // finish last cached row range - maXfIdRowRangeList[ maXfIdRowRange.mnXfId ].push_back( maXfIdRowRange.maRowRange ); + maXfIdRowRangeList.push_back( maXfIdRowRange ); maXfIdRowRange.set( -1, -1 ); } } @@ -376,75 +375,83 @@ void SheetDataBuffer::addColXfStyleProcessRowRanges() // count the number of row-range-styles we have AddressConverter& rAddrConv = getAddressConverter(); int cnt = 0; - for ( const auto& [nXfId, rRowRangeList] : maXfIdRowRangeList ) + for ( const auto& rRange : maXfIdRowRangeList ) { - if ( nXfId == -1 ) // it's a dud skip it + if ( rRange.mnXfId == -1 ) // it's a dud skip it continue; - cnt += rRowRangeList.size(); - } - // pre-allocate space in the sorted_vector - for ( sal_Int32 nCol = 0; nCol <= rAddrConv.getMaxApiAddress().Col(); ++nCol ) - { - RowStyles& rRowStyles = maStylesPerColumn[ nCol ]; - rRowStyles.reserve(rRowStyles.size() + cnt); + ++cnt; } + // sort the row ranges, so we spend less time moving data around + // when we insert into aStyleRows + std::sort(maXfIdRowRangeList.begin(), maXfIdRowRangeList.end(), + [](const XfIdRowRange& lhs, const XfIdRowRange& rhs) + { + return lhs.maRowRange.mnFirst < rhs.maRowRange.mnFirst; + }); const auto nMaxCol = rAddrConv.getMaxApiAddress().Col(); for ( sal_Int32 nCol = 0; nCol <= nMaxCol; ++nCol ) { RowStyles& rRowStyles = maStylesPerColumn[ nCol ]; - for ( auto& [nXfId, rRowRangeList] : maXfIdRowRangeList ) + TmpRowStyles aTempRowStyles; + aTempRowStyles.reserve(rRowStyles.size() + cnt); + RowStyles::const_iterator rows_it = rRowStyles.begin(); + // get all row ranges for id + for ( const auto& rRange : maXfIdRowRangeList ) { - if ( nXfId == -1 ) // it's a dud skip it + if ( rRange.mnXfId == -1 ) // it's a dud skip it continue; - // sort the row ranges, so we spend less time moving data around - // when we insert into aStyleRows - std::sort(rRowRangeList.begin(), rRowRangeList.end(), - [](const ValueRange& lhs, const ValueRange& rhs) - { - return lhs.mnFirst < rhs.mnFirst; - }); - // get all row ranges for id - for ( const auto& rRange : rRowRangeList ) + RowRangeStyle aStyleRows; + aStyleRows.mnNumFmt.first = rRange.mnXfId; + aStyleRows.mnNumFmt.second = -1; + + // Reset row range for each column + aStyleRows.mnStartRow = rRange.maRowRange.mnFirst; + aStyleRows.mnEndRow = rRange.maRowRange.mnLast; + + // If aStyleRows includes rows already allocated to a style + // in rRowStyles, then we need to split it into parts. + // ( to occupy only rows that have no style definition) + + // Start iterating at the first element that is not completely before aStyleRows + while (rows_it != rRowStyles.end() && rows_it->mnEndRow < aStyleRows.mnStartRow) { - RowRangeStyle aStyleRows; - aStyleRows.mnNumFmt.first = nXfId; - aStyleRows.mnNumFmt.second = -1; - - // Reset row range for each column - aStyleRows.mnStartRow = rRange.mnFirst; - aStyleRows.mnEndRow = rRange.mnLast; - - // If aStyleRows includes rows already allocated to a style - // in rRowStyles, then we need to split it into parts. - // ( to occupy only rows that have no style definition) - - // Start iterating at the first element that is not completely before aStyleRows - RowStyles::const_iterator rows_it = rRowStyles.lower_bound(aStyleRows); - bool bAddRange = true; - for ( ; rows_it != rRowStyles.end(); ++rows_it ) + aTempRowStyles.push_back(*rows_it); + ++rows_it; + } + bool bAddRange = true; + while ( rows_it != rRowStyles.end() ) + { + // Add the part of aStyleRows that does not overlap with r + if ( aStyleRows.mnStartRow < rows_it->mnStartRow ) + { + RowRangeStyle aSplit = aStyleRows; + aSplit.mnEndRow = std::min(aStyleRows.mnEndRow, rows_it->mnStartRow - 1); + aTempRowStyles.push_back(aSplit); + } + + // Done if no part of aStyleRows extends beyond r + if ( aStyleRows.mnEndRow <= rows_it->mnEndRow ) { - // Add the part of aStyleRows that does not overlap with r - if ( aStyleRows.mnStartRow < rows_it->mnStartRow ) - { - RowRangeStyle aSplit = aStyleRows; - aSplit.mnEndRow = std::min(aStyleRows.mnEndRow, rows_it->mnStartRow - 1); - rows_it = rRowStyles.insert( aSplit ).first; - } - - // Done if no part of aStyleRows extends beyond r - if ( aStyleRows.mnEndRow <= rows_it->mnEndRow ) - { - bAddRange = false; - break; - } - - // Cut off the part aStyleRows that was handled above - aStyleRows.mnStartRow = rows_it->mnEndRow + 1; + bAddRange = false; + break; } - if ( bAddRange ) - rRowStyles.insert( aStyleRows ); + + // Cut off the part aStyleRows that was handled above + aStyleRows.mnStartRow = rows_it->mnEndRow + 1; + + aTempRowStyles.push_back(*rows_it); + ++rows_it; } + if ( bAddRange ) + aTempRowStyles.push_back( aStyleRows ); + } + while ( rows_it != rRowStyles.end() ) + { + aTempRowStyles.push_back(*rows_it); + ++rows_it; } + rRowStyles.clear(); + rRowStyles.insert_sorted_unique_vector(std::move(aTempRowStyles)); } } @@ -472,7 +479,7 @@ void SheetDataBuffer::finalizeImport() finalizeTableOperation( rRange, rModel ); // write default formatting of remaining row range - maXfIdRowRangeList[ maXfIdRowRange.mnXfId ].push_back( maXfIdRowRange.maRowRange ); + maXfIdRowRangeList.push_back( maXfIdRowRange ); addColXfStyles(); diff --git a/sc/source/filter/oox/stylesbuffer.cxx b/sc/source/filter/oox/stylesbuffer.cxx index c3af8de44034..72ed6cd59882 100644 --- a/sc/source/filter/oox/stylesbuffer.cxx +++ b/sc/source/filter/oox/stylesbuffer.cxx @@ -2272,10 +2272,10 @@ void Xf::applyPatternToAttrList( AttrList& rAttrs, SCROW nRow1, SCROW nRow2, sal if (!pCachedPattern) rCache.add(nXfId, nNumFmtId, const_cast<ScPatternAttr*>(aEntry.getScPatternAttr())); - rAttrs.maAttrs.push_back(aEntry); - if (!rDocImport.isLatinScript(*aEntry.getScPatternAttr())) rAttrs.mbLatinNumFmtOnly = false; + + rAttrs.maAttrs.push_back(std::move(aEntry)); } void Xf::writeToDoc( ScDocumentImport& rDoc, const ScRange& rRange ) diff --git a/sc/source/filter/rtf/eeimpars.cxx b/sc/source/filter/rtf/eeimpars.cxx index 8b5b5b58dfb9..f7db07b14ff9 100644 --- a/sc/source/filter/rtf/eeimpars.cxx +++ b/sc/source/filter/rtf/eeimpars.cxx @@ -397,11 +397,6 @@ void ScEEImport::WriteToDocument( bool bSizeColsRows, double nOutputFactor, SvNu pFormatter->ChangeIntl( LANGUAGE_SYSTEM); } - // #105460#, #i4180# String cells can't contain tabs or linebreaks - // -> replace with spaces - aStr = aStr.replaceAll( "\t", " " ); - aStr = aStr.replaceAll( "\n", " " ); - if (bTextFormat) { aParam.mbDetectNumberFormat = false; @@ -414,7 +409,8 @@ void ScEEImport::WriteToDocument( bool bSizeColsRows, double nOutputFactor, SvNu aParam.mbDetectScientificNumberFormat = bConvertScientific; } - mpDoc->SetString(nCol, nRow, nTab, aStr, &aParam); + // tdf#117436 - set text cell to accommodate potential multiline cells + mpDoc->SetTextCell(ScAddress(nCol, nRow, nTab), aStr, &aParam); } } else if (std::unique_ptr<EditTextObject> pTextObject = IsValidSel(*mpEngine, pE->aSel) ? mpEngine->CreateTextObject(pE->aSel) : nullptr) diff --git a/sc/source/ui/app/drwtrans.cxx b/sc/source/ui/app/drwtrans.cxx index f4e3ca9fa10e..10d163e580c8 100644 --- a/sc/source/ui/app/drwtrans.cxx +++ b/sc/source/ui/app/drwtrans.cxx @@ -216,7 +216,8 @@ ScDrawTransferObj::~ScDrawTransferObj() SolarMutexGuard aSolarGuard; ScModule* pScMod = ScModule::get(); - if (pScMod && pScMod->GetDragData().pDrawTransfer == this) + const ScDragData* pDragData = pScMod ? pScMod->GetDragData() : nullptr; + if (pDragData && pDragData->pDrawTransfer == this) { OSL_FAIL("ScDrawTransferObj wasn't released"); pScMod->ResetDragObject(); @@ -569,7 +570,8 @@ void ScDrawTransferObj::DragFinished( sal_Int8 nDropAction ) } ScModule* pScMod = ScModule::get(); - if ( pScMod->GetDragData().pDrawTransfer == this ) + const ScDragData* pDragData = pScMod ? pScMod->GetDragData() : nullptr; + if (pDragData && pDragData->pDrawTransfer == this) pScMod->ResetDragObject(); m_pDragSourceView.reset(); diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx index e27ba3cd98f9..bfca56475ba6 100644 --- a/sc/source/ui/app/scmod.cxx +++ b/sc/source/ui/app/scmod.cxx @@ -623,16 +623,15 @@ void ScModule::ResetDragObject() } } -const ScDragData& ScModule::GetDragData() const +const ScDragData* ScModule::GetDragData() const { if (comphelper::LibreOfficeKit::isActive()) { ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell(); - assert(pViewShell); - return pViewShell->GetDragData(); + return pViewShell ? &pViewShell->GetDragData() : nullptr; } - else - return *m_pDragData; + + return m_pDragData.get(); } void ScModule::SetDragObject( ScTransferObj* pCellObj, ScDrawTransferObj* pDrawObj ) diff --git a/sc/source/ui/app/transobj.cxx b/sc/source/ui/app/transobj.cxx index afa196082728..26e34f945aae 100644 --- a/sc/source/ui/app/transobj.cxx +++ b/sc/source/ui/app/transobj.cxx @@ -180,9 +180,9 @@ ScTransferObj::~ScTransferObj() { SolarMutexGuard aSolarGuard; - bool bIsDisposing = comphelper::LibreOfficeKit::isActive() && !ScTabViewShell::GetActiveViewShell(); ScModule* pScMod = ScModule::get(); - if (pScMod && !bIsDisposing && pScMod->GetDragData().pCellTransfer == this) + const ScDragData* pDragData = pScMod ? pScMod->GetDragData() : nullptr; + if (pDragData && pDragData->pCellTransfer == this) { OSL_FAIL("ScTransferObj wasn't released"); pScMod->ResetDragObject(); @@ -602,7 +602,8 @@ void ScTransferObj::DragFinished( sal_Int8 nDropAction ) } ScModule* pScMod = ScModule::get(); - if ( pScMod && pScMod->GetDragData().pCellTransfer == this ) + const ScDragData* pDragData = pScMod ? pScMod->GetDragData() : nullptr; + if (pDragData && pDragData->pCellTransfer == this) pScMod->ResetDragObject(); m_xDragSourceRanges = nullptr; // don't keep source after dropping diff --git a/sc/source/ui/docshell/dbdocimp.cxx b/sc/source/ui/docshell/dbdocimp.cxx index 70616d9382b5..670433f28853 100644 --- a/sc/source/ui/docshell/dbdocimp.cxx +++ b/sc/source/ui/docshell/dbdocimp.cxx @@ -560,6 +560,10 @@ bool ScDBDocFunc::DoImport( SCTAB nTab, const ScImportParam& rParam, aNewMark, InsertDeleteFlags::CONTENTS ); } + + // tdf#117436 - adjust row height to accommodate potential multiline cells + rDoc.GetDocumentShell()->AdjustRowHeight(rParam.nRow1, nEndRow, nTab); + // update database range pDBData->SetImportParam( rParam ); pDBData->SetHeader( true ); diff --git a/sc/source/ui/inc/gridwin.hxx b/sc/source/ui/inc/gridwin.hxx index 4ca1f2337aaa..0e101f641fed 100644 --- a/sc/source/ui/inc/gridwin.hxx +++ b/sc/source/ui/inc/gridwin.hxx @@ -441,7 +441,6 @@ public: /// Draw content of the gridwindow; shared between the desktop and the tiled rendering. void DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableInfo, ScOutputData& aOutputData, bool bLogicText); - void DrawEditView(OutputDevice &rDevice, EditView *pEditView); void CreateAnchorHandle(SdrHdlList& rHdl, const ScAddress& rAddress); diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx index 69f87b16f737..2a6827b87b1a 100644 --- a/sc/source/ui/inc/tabview.hxx +++ b/sc/source/ui/inc/tabview.hxx @@ -124,6 +124,7 @@ private: ScHeaderFunctionSet aHdrFunc; std::unique_ptr<ScDrawView> pDrawView; + sdr::overlay::OverlayObjectList maTextEditOverlayGroup; Size aFrameSize; // passed on as for DoResize Point aBorderPos; @@ -529,6 +530,7 @@ public: void MakeEditView( ScEditEngineDefaulter* pEngine, SCCOL nCol, SCROW nRow ); void KillEditView( bool bNoPaint ); void UpdateEditView(); + void RefeshTextEditOverlay(); // Blocks diff --git a/sc/source/ui/view/drawview.cxx b/sc/source/ui/view/drawview.cxx index 462f71f820a3..69f65dd095d7 100644 --- a/sc/source/ui/view/drawview.cxx +++ b/sc/source/ui/view/drawview.cxx @@ -401,8 +401,9 @@ void ScDrawView::MarkListHasChanged() bSubShellSet = true; } else if (pObj->GetObjIdentifier() != SdrObjKind::Text // prevent switching to the drawing shell - || !pViewSh->IsDrawTextShell()) // when creating a text object @#70206# + && !pViewSh->IsDrawTextShell()) // when creating a text object @#70206# { + // tdf#166481: we only need to switch to draw shell if we have not already created a text shell for text edit mode pViewSh->SetDrawShell(true); } } diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index faaa9ba51c82..2bf7211e6467 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -4229,7 +4229,10 @@ sal_Int8 ScGridWindow::AcceptPrivateDrop( const AcceptDropEvent& rEvt, const ScD sal_Int8 ScGridWindow::AcceptDrop( const AcceptDropEvent& rEvt ) { - const ScDragData& rData = ScModule::get()->GetDragData(); + const ScDragData* pData = ScModule::get()->GetDragData(); + if (!pData) + return DND_ACTION_NONE; + const ScDragData& rData = *pData; if ( rEvt.mbLeaving ) { DrawMarkDropObj( nullptr ); @@ -4881,7 +4884,10 @@ sal_Int8 ScGridWindow::ExecuteDrop( const ExecuteDropEvent& rEvt ) DrawMarkDropObj( nullptr ); // drawing layer ScModule* pScMod = ScModule::get(); - const ScDragData& rData = pScMod->GetDragData(); + const ScDragData* pData = pScMod->GetDragData(); + if (!pData) + return DND_ACTION_NONE; + const ScDragData& rData = *pData; if (rData.pCellTransfer) return ExecutePrivateDrop( rEvt, rData ); @@ -6588,22 +6594,24 @@ void ScGridWindow::UpdateCursorOverlay() if (maVisibleRange.mnCol2 < nX || maVisibleRange.mnRow2 < nY) return; // no further check needed, nothing visible - // fdo#87382 Also display the cell cursor for the visible part of - // merged cells if the view position is part of merged cells. - const ScMergeAttr& rMerge = pPattern->GetItem(ATTR_MERGE); - if (rMerge.GetColMerge() <= 1 && rMerge.GetRowMerge() <= 1) - return; // not merged and invisible + if (pPattern) + { + // fdo#87382 Also display the cell cursor for the visible part of + // merged cells if the view position is part of merged cells. + const ScMergeAttr& rMerge = pPattern->GetItem(ATTR_MERGE); + if (rMerge.GetColMerge() <= 1 && rMerge.GetRowMerge() <= 1) + return; // not merged and invisible - SCCOL nX2 = nX + rMerge.GetColMerge() - 1; - SCROW nY2 = nY + rMerge.GetRowMerge() - 1; - // Check if the middle or tail of the merged range is visible. - if (maVisibleRange.mnCol1 > nX2 || maVisibleRange.mnRow1 > nY2) - return; // no visible part + SCCOL nX2 = nX + rMerge.GetColMerge() - 1; + SCROW nY2 = nY + rMerge.GetRowMerge() - 1; + // Check if the middle or tail of the merged range is visible. + if (maVisibleRange.mnCol1 > nX2 || maVisibleRange.mnRow1 > nY2) + return; // no visible part + } } // don't show the cursor in overlapped cells - const ScMergeFlagAttr& rMergeFlag = pPattern->GetItem(ATTR_MERGE_FLAG); - bool bOverlapped = rMergeFlag.IsOverlapped(); + const bool bOverlapped = pPattern && pPattern->GetItem(ATTR_MERGE_FLAG).IsOverlapped(); // left or above of the screen? bool bVis = comphelper::LibreOfficeKit::isActive() || ( nX>=mrViewData.GetPosX(eHWhich) && nY>=mrViewData.GetPosY(eVWhich) ); @@ -6611,11 +6619,14 @@ void ScGridWindow::UpdateCursorOverlay() { SCCOL nEndX = nX; SCROW nEndY = nY; - const ScMergeAttr& rMerge = pPattern->GetItem(ATTR_MERGE); - if (rMerge.GetColMerge() > 1) - nEndX += rMerge.GetColMerge()-1; - if (rMerge.GetRowMerge() > 1) - nEndY += rMerge.GetRowMerge()-1; + if (pPattern) + { + const ScMergeAttr& rMerge = pPattern->GetItem(ATTR_MERGE); + if (rMerge.GetColMerge() > 1) + nEndX += rMerge.GetColMerge()-1; + if (rMerge.GetRowMerge() > 1) + nEndY += rMerge.GetRowMerge()-1; + } bVis = ( nEndX>=mrViewData.GetPosX(eHWhich) && nEndY>=mrViewData.GetPosY(eVWhich) ); } diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx index 7b7d05a58779..9f36a061a849 100644 --- a/sc/source/ui/view/gridwin4.cxx +++ b/sc/source/ui/view/gridwin4.cxx @@ -33,6 +33,7 @@ #include <o3tl/unit_conversion.hxx> #include <osl/diagnose.h> #include <tools/UnitConversion.hxx> +#include <tools/weakbase.hxx> #include <LibreOfficeKit/LibreOfficeKitEnums.h> #include <comphelper/lok.hxx> @@ -665,43 +666,6 @@ Fraction GetZoom(const ScViewData& rViewData, int i) } } - -void ScGridWindow::DrawEditView(OutputDevice &rDevice, EditView *pEditView) -{ - SCCOL nCol1 = mrViewData.GetEditStartCol(); - SCROW nRow1 = mrViewData.GetEditStartRow(); - SCCOL nCol2 = mrViewData.GetEditEndCol(); - SCROW nRow2 = mrViewData.GetEditEndRow(); - - rDevice.SetLineColor(); - rDevice.SetFillColor(pEditView->GetBackgroundColor()); - Point aStart = mrViewData.GetScrPos( nCol1, nRow1, eWhich ); - Point aEnd = mrViewData.GetScrPos( nCol2+1, nRow2+1, eWhich ); - - // don't overwrite grid - bool bLayoutRTL = mrViewData.GetDocument().IsLayoutRTL(mrViewData.GetTabNo()); - tools::Long nLayoutSign = bLayoutRTL ? -1 : 1; - aEnd.AdjustX( -(2 * nLayoutSign) ); - aEnd.AdjustY( -2 ); - - // set the correct mapmode - tools::Rectangle aBackground(aStart, aEnd); - - // paint the background - rDevice.SetMapMode(mrViewData.GetLogicMode()); - - tools::Rectangle aLogicRect(rDevice.PixelToLogic(aBackground)); - //tdf#100925, rhbz#1283420, Draw some text here, to get - //X11CairoTextRender::getCairoContext called, so that the forced read - //from the underlying X Drawable gets it to sync. - rDevice.DrawText(aLogicRect.BottomLeft(), u" "_ustr); - rDevice.DrawRect(aLogicRect); - - // paint the editeng text - pEditView->Paint(rDevice.PixelToLogic(aEditRectangle), &rDevice); - rDevice.SetMapMode(MapMode(MapUnit::MapPixel)); -} - void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableInfo, ScOutputData& aOutputData, bool bLogicText) { @@ -1343,7 +1307,6 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI if (bInPlaceEditing && !bIsTiledRendering) { aEditRectangle = tools::Rectangle(Point(nScrX, nScrY), Size(aOutputData.GetScrW(), aOutputData.GetScrH())); - DrawEditView(rDevice, pEditView); if (bInPlaceVisCursor) pInPlaceCrsr->Show(); @@ -1435,7 +1398,7 @@ namespace class ScLOKProxyObjectContact final : public sdr::contact::ObjectContactOfPageView { private: - ScDrawView* mpScDrawView; + tools::WeakReference<ScDrawView> m_xScDrawView; public: explicit ScLOKProxyObjectContact( @@ -1443,7 +1406,7 @@ namespace SdrPageWindow& rPageWindow, const char* pDebugName) : ObjectContactOfPageView(rPageWindow, pDebugName), - mpScDrawView(pDrawView) + m_xScDrawView(pDrawView) { } @@ -1453,10 +1416,11 @@ namespace basegfx::B2DVector& rTarget, const sdr::contact::ViewObjectContact& rClient) const override { - if (!mpScDrawView) + ScDrawView* pScDrawView = m_xScDrawView.get(); + if (!pScDrawView) return; - SdrPageView* pPageView(mpScDrawView->GetSdrPageView()); + SdrPageView* pPageView(pScDrawView->GetSdrPageView()); if (!pPageView) return; diff --git a/sc/source/ui/view/tabcont.cxx b/sc/source/ui/view/tabcont.cxx index 4582900557f9..c33500a9a5df 100644 --- a/sc/source/ui/view/tabcont.cxx +++ b/sc/source/ui/view/tabcont.cxx @@ -541,15 +541,16 @@ sal_Int8 ScTabControl::ExecuteDrop( const ExecuteDropEvent& rEvt ) EndSwitchPage(); ScDocument& rDoc = rViewData.GetDocument(); - const ScDragData& rData = ScModule::get()->GetDragData(); - if ( rData.pCellTransfer && (rData.pCellTransfer->GetDragSourceFlags() & ScDragSrc::Table) && - rData.pCellTransfer->GetSourceDocument() == &rDoc ) + const ScDragData* pData = ScModule::get()->GetDragData(); + if ( pData && pData->pCellTransfer && + (pData->pCellTransfer->GetDragSourceFlags() & ScDragSrc::Table) && + pData->pCellTransfer->GetSourceDocument() == &rDoc ) { // moving of tables within the document SCTAB nPos = GetPrivatDropPos( rEvt.maPosPixel ); HideDropPos(); - if ( nPos == rData.pCellTransfer->GetVisibleTab() && rEvt.mnAction == DND_ACTION_MOVE ) + if ( nPos == pData->pCellTransfer->GetVisibleTab() && rEvt.mnAction == DND_ACTION_MOVE ) { // #i83005# do nothing - don't move to the same position // (too easily triggered unintentionally, and might take a long time in large documents) @@ -561,7 +562,7 @@ sal_Int8 ScTabControl::ExecuteDrop( const ExecuteDropEvent& rEvt ) //! use table selection from the tab control where dragging was started? rViewData.GetView()->MoveTable( lcl_DocShellNr(rDoc), nPos, rEvt.mnAction != DND_ACTION_MOVE ); - rData.pCellTransfer->SetDragWasInternal(); // don't delete + pData->pCellTransfer->SetDragWasInternal(); // don't delete return DND_ACTION_COPY; } } @@ -580,9 +581,10 @@ sal_Int8 ScTabControl::AcceptDrop( const AcceptDropEvent& rEvt ) } const ScDocument& rDoc = rViewData.GetDocument(); - const ScDragData& rData = ScModule::get()->GetDragData(); - if ( rData.pCellTransfer && (rData.pCellTransfer->GetDragSourceFlags() & ScDragSrc::Table) && - rData.pCellTransfer->GetSourceDocument() == &rDoc ) + const ScDragData* pData = ScModule::get()->GetDragData(); + if ( pData && pData->pCellTransfer && + (pData->pCellTransfer->GetDragSourceFlags() & ScDragSrc::Table) && + pData->pCellTransfer->GetSourceDocument() == &rDoc ) { // moving of tables within the document if ( !rDoc.GetChangeTrack() && rDoc.IsDocEditable() ) diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx index 652e6b5a244f..7a0691349684 100644 --- a/sc/source/ui/view/tabview.cxx +++ b/sc/source/ui/view/tabview.cxx @@ -2406,9 +2406,7 @@ void ScTabView::SetNewVisArea() if (bInPlaceVisCursor) pInPlaceCrsr->Hide(); - ScGridWindow *pGridWindow = GetViewData().GetActiveWin(); - pGridWindow->DrawEditView(*pGridWindow->GetOutDev(), pEditView); - pGridWindow->GetOutDev()->SetMapMode(GetViewData().GetLogicMode()); + RefeshTextEditOverlay(); if (bInPlaceVisCursor) pInPlaceCrsr->Show(); diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx index 6cc15283d272..c6a274d89c28 100644 --- a/sc/source/ui/view/tabview3.cxx +++ b/sc/source/ui/view/tabview3.cxx @@ -34,6 +34,14 @@ #include <sal/log.hxx> #include <osl/diagnose.h> +#include <basegfx/polygon/b2dpolygontools.hxx> +#include <drawinglayer/primitive2d/PolyPolygonRGBAPrimitive2D.hxx> +#include <drawinglayer/primitive2d/unifiedtransparenceprimitive2d.hxx> +#include <drawinglayer/primitive2d/modifiedcolorprimitive2d.hxx> +#include <drawinglayer/primitive2d/transformprimitive2d.hxx> +#include <svx/sdr/overlay/overlayselection.hxx> +#include <svtools/optionsdrawinglayer.hxx> + #include <IAnyRefDialog.hxx> #include <tabview.hxx> #include <tabvwsh.hxx> @@ -2189,7 +2197,354 @@ void ScTabView::OnLibreOfficeKitTabChanged() pThisViewShell->GetInputHandler()->UpdateLokReferenceMarks(); } -// paint functions - only for this View +// TextEditOverlayObject for TextOnOverlay TextEdit. It directly +// implements needed EditViewCallbacks and also hosts the +// OverlaySelection +namespace +{ +class ScTextEditOverlayObject : public sdr::overlay::OverlayObject, public EditViewCallbacks +{ + // the ScTabView the TextEdit is running at and the ScSplitPos to + // identify the associated data + ScTabView& mrScTabView; + ScSplitPos maScSplitPos; + + // this separate OverlayObject holds and creates the selection + // visualization, so it can be changed/refreshed without changing + // the Text or TextEditBackground + std::unique_ptr<sdr::overlay::OverlaySelection> mxOverlayTransparentSelection; + + // geometry creation for OverlayObject, in this case the extraction + // of edited Text from the setup EditEngine + virtual drawinglayer::primitive2d::Primitive2DContainer createOverlayObjectPrimitive2DSequence() override; + + // EditView overrides + virtual void EditViewInvalidate(const tools::Rectangle& rRect) override; + virtual void EditViewSelectionChange() override; + virtual OutputDevice& EditViewOutputDevice() const override; + virtual Point EditViewPointerPosPixel() const override; + virtual css::uno::Reference<css::datatransfer::clipboard::XClipboard> GetClipboard() const override; + virtual css::uno::Reference<css::datatransfer::dnd::XDropTarget> GetDropTarget() override; + virtual void EditViewInputContext(const InputContext& rInputContext) override; + virtual void EditViewCursorRect(const tools::Rectangle& rRect, int nExtTextInputWidth) override; + +public: + // create using system selection color & ScTabView + ScTextEditOverlayObject( + const Color& rColor, + ScTabView& rScTabView, + ScSplitPos aScSplitPos); + virtual ~ScTextEditOverlayObject() override; + + // override to mix in TextEditBackground and the Text transformed + // as needed + virtual drawinglayer::primitive2d::Primitive2DContainer getOverlayObjectPrimitive2DSequence() const override; + + // access to OverlaySelection to add to OverlayManager + sdr::overlay::OverlayObject* getOverlaySelection() + { + return mxOverlayTransparentSelection.get(); + } + + void RefeshTextEditOverlay() + { + // currently just deletes all created stuff, this may + // be fine-tuned later if needed + objectChange(); + } +}; + +ScTextEditOverlayObject::ScTextEditOverlayObject( + const Color& rColor, + ScTabView& rScTabView, + ScSplitPos aScSplitPos) +: OverlayObject(rColor) +, mrScTabView(rScTabView) +, maScSplitPos(aScSplitPos) +{ + // no AA for TextEdit overlay + allowAntiAliase(false); + + // establish EditViewCallbacks + const ScViewData& rScViewData(mrScTabView.GetViewData()); + EditView* pEditView(rScViewData.GetEditView(maScSplitPos)); + DBG_ASSERT(nullptr != pEditView, "NO access to EditView in ScTextEditOverlayObject!"); + pEditView->setEditViewCallbacks(this); + + // initialize empty OverlaySelection + std::vector<basegfx::B2DRange> aEmptySelection{}; + mxOverlayTransparentSelection.reset(new sdr::overlay::OverlaySelection( + sdr::overlay::OverlayType::Transparent, rColor, std::move(aEmptySelection), true)); +} + +ScTextEditOverlayObject::~ScTextEditOverlayObject() +{ + // delete OverlaySelection - this will also remove itself from + // OverlayManager already + mxOverlayTransparentSelection.reset(); + + // shutdown EditViewCallbacks + const ScViewData& rScViewData(mrScTabView.GetViewData()); + EditView* pEditView(rScViewData.GetEditView(maScSplitPos)); + DBG_ASSERT(nullptr != pEditView, "NO access to EditView in ScTextEditOverlayObject!"); + pEditView->setEditViewCallbacks(nullptr); + + // remove myself + if (getOverlayManager()) + getOverlayManager()->remove(*this); +} + +drawinglayer::primitive2d::Primitive2DContainer ScTextEditOverlayObject::createOverlayObjectPrimitive2DSequence() +{ + // extract primitive representation from active EditEngine + drawinglayer::primitive2d::Primitive2DContainer aRetval; + + ScViewData& rScViewData(mrScTabView.GetViewData()); + const EditView* pEditView(rScViewData.GetEditView(maScSplitPos)); + assert(pEditView && "NO access to EditView in ScTextEditOverlayObject!"); + + // use no transformations. The result will be in logic coordinates + // based on aEditRectangle and the EditEngine setup, see + // ScViewData::SetEditEngine + basegfx::B2DHomMatrix aNewTransformA; + basegfx::B2DHomMatrix aNewTransformB; + + // get text data in LogicMode + OutputDevice& rOutDev(pEditView->GetOutputDevice()); + const MapMode aOrig(rOutDev.GetMapMode()); + rOutDev.SetMapMode(rScViewData.GetLogicMode()); + + pEditView->getEditEngine().StripPortions( + [&aRetval, &aNewTransformA, &aNewTransformB](const DrawPortionInfo& rInfo){ + CreateTextPortionPrimitivesFromDrawPortionInfo( + aRetval, + aNewTransformA, + aNewTransformB, + rInfo); + }, + [&aRetval, &aNewTransformA, &aNewTransformB](const DrawBulletInfo& rInfo){ + CreateDrawBulletPrimitivesFromDrawBulletInfo( + aRetval, + aNewTransformA, + aNewTransformB, + rInfo); + }); + + rOutDev.SetMapMode(aOrig); + return aRetval; +} + +void ScTextEditOverlayObject::EditViewInvalidate(const tools::Rectangle& rRect) +{ + if (comphelper::LibreOfficeKit::isActive()) + { + // UT testPageDownInvalidation from CppunitTest_sc_tiledrendering + // *needs* the direct invalidates formerly done in + // EditView::InvalidateWindow when no EditViewCallbacks are set + ScGridWindow* pActiveWin(static_cast<ScGridWindow*>(mrScTabView.GetWindowByPos(maScSplitPos))); + pActiveWin->Invalidate(rRect); + } + + RefeshTextEditOverlay(); +} + +void ScTextEditOverlayObject::EditViewSelectionChange() +{ + ScViewData& rScViewData(mrScTabView.GetViewData()); + EditView* pEditView(rScViewData.GetEditView(maScSplitPos)); + assert(pEditView && "NO access to EditView in ScTextEditOverlayObject!"); + + // get the selection rectangles + std::vector<tools::Rectangle> aRects; + pEditView->GetSelectionRectangles(aRects); + std::vector<basegfx::B2DRange> aLogicRanges; + + if (aRects.empty()) + { + // if none, reset selection at OverlayObject and we are done + mxOverlayTransparentSelection->setRanges(std::move(aLogicRanges)); + return; + } + + // create needed transformations + // LogicMode -> DiscreteViewCoordinates (Pixels) + basegfx::B2DHomMatrix aTransformToPixels; + OutputDevice& rOutDev(pEditView->GetOutputDevice()); + const MapMode aOrig(rOutDev.GetMapMode()); + rOutDev.SetMapMode(rScViewData.GetLogicMode()); + aTransformToPixels = rOutDev.GetViewTransformation(); + + // DiscreteViewCoordinates (Pixels) -> LogicDrawCoordinates + basegfx::B2DHomMatrix aTransformToDrawCoordinates; + ScGridWindow* pActiveWin(static_cast<ScGridWindow*>(mrScTabView.GetWindowByPos(maScSplitPos))); + rOutDev.SetMapMode(pActiveWin->GetDrawMapMode()); + aTransformToDrawCoordinates = rOutDev.GetInverseViewTransformation(); + rOutDev.SetMapMode(aOrig); + + for (const auto& aRect : aRects) + { + basegfx::B2DRange aRange(aRect.Left(), aRect.Top(), aRect.Right(), aRect.Bottom()); + + // range to pixels + aRange.transform(aTransformToPixels); + + // grow by 1px for slight distance/overlap + aRange.grow(1.0); + + // to drawinglayer coordinates & add + aRange.transform(aTransformToDrawCoordinates); + aLogicRanges.emplace_back(aRange); + } + + mxOverlayTransparentSelection->setRanges(std::move(aLogicRanges)); +} + +OutputDevice& ScTextEditOverlayObject::EditViewOutputDevice() const +{ + ScGridWindow* pActiveWin(static_cast<ScGridWindow*>(mrScTabView.GetWindowByPos(maScSplitPos))); + return *pActiveWin->GetOutDev(); +} + +Point ScTextEditOverlayObject::EditViewPointerPosPixel() const +{ + ScGridWindow* pActiveWin(static_cast<ScGridWindow*>(mrScTabView.GetWindowByPos(maScSplitPos))); + return pActiveWin->GetPointerPosPixel(); +} + +css::uno::Reference<css::datatransfer::clipboard::XClipboard> ScTextEditOverlayObject::GetClipboard() const +{ + ScGridWindow* pActiveWin(static_cast<ScGridWindow*>(mrScTabView.GetWindowByPos(maScSplitPos))); + return pActiveWin->GetClipboard(); +} + +css::uno::Reference<css::datatransfer::dnd::XDropTarget> ScTextEditOverlayObject::GetDropTarget() +{ + ScGridWindow* pActiveWin(static_cast<ScGridWindow*>(mrScTabView.GetWindowByPos(maScSplitPos))); + return pActiveWin->GetDropTarget(); +} + +void ScTextEditOverlayObject::EditViewInputContext(const InputContext& rInputContext) +{ + ScGridWindow* pActiveWin(static_cast<ScGridWindow*>(mrScTabView.GetWindowByPos(maScSplitPos))); + pActiveWin->SetInputContext(rInputContext); +} + +void ScTextEditOverlayObject::EditViewCursorRect(const tools::Rectangle& rRect, int nExtTextInputWidth) +{ + ScGridWindow* pActiveWin(static_cast<ScGridWindow*>(mrScTabView.GetWindowByPos(maScSplitPos))); + pActiveWin->SetCursorRect(&rRect, nExtTextInputWidth); +} + +drawinglayer::primitive2d::Primitive2DContainer ScTextEditOverlayObject::getOverlayObjectPrimitive2DSequence() const +{ + drawinglayer::primitive2d::Primitive2DContainer aRetval; + + + ScViewData& rScViewData(mrScTabView.GetViewData()); + EditView* pEditView(rScViewData.GetEditView(maScSplitPos)); + assert(pEditView && "NO access to EditView in ScTextEditOverlayObject!"); + + // call base implementation to get TextPrimitives in logic coordinates + // directly from the setup EditEngine + drawinglayer::primitive2d::Primitive2DContainer aText( + OverlayObject::getOverlayObjectPrimitive2DSequence()); + + if (aText.empty()) + // no Text, done, return result + return aRetval; + + // remember MapMode and restore at exit - we do not want + // to change it outside this method + OutputDevice& rOutDev(pEditView->GetOutputDevice()); + const MapMode aOrig(rOutDev.GetMapMode()); + + // create text edit background based on pixel coordinates + // of involved Cells and append + { + const SCCOL nCol1(rScViewData.GetEditStartCol()); + const SCROW nRow1(rScViewData.GetEditStartRow()); + const SCCOL nCol2(rScViewData.GetEditEndCol()); + const SCROW nRow2(rScViewData.GetEditEndRow()); + const Point aStart(rScViewData.GetScrPos(nCol1, nRow1, maScSplitPos)); + const Point aEnd(rScViewData.GetScrPos(nCol2+1, nRow2+1, maScSplitPos)); + + if (aStart != aEnd) + { + basegfx::B2DPolyPolygon aOutline(basegfx::utils::createPolygonFromRect( + basegfx::B2DRange( + aStart.X(), aStart.Y(), + aEnd.X(), aEnd.Y()))); + + // transform from Pixels to LogicDrawCoordinates + ScGridWindow* pActiveWin(static_cast<ScGridWindow*>(mrScTabView.GetWindowByPos(maScSplitPos))); + rOutDev.SetMapMode(pActiveWin->GetDrawMapMode()); + aOutline.transform(rOutDev.GetInverseViewTransformation()); + + // on overlay we can now design the look more freely, it + // uses the CellBackgroundColor combined with 50% transparence + // to not completely hide what may be behind. + // Also currently no need to shrink by 2px (?) right/bottom + // to not kill cell separation lines - may have to be re-added + // when transparency is not wanted + aRetval.push_back( + rtl::Reference<drawinglayer::primitive2d::PolyPolygonRGBAPrimitive2D>( + new drawinglayer::primitive2d::PolyPolygonRGBAPrimitive2D( + aOutline, + pEditView->GetBackgroundColor().getBColor(), + 0.5))); + } + } + + // create embedding transformation for Text itself and + // append Text + { + basegfx::B2DHomMatrix aTransform; + + // transform by TextPaint StartPosition (Top-Left). This corresponds + // to aEditRectangle and the EditEngine setup, see + // ScViewData::SetEditEngine. Offset is in LogicCoordinates/LogicMode + const Point aStartPosition(pEditView->CalculateTextPaintStartPosition()); + aTransform.translate(aStartPosition.X(), aStartPosition.Y()); + + // LogicMode -> DiscreteViewCoordinates (Pixels) + rOutDev.SetMapMode(rScViewData.GetLogicMode()); + aTransform *= rOutDev.GetViewTransformation(); + + // DiscreteViewCoordinates (Pixels) -> LogicDrawCoordinates + ScGridWindow* pActiveWin(static_cast<ScGridWindow*>(mrScTabView.GetWindowByPos(maScSplitPos))); + rOutDev.SetMapMode(pActiveWin->GetDrawMapMode()); + aTransform *= rOutDev.GetInverseViewTransformation(); + + // add text embedded to created transformation + aRetval.push_back(rtl::Reference<drawinglayer::primitive2d::TransformPrimitive2D>( + new drawinglayer::primitive2d::TransformPrimitive2D( + aTransform, std::move(aText)))); + } + + rOutDev.SetMapMode(aOrig); + return aRetval; +} +} // end of anonymous namespace + +void ScTabView::RefeshTextEditOverlay() +{ + // find the ScTextEditOverlayObject in the OverlayGroup and + // call refresh there. It is also possible to have separate + // holders of that data, so no find/identification would be + // needed, but having all associated OverlayObjects in one + // group makes handling simple(r). It may also be that the + // cursor visualization will be added to that group later + for (sal_uInt32 a(0); a < maTextEditOverlayGroup.count(); a++) + { + sdr::overlay::OverlayObject& rOverlayObject(maTextEditOverlayGroup.getOverlayObject(a)); + ScTextEditOverlayObject* pScTextEditOverlayObject(dynamic_cast<ScTextEditOverlayObject*>(&rOverlayObject)); + + if (nullptr != pScTextEditOverlayObject) + { + pScTextEditOverlayObject->RefeshTextEditOverlay(); + } + } +} void ScTabView::MakeEditView( ScEditEngineDefaulter* pEngine, SCCOL nCol, SCROW nRow ) { @@ -2204,8 +2559,9 @@ void ScTabView::MakeEditView( ScEditEngineDefaulter* pEngine, SCCOL nCol, SCROW { if (pGridWin[i] && pGridWin[i]->IsVisible() && !aViewData.HasEditView(ScSplitPos(i))) { - ScHSplitPos eHWhich = WhichH( static_cast<ScSplitPos>(i) ); - ScVSplitPos eVWhich = WhichV( static_cast<ScSplitPos>(i) ); + const ScSplitPos aScSplitPos(static_cast<ScSplitPos>(i)); + ScHSplitPos eHWhich = WhichH(aScSplitPos); + ScVSplitPos eVWhich = WhichV(aScSplitPos); SCCOL nScrX = aViewData.GetPosX( eHWhich ); SCROW nScrY = aViewData.GetPosY( eVWhich ); @@ -2217,39 +2573,47 @@ void ScTabView::MakeEditView( ScEditEngineDefaulter* pEngine, SCCOL nCol, SCROW // so input isn't lost (and the edit view may be scrolled into the visible area) // #i26433# during spelling, the spelling view must be active - if ( bPosVisible || aViewData.GetActivePart() == static_cast<ScSplitPos>(i) || - ( pSpellingView && aViewData.GetEditView(static_cast<ScSplitPos>(i)) == pSpellingView ) ) + if ( bPosVisible || aViewData.GetActivePart() == aScSplitPos || + ( pSpellingView && aViewData.GetEditView(aScSplitPos) == pSpellingView ) ) { - pGridWin[i]->HideCursor(); - - pGridWin[i]->DeleteCursorOverlay(); - pGridWin[i]->DeleteAutoFillOverlay(); - pGridWin[i]->DeleteCopySourceOverlay(); - - // tdf#165621 allow the Overlay to quickly update, necessary - // for clean graphical refreshes - // NOTE: This also works using Application::Reschedule(true), but - // triggers CppunitTest_desktop_lib "DesktopLOKTest::testRedlineCalc", - // probably due to not only the timer triggering but 'other' stuff - // that better runs later (...?). Not doing it - as long as we need - // to do it - is safer, but forces to keep that flush just for this - // single usage - rtl::Reference<sdr::overlay::OverlayManager> xOverlayManager = pGridWin[i]->getOverlayManager(); - if (xOverlayManager.is()) - xOverlayManager->flush(); + VclPtr<ScGridWindow> pScGridWindow(pGridWin[aScSplitPos]); + pScGridWindow->HideCursor(); + pScGridWindow->DeleteCursorOverlay(); + pScGridWindow->DeleteAutoFillOverlay(); + pScGridWindow->DeleteCopySourceOverlay(); // MapMode must be set after HideCursor - pGridWin[i]->SetMapMode(aViewData.GetLogicMode()); + pScGridWindow->SetMapMode(aViewData.GetLogicMode()); if ( !bPosVisible ) { // move the edit view area to the real (possibly negative) position, // or hide if completely above or left of the window - pGridWin[i]->UpdateEditViewPos(); + pScGridWindow->UpdateEditViewPos(); } - aViewData.SetEditEngine(static_cast<ScSplitPos>(i), pEngine, pGridWin[i], nCol, + aViewData.SetEditEngine(aScSplitPos, pEngine, pScGridWindow, nCol, nRow); + + // get OverlayManager and initialize TextEditOnOverlay for it + rtl::Reference<sdr::overlay::OverlayManager> xOverlayManager = pScGridWindow->getOverlayManager(); + + if (xOverlayManager.is() && aViewData.HasEditView(aScSplitPos)) + { + const Color aHilightColor(SvtOptionsDrawinglayer::getHilightColor()); + std::unique_ptr<ScTextEditOverlayObject> pNewScTextEditOverlayObject( + new ScTextEditOverlayObject( + aHilightColor, + *this, + aScSplitPos)); + + // add TextEditOverlayObject and the OverlaySelection hosted by it + // to the OverlayManager (to make visible) and to the local + // reference TextEditOverlayGroup (to access if needed) + xOverlayManager->add(*pNewScTextEditOverlayObject); + xOverlayManager->add(*pNewScTextEditOverlayObject->getOverlaySelection()); + maTextEditOverlayGroup.append(std::move(pNewScTextEditOverlayObject)); + } } } } @@ -2282,6 +2646,8 @@ void ScTabView::UpdateEditView() pEditView->ShowCursor( false ); } } + + RefeshTextEditOverlay(); } void ScTabView::KillEditView( bool bNoPaint ) @@ -2312,6 +2678,10 @@ void ScTabView::KillEditView( bool bNoPaint ) } } + // this cleans up all used OverlayObjects for TextEdit, they get deleted + // and removed from the OverlayManager what makes them optically disappear + maTextEditOverlayGroup.clear(); + // notify accessibility before all things happen if (bNotifyAcc && aViewData.GetViewShell()->HasAccessibilityObjects()) aViewData.GetViewShell()->BroadcastAccessibility(SfxHint(SfxHintId::ScAccLeaveEditMode)); diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx index 380b9d0b0cc0..469aaeacc5a2 100644 --- a/sc/source/ui/view/viewdata.cxx +++ b/sc/source/ui/view/viewdata.cxx @@ -1867,8 +1867,13 @@ void ScViewData::SetEditEngine( ScSplitPos eWhich, } pEditView[eWhich]->SetBackgroundColor( aBackCol ); - pEditView[eWhich]->Invalidate(); // needed? - // needed, if position changed + if (comphelper::LibreOfficeKit::isActive()) + { + // now only needed when not CEOO (CellEditOnOverlay) + // needed? + // needed, if position changed + pEditView[eWhich]->Invalidate(); + } } IMPL_LINK( ScViewData, EditEngineHdl, EditStatus&, rStatus, void ) @@ -1942,6 +1947,11 @@ void ScViewData::EditGrowX() // get bGrow... variables the same way as in SetEditEngine const ScPatternAttr* pPattern = rLocalDoc.GetPattern( nEditCol, nEditRow, nTabNo ); + if (!pPattern) + { + SAL_WARN("sc.viewdata", "No Pattern Found for: Col: " << nEditCol << ", Row: " << nEditRow << ", Tab: " << nTabNo); + pPattern = &rLocalDoc.getCellAttributeHelper().getDefaultCellAttribute(); + } SvxCellHorJustify eJust = pPattern->GetItem( ATTR_HOR_JUSTIFY ).GetValue(); bool bGrowCentered = ( eJust == SvxCellHorJustify::Center ); bool bGrowToLeft = ( eJust == SvxCellHorJustify::Right ); // visual left diff --git a/sc/source/ui/view/viewfun7.cxx b/sc/source/ui/view/viewfun7.cxx index 697ba07cc1af..87b25b9dc8eb 100644 --- a/sc/source/ui/view/viewfun7.cxx +++ b/sc/source/ui/view/viewfun7.cxx @@ -92,8 +92,8 @@ void ScViewFunc::PasteDraw( const Point& rLogicPos, SdrModel* pModel, bool bNegativePage = GetViewData().GetDocument().IsNegativePage( GetViewData().GetTabNo() ); SdrView* pDragEditView = nullptr; - const ScDragData& rData = ScModule::get()->GetDragData(); - ScDrawTransferObj* pDrawTrans = rData.pDrawTransfer; + const ScDragData* pData = ScModule::get()->GetDragData(); + ScDrawTransferObj* pDrawTrans = pData ? pData->pDrawTransfer : nullptr; if (pDrawTrans) { pDragEditView = pDrawTrans->GetDragSourceView(); diff --git a/sc/source/ui/xmlsource/xmlsourcedlg.cxx b/sc/source/ui/xmlsource/xmlsourcedlg.cxx index 17cc4b928baa..65047b7e0e4b 100644 --- a/sc/source/ui/xmlsource/xmlsourcedlg.cxx +++ b/sc/source/ui/xmlsource/xmlsourcedlg.cxx @@ -164,20 +164,19 @@ void ScXMLSourceDlg::SelectSourceFile() FileDialogFlags::NONE, m_xDialog.get()); aDlgHelper.SetContext(sfx2::FileDialogHelper::CalcXMLSource); - uno::Reference<ui::dialogs::XFilePicker3> xFilePicker = aDlgHelper.GetFilePicker(); - // Use the directory of current source file. INetURLObject aURL(maSrcPath); aURL.removeSegment(); aURL.removeFinalSlash(); OUString aPath = aURL.GetMainURL(INetURLObject::DecodeMechanism::NONE); - xFilePicker->setDisplayDirectory(aPath); - if (xFilePicker->execute() != ui::dialogs::ExecutableDialogResults::OK) + if (!aPath.isEmpty()) + aDlgHelper.SetDisplayFolder(aPath); + if (aDlgHelper.Execute() != ERRCODE_NONE) // File picker dialog cancelled. return; - uno::Sequence<OUString> aFiles = xFilePicker->getSelectedFiles(); + uno::Sequence<OUString> aFiles = aDlgHelper.GetSelectedFiles(); if (!aFiles.hasElements()) return; |