/usr/lib/python2.6/site-packages/tablib/packages/odf3
NameSizeModeActions
anim.py18720644editdlrm
anim.pyc27240644editdlrm
attrconverters.py682100644editdlrm
attrconverters.pyc573550644editdlrm
chart.py26360644editdlrm
chart.pyc46240644editdlrm
config.py14200644editdlrm
config.pyc13910644editdlrm
dc.py22250644editdlrm
dc.pyc14640644editdlrm
dr3d.py14480644editdlrm
dr3d.pyc15240644editdlrm
draw.py55900644editdlrm
draw.pyc103430644editdlrm
easyliststyle.py37730644editdlrm
easyliststyle.pyc23120644editdlrm
element.py204730755editdlrm
element.pyc222500644editdlrm
elementtypes.py99330755editdlrm
elementtypes.pyc87290644editdlrm
form.py32700644editdlrm
form.pyc63900644editdlrm
grammar.py1933880644editdlrm
grammar.pyc1064580644editdlrm
load.py39630755editdlrm
load.pyc34090644editdlrm
manifest.py13890755editdlrm
manifest.pyc13440644editdlrm
math.py10680644editdlrm
math.pyc4590644editdlrm
meta.py21380644editdlrm
meta.pyc32430644editdlrm
namespaces.py39430644editdlrm
namespaces.pyc33140644editdlrm
number.py31370644editdlrm
number.pyc57430644editdlrm
odf2moinmoin.py181920644editdlrm
odf2moinmoin.pyc187740644editdlrm
odf2xhtml.py650580755editdlrm
odf2xhtml.pyc646200644editdlrm
odfmanifest.py35700755editdlrm
odfmanifest.pyc40720644editdlrm
office.py33460644editdlrm
office.pyc58950644editdlrm
opendocument.py259070644editdlrm
opendocument.pyc255300644editdlrm
presentation.py27160644editdlrm
presentation.pyc45550644editdlrm
script.py11060644editdlrm
script.pyc4840644editdlrm
style.py46720644editdlrm
style.pyc90620644editdlrm
svg.py17900644editdlrm
svg.pyc24060644editdlrm
table.py94080644editdlrm
table.pyc205930644editdlrm
teletype.py51810644editdlrm
teletype.pyc44600644editdlrm
text.py172150644editdlrm
text.pyc391260644editdlrm
thumbnail.py317360755editdlrm
thumbnail.pyc318640644editdlrm
userfield.py53940755editdlrm
userfield.pyc51590644editdlrm
xforms.py12330644editdlrm
xforms.pyc8730644editdlrm
__init__.py00644editdlrm
__init__.pyc1480644editdlrm
Edit: /usr/lib/python2.6/site-packages/tablib/packages/odf3/odf2xhtml.pyc (64620B)
}DVc@sddklZddklZlZddklZddklZddk l Z l Z l Z l Z lZlZlZlZlZlZlZlZlZlZlZlZlZlZlZlZdfdYZd fd YZhd d 6d d6dd6dd6dd6dd6dd6dd6dd6dd6dd 6d!d"6d#d$6d%d&6Z d'ei!fd(YZ"d)e"fd*YZ#d+S(,i(thandler(tescapet quoteattr(tNodei(tload(tANIMNStCHARTNStCONFIGNStDCNStDR3DNStDRAWNStFONStFORMNStMATHNStMETANStNUMBERNStOFFICENStPRESENTATIONNStSCRIPTNStSMILNStSTYLENStSVGNStTABLENStTEXTNStXLINKNSt StyleToCSScBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZRS(s The purpose of the StyleToCSS class is to contain the rules to convert ODF styles to CSS2. Since it needs the generic fonts, it would probably make sense to also contain the Styles in a dict as well.. cCsoh|_h|_h%|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itd f6|itd f6|itd f6|itd f6|itd f6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|itdf6|i t df6|i t df6|i t d f6|it d!f6|it d"f6|it d#f6|it d$f6|i t d%f6|_dS(&Nsfill-image-namesbackground-colortborders border-bottoms border-lefts border-rights border-toptcolors font-familys font-sizes font-styles font-variants font-weights line-heighttmargins margin-bottoms margin-lefts margin-rights margin-tops min-heighttpaddingspadding-bottoms padding-lefts padding-rights padding-tops page-widths page-heights text-aligns text-indents border-models column-widths font-nameshorizontal-poss text-positionstext-line-through-stylestext-underline-styletwidth(tfontdictt fillimagestc_drawfillimageR tc_foR t c_page_widtht c_page_heightt c_text_aligntc_border_modelRtc_widthRtc_fntc_hptc_text_positiontc_text_line_through_styletc_text_underline_styletruleconversions(tself((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt__init__<sP  cCsd}|djo d}nt|djo d}n]|djo d}nF|djo d}n/|djo d}n|d jo d}n||f|i|/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt save_fontls      cCsd|i||d with a width and a height s url('%s')sbackground-imageN(R (R.trulesettsdicttruletval((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR!}scCs|d}|||R?R@tselector((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR"s cCs)|djod|dR?R@((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR&s cCs||dR?R@((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR'scCs<|djo d}n|djo d}n||dR?talign((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR%s   cCsr|itdf}|dj o|i|||n|ii||df\}}d||f|d element or as a font-family-generic attribute in text-properties. sfont-family-genericR1s%s, %ss font-familyN(tgetRtNoneR<R(R.R=R>R?t fontstyleR:R9R;((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR(s  !cCs|id}t|djo#|ddjo|d|dR?ttpttextpos((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR*s$cCs|itdfd}|djod|dR?thposRT((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR)s8                 cCs||dR?R@((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR#scCs&|o|djod|dR?R@((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR,scCs&|o|djod|dR?R@((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR+scCs||dR?R@((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR$scCsh}xyt|iD]e\}}|ddjo|||dR?R@tmethod((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pytconvert_styless (t__name__t __module__t__doc__R/R<R!R"R&R'R%R(R*R)R#R,R+R$Rk(((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR6s  0        *    tTagStackcBs>eZdZdZdZdZdZdZRS(cCs g|_dS(N(tstack(R.((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR/scCs|ii||fdS(N(Rptappend(R.ttagtattrs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pytpushscCs|ii}|S(N(Rptpop(R.titem((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRuscCs|id}|dS(Nii(Rp(R.Rv((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt stackparents cCs4x-|iD]"\}}||jo ||Sq WdS(s% Find a tag with the given attribute N(RpRK(R.tattrRrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt rfindattr#s    cCs?d}x2|iD]'\}}||jo|d}qqW|S(Nii(Rp(R.Rrtctttagttattrs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt count_tags)s   (RlRmR/RtRuRwRyR}(((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRos      tems S-Emphasistcites S-CitationtstrongsS-Strong_20_Emphasistvars S-Variabletdfns S-Definitionttts S-Teletypeth1sP-Heading_20_1th2sP-Heading_20_2th3sP-Heading_20_3th4sP-Heading_20_4th5sP-Heading_20_5th6sP-Heading_20_6taddresss P-AddresseetpresP-Preformatted_20_Textt ODF2XHTMLcBseZdZeedZdZdZddZ dZ dZ dZ dZ hed Zed Zhd Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%d!Z&d"Z'd#Z(d$Z)d%Z*d&Z+d'Z,d(Z-d)Z.d*Z/d+Z0d,Z1d-Z2d.Z3d/Z4d0Z5d1Z6d2Z7d3Z8d4Z9d5Z:d6Z;d7Z<d8Z=d9Z>h d:d:6d;d<6d=d=6d>d?6d@dA6dBdB6dCdD6dEdF6dGdH6dIdI6Z?dJZ@dKZAdLZBdMZCdNZDdOZEdPZFdQZGdRZHdSZIdTZJdUZKdVZLh dWdX6dYd<6dZd=6d[d?6d\dA6d]dB6d^dD6d_dF6d`dH6dadI6ZMdbZNdcZOddZPdeZQdfZRdgZSdhZTdiZUdjZVdkZWdlZXdmZYdnZZdoZ[dpZ\dqZ]drZ^dsZ_dtZ`duZadvZbdwZcdxZddyZedzZfd{Zgd|Zhd}Zid~ZjdZkdZldZmdZndZodZpdZqdZrdZsdZtdZudZvdZwdZxdZydZzdZ{edZ|RS(s4 The ODF2XHTML parses an ODF file and produces XHTMLcCs!||_hW|i|iftdf6|i|iftdf6|i|iftdf6|i|iftdf6|i|iftdf6|i|ift df6|i |i ft df6|i dft df6|idft d f6|idft d f6|idft d f6|idft d f6|i|ift d f6|i|ift df6|i|iftdf6|i|iftdf6|i|iftdf6|i|iftdf6|idftdf6|idftdf6|idftdf6|idftdf6|idftdf6|idftdf6|idftdf6|i|iftdf6|i|iftdf6|idftdf6|idftdf6|idftdf6|i|iftdf6|i |i!ftd f6|i"dftd!f6|i#|i$ftd"f6|idftd#f6|idftd$f6|idft%d%f6|idft&d&f6|i'|i(ft&d'f6|i)dft&d(f6|i*dft&d)f6|i)dft&d*f6|idft&d+f6|i+dft&d,f6|i)dft&d-f6|i,|i-ft&d.f6|i)dft&d/f6|i.|i/ft&d0f6|i)dft&d1f6|i)dft&d2f6|i)dft&d3f6|i)dft&d4f6|idft0d5f6|idft1d6f6|i2|i3ft1d7f6|i4dft1d8f6|i5|i6ft1d9f6|i7|i8ft1d:f6|i9|i:ft;d;f6|i<|i=ft;d<f6|idft;d=f6|i<|i=ft;d>f6|i>dft;d?f6|i>dft;d@f6|i?|i:ft;dAf6|i?dft;dBf6|i@|iAft;dCf6|i<|i=ft;dDf6|iBdft;dEf6|idft;dFf6|iC|iDft;dGf6|iE|iFft;dHf6|iG|iHft;dIf6|iI|iJft;dJf6dXt;dKf6|iKdft;dLf6|iL|iMft;dMf6d|iNft;dNf6|idft;dOf6|i<|i=ft;dPf6|iO|iPft;dQf6|iQdft;dRf6|iR|iSft;dSf6|iTdft;dTf6|i<|i=ft;dUf6|i<|i=ft;dVf6|i<|i=ft;dWf6|_U|o|iVn|iWdS(YNttitletlanguagetcreatort descriptiontdates custom-shapetframetimages fill-images layer-settobjects object-oletpagestext-boxs creation-datet generatorsinitial-creatortkeywords boolean-stylescurrency-styles date-styles number-styles text-stylet annotationsautomatic-stylestdocumentsdocument-contenttformss master-stylestmetat presentationt spreadsheettstylesttexttscriptstsettingstnotessdefault-page-layouts default-stylesdrawing-page-propertiess font-facesgraphic-propertiesshandout-masters master-pagespage-layout-propertiess page-layoutsparagraph-propertieststylestable-cell-propertiesstable-column-propertiesstable-propertiesstext-propertiestdescscovered-table-cells table-cells table-columns table-rowttabletasalphabetical-index-sourcesbibliography-configurationsbibliography-sourcetbookmarksbookmark-starts bookmark-refsbookmark-ref-startthsillustration-index-sources line-breakslinenumbering-configurationRhs list-itemslist-level-style-bulletslist-level-style-numbers list-styletnotes note-bodys note-citationsnotes-configurationsobject-index-sourcetptstspanttabstable-index-sourcestable-of-content-sourcesuser-index-source(NN(Xt generate_csst s_processcontt e_dc_titleRte_dc_contentlanguaget e_dc_creatort e_dc_metatagts_custom_shapete_custom_shapeR t s_draw_framet e_draw_framet s_draw_imageRKts_draw_fill_imaget s_ignorexmlt s_draw_objectts_draw_object_olet s_draw_paget e_draw_pagets_draw_textboxte_draw_textboxRRRts_office_automatic_stylests_office_document_contentte_office_document_contentts_office_master_stylest s_ignorecontts_office_presentationte_office_presentationts_office_spreadsheette_office_spreadsheetts_office_stylest s_office_textt e_office_textRRts_style_default_stylete_style_default_stylets_style_handle_propertiests_style_font_facets_style_master_pagets_style_page_layoutte_style_page_layoutt s_style_stylet e_style_styleRRts_table_table_cellte_table_table_cellts_table_table_columnts_table_table_rowte_table_table_rowt s_table_tablet e_table_tablets_text_ate_text_aRts_text_x_sourcete_text_x_sourcets_text_bookmarkts_text_bookmark_refts_text_hte_text_hts_text_line_breakt s_text_listt e_text_listts_text_list_itemte_text_list_itemts_text_list_level_style_bullette_text_list_level_style_bulletts_text_list_level_style_numberte_text_list_level_style_numbert s_text_notets_text_note_bodyte_text_note_bodyte_text_note_citationts_text_pte_text_pts_text_st s_text_spant e_text_spant s_text_tabtelementstmake_embedablet _resetobject(R.Rt embedable((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR/Ns  cCs t|_dS(s% Tell the parser to not generate CSS N(tFalseR(R.((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt set_plainscCsPd|itdfRRRsdocument-contentN(NN(NN(NN(NN(RKRR(R.((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt set_embedablescCsOt|_||_|o|iid||fn|iid|dS(sm Add a link to an external style file. Also turns of the embedding of styles in the HTML s> s3 N(Rtuse_internal_csst stylefilenametmetatagsRq(R.Rtmedia((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pytadd_style_files   cCsh|_d|_d|_dS(NiRg(tnotedictt currentnotetnotebody(R.((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt_resetfootnotess  c Csg|_|i|_d|_d|_d|_d|_g|_t|_ g|_ g|_ t |_ t |_h|_dddddddddddg |_t |_t|_h|_g|_h|_d|_|ig|_dS(NRgi(tlinest_wlinest_wfunctxmlfileRRRtdataRottagstackt htmlstacktpstacktTruet processelemt processcontt listtypest headinglevelsRRtcstanchorst stylestackt styledictRKt currentstyleRR(R.((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs,             *       cCs"|djo|i|ndS(NRg(R (R.R((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pytwriteouts cCs:di|i}|djo|it|ndS(NRg(tjoinR RR(R.td((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt writedatas cCs|ii|||fg}x=t|iD])\}}|id|t|fq2Wt|djo|id|n!|id|di|f|tjo|idndS(s Create an open HTML tag s%s=%sis<%s>s<%s %s>RMs N( RRqRhRiRRQRRR(R.RrRstblockRtkeyR@((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pytopentags !  cCs@|ii|id||tjo|idndS(s Close an open HTML tag ss N(RRuRR(R.RrR((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pytclosetags  cCsjg}x=t|iD])\}}|id|t|fqW|id|di|fdS(Ns%s=%ss <%s %s/> RM(RhRiRqRRR(R.RrRsRRR@((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pytemptytag s  !cCs,|io|io|ii|ndS(N(RRR Rq(R.R ((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt charactersscCs|ii|i|if|ioK|ii|dd}|o|i|||qq|i||n|i i ||dS(Ni(NN( RRqRRRRJRKthandle_starttagtunknown_starttagR Rt(R.RrtqnameRsRj((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pytstartElementNSs cCs|ii\}}|ioK|ii|dd}|o|i|||qj|i||n|ii\|_|_ dS(Ni(NN( R RuRRRJRKt handle_endtagtunknown_endtagRR(R.RrR&tstagRsRj((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt endElementNS$s cCs|||dS(N((R.RrRjRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR$/scCs|||dS(N((R.RrRsRj((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR(2scCsdS(N((R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR%5scCsdS(N((R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR)8scCs t|_dS(sh Ignore this xml element and all children of it It will automatically stop ignoring N(RR(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR;scCs t|_dS(s Stop processing the text nodes N(RR(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRAscCs t|_dS(s! Start processing the text nodes N(RR(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyREscCs.|itdfd}|idd}|S(s) Generate a class name from a style name s style-nameRgt.t_(RJRtreplace(R.RsRz((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt classnameIscCsB||ijo"dt|id|i|/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt get_anchorOs"cCs g|_dS(N(R (R.((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt purgedataXscCs"di|i|_g|_dS(sD Get the title from the meta data and create a HTML Rg���N(���R��R ��R���(���R.���Rr���Rs���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR���`��s����c���������C���s=���|��i��i�d�|�d�t�d�i�|��i���f��g��|��_�d�S(���s:��� Any other meta data is added as a <meta> element s���<meta name="%s" content=%s/> i���Rg���N(���R��Rq���R���R��R ��(���R.���Rr���Rs���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR���g��s����0c���������C���s?���d�i��|��i��|��_�|��i�i�d�t�|��i���g��|��_�d�S(���sD��� Set the content language. Identifies the targeted audience Rg���s3���<meta http-equiv="content-language" content="%s"/> N(���R��R ��R���R��Rq���R���(���R.���Rr���Rs���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR���m��s����c���������C���s?���d�i��|��i��|��_�|��i�i�d�t�|��i���g��|��_�d�S(���sC��� Set the content creator. Identifies the targeted audience Rg���s*���<meta http-equiv="creator" content="%s"/> N(���R��R ��R���R��Rq���R���(���R.���Rr���Rs���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR���t��s����c���������C���s��|�i��t�d�f�d��}�d�}�d�|�i��t�d�f�d��}�|�d�j�o �d�|�i��t�d�f�d��}�n�|�i�d�d ��}�|�d �j�o �d �}�n;�|�d �j�o �d �}�n$�|�d �j�o�d�}�d�}�n�d�}�t�d�f�|�j�o �|�d�|�t�d�f�d�}�n�t�d�f�|�j�o �|�d�|�t�d�f�d�}�n�t�d�f�|�j�o �|�d�|�t�d�f�d�}�n�t�d�f�|�j�o �|�d�|�t�d�f�d�}�n�|��i�o"�|��i�|�h�|�d�6|�d�6�n�|��i�|��d�S(���sQ��� A <draw:custom-shape> is made into a <div> in HTML which is then styled s ���anchor-typet���notfoundt���divs���G-s ���style-nameRg���s���PR-R,��R-��t ���paragraphs���position:absolute;t���chars���as-chars���position: absolute;R���s���width:t���;Rf���s���height:Rb���s���left:t���ys���top:t���classR���N(���RJ���R���R ���R���R.��R���R���R ��(���R.���Rr���Rs���t ���anchor_typet���htmltagR8���R���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR���{��s2����             "c���������C���s���|��i��d��d�S(���s��� End the <draw:frame> R3��N(���R!��(���R.���Rr���Rs���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR�����s����c���������C���s��|�i��t�d�f�d��}�d�}�d�|�i��t�d�f�d��}�|�d�j�o �d�|�i��t�d�f�d��}�n�|�i�d�d ��}�|�d �j�o �d �}�n;�|�d �j�o �d �}�n$�|�d �j�o�d�}�d�}�n�d�}�t�d�f�|�j�o �|�d�|�t�d�f�d�}�n�t�d�f�|�j�o �|�d�|�t�d�f�d�}�n�t�d�f�|�j�o �|�d�|�t�d�f�d�}�n�t�d�f�|�j�o �|�d�|�t�d�f�d�}�n�|��i�o"�|��i�|�h�|�d�6|�d�6�n�|��i�|��d�S(���sJ��� A <draw:frame> is made into a <div> in HTML which is then styled s ���anchor-typeR2��R3��s���G-s ���style-nameRg���s���PR-R,��R-��R4��s���position:relative;R5��s���as-chars���position:absolute;R���s���width:R6��Rf���s���height:Rb���s���left:R7��s���top:R8��R���N(���RJ���R���R ���R���R.��R���R���R ��(���R.���Rr���Rs���R9��R:��R8���R���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR�����s2����             "c���������C���s���|��i��d��d�S(���s��� End the <draw:frame> R3��N(���R!��(���R.���Rr���Rs���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR�����s����c���������C���sK���|�i��t�d�f�d��}�|�t�d�f�}�|��i�|��}�|�|��i�i�|�<d��S(���NR8���t���NoNamet���href(���RJ���R ���R���t ���rewritelinkR��R ���(���R.���Rr���Rs���R8���t���imghref(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR�����s����c���������C���s���|�S(���sh��� Intended to be overloaded if you don't store your pictures in a Pictures subfolder (����(���R.���R>��(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR=����s����c���������C���s���|��i��i���}�|�i�t�d�f��}�|�t�d�f�}�|��i�|��}�h�d�d�6|�d�6}�|��i�o�|�d�j�o�d�|�d�<q�n�|��i�d �|��d �S( ���s2��� A <draw:image> becomes an <img/> element s ���anchor-typeR<��Rg���t���altt���srcR5��s���display: block;R���t���imgN(���R ��Rw���RJ���R���R���R=��R���R"��(���R.���Rr���Rs���t���parentR9��R>��t ���htmlattrs(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR�����s����  c���������C���sO���|�t��d�f�}�x8�|��i�i�D]*�}�|�i�|�j�o�|��i�|�i��q�q�Wd�S(���s`��� A <draw:object> is embedded object in the document (e.g. spreadsheet in presentation). R<��N(���R���R���t ���childnodest���foldert ���_walknodet���topnode(���R.���Rr���Rs���t���objhrefRz���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR�����s ���� �c���������C���sf���|�t��d�f�}�|�oK�|�i���d�j�o8�h�d�d�6d�d�6}�|��i�d�|��|��i�d�|��n�d�S( ���sU��� A <draw:object-ole> is embedded OLE object in the document (e.g. MS Graph). s���class-ids$���00020803-0000-0000-c000-000000000046t���object_ole_graphR8���s ���ole-graphR8��R���N(���R ���t���lowerR ��R!��(���R.���Rr���Rs���t���class_idt���tagattrs(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR�����s ����c���������C���s���|�i��t�d�f�d��}�|�i��t�d�f�d��}�|�i�d�d��}�|�i��t�d�f�d��}�|�i�d�d��}�|��i�o%�|��i�d�h�d �|�|�f�d �6�n�|��i�d��|��i�d ��|��i�t�|���|��i�d ��d �S( ���s��� A <draw:page> is a slide in a presentation. We use a <fieldset> element in HTML. Therefore if you convert a ODP file, you get a series of <fieldset>s. Override this for your own purpose. R8���R;��s ���style-nameRg���R,��R-��s���master-page-namet���fieldsets ���DP-%s MP-%sR8��t���legendN(���RJ���R ���R.��R���R ��R��R���R!��(���R.���Rr���Rs���R8���t ���stylenamet ���masterpage(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR�����s���� %  c���������C���s���|��i��d��d��S(���NRM��(���R!��(���R.���Rr���Rs���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR�����s����c���������C���sJ���d�}�t��d�f�|�j�o �|�d�|�t��d�f�d�}�n�|��i�d��d��S(���NRg���s ���min-heights ���min-height:R6��R3��(���R ���R ��(���R.���Rr���Rs���R���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR�����s���� c���������C���s���|��i��d��d�S(���s!��� End the <draw:text-box> R3��N(���R!��(���R.���Rr���Rs���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR�����s����c���������C���s���|��i����|��i�oY�|��i�oO�|��i�d�h�d�d�6t��|��i�d��|��i���|��i�d��|��i�d��n�|��i���|��i�d��|��i�d�d�t�d��S( ���NR���s���text/csst���types���/*<![CDATA[*/ s���/*]]>*/ t���headt���bodyR��( ���R��R���R���R ��R��R��t���generate_stylesheetR!��R1��(���R.���Rr���Rs���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt ���html_body��s����      s��� img { width: 100%; height: 100%; } * { padding: 0; margin: 0; background-color:white; } body { margin: 0 1em; } ol, ul { padding-left: 2em; } c���������C���s��x |��i��D]}�|��i�i�|��}�d�|�j�oi�|�d�|��i�j�oU�|��i�|�d�i���}�|�d�=x*�t�|�i����D]�\�}�}�|�|�|�<qt�W|�}�n�xw�d�|�j�oi�|�d�|��i�j�oU�|��i�|�d�i���}�|�d�=x*�t�|�i����D]�\�}�}�|�|�|�<q�W|�}�q�W|�|��i�|�<q �W|��i�|��i��x�|��i��D]�}�|��i�i�|��}�|��i�i �|��}�|��i�d�|��x7�t�|�i����D]#�\�}�}�|��i�d�|�|�f��qW|��i�d��q=Wd��S(���Ns���__style-familys���__parent-style-names���%s { s ��� %s: %s; s���} ( ���R��R��RJ���t���copyRh���Ri���R��t���default_stylesR��Rk���(���R.���R8���R���t ���familystyleR���R@���t ���parentstylet���css2(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRT��'��s:���� �!�  �!�   �� c���������C���s���|��i��d�j�o�d��S|��i�o�|��i�d�h�d�d�6t��n�|��i�d��xd�t�d�|��i��d��D]L�}�|��i�|�}�|��i�d�h�d�|�d�6�|��i�|�d ��|��i�d��qa�W|��i�d��d��S( ���Ni����t���ols���border-top: 1px solid blackR���i���t���lis ���footnote-%dt���idRS��(���R��R���R ��R��t���rangeR��R��R!��(���R.���R��R���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt���generate_footnotesC��s����  � c���������C���s*���|��i��d�j�o �d�|��_�n �d�|��_�d��S(���Ns ���styles.xmlt���ARg���(���R ��t ���autoprefix(���R.���Rr���Rs���(����(����s>���/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR���U��s���� c���������C���s���|��i��d��|��i��d��|��i�d�h�d�d�6t��|��i�d�d�t�|��i�d�h�d �d �6d �d �6�x�|��i�D]�}�|��i��|��qo�W|��i��d �t�|��i���d�S(���s"��� First tag in the content.xml files2���<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" s0���"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> t���htmls���http://www.w3.org/1999/xhtmlt���xmlnsRR��R��R���s ���Content-Types ���http-equivs���text/html;charset=UTF-8t���contents���<title>%s N(RR RR"RRR(R.RrRstmetaline((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR[s   cCs|iddS(s Last tag RbN(R!(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRfscCsdS(RMN((R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRjscCsHhdtdf6|id/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRmscCs|i|iddS(NRS(R_R!(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRvs cCs|i||dS(N(RU(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRzscCs|i|iddS(NRS(R_R!(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR}s cCs d|_dS(NRg(Ra(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRscCs.hdtdf6|id<|i||dS(s OpenDocument text RURTRN(RRRU(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRscCs|i|iddS(NRS(R_R!(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs cCs;x4t|iD] \}}||i|i|/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs RRR4RRRR3tsectionRttds table-celltcols table-columnttrs table-rowtgraphiccCsB|tdf}|ii|d}||_h|i|i/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs cCs d|_dS(N(RKR(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRscCsR|tdf}|tdf}|itdfd}|ii|||dS(sI It is possible that the HTML browser doesn't know how to show a particular font. Luckily ODF provides generic fallbacks Unfortunately they are not the same as CSS2. CSS2: serif, sans-serif, cursive, fantasy, monospace ODF: roman, swiss, modern, decorative, script, system R8s font-familysfont-family-genericRgN(RRRJRR<(R.RrRsR8R9R:((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRscCs%|idhdd6|idS(NR3tfooterR](R R1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyts_style_footerscCs%|i|id|idS(NR3(RR!R1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyte_style_footers  cCs0d|_|ii|ih|i|i/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyts_style_footer_styles cCs%|idhdd6|idS(NR3theaderR](R R1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyts_style_headerscCs%|i|id|idS(NR3(RR!R1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyte_style_headers  cCs0d|_|ii|ih|i|i/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyts_style_header_styles cCs0d|_|ii|ih|i|i/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyts_style_default_page_layouts cCsV|tdf}|idd}d||_|ii|ih|i|i/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs  cCs d|_dS(s End this style N(RKR(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRscCs|tdf}|idd}d||_|ii|ihdd 6|i|i<|itdfd }|ozd |}||ijoH|i|}xLt|i D] \}}||i|i|/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs    tDPs drawing-pagetPtPRtStDtTtTDtTCtTRtGc Cs|tdf}|idd}|tdf}|ii|d}|ii|d}d|i||f}|itdf}ti|d||_|ii |i|i|i joh|i |i/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs*  cCs d|_dS(s End this style N(RKR(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR scCsu|itdfd}|o;|io1|idd}|idhd|d6n|id|idS(s Start a table s style-nameR,R-RsT-%sR8N(RJRRKRR.R R1(R.RrRsRz((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR%s  cCs%|i|id|idS(s End a table RN(RR!R1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR0s  cCsh}|itdf}|o||d/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR7scCs%|i|id|idS(s End a table cell RhN(RR!R1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRIs  cCs|itdfd }t|itdfd}h}|od|idd|d/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyROs cCsa|itdfd}h}|od|idd|d/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRZs cCs%|i|id|idS(s End a table row RjN(RR!R1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRds  cCsx|i|tdfidd}|ddjod|i|d}n|idh|d6|idS(s Anchors start R<t|it#iRN(RRRPR0R R1(R.RrRsR<((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRjs  cCs(|i|idt|idS(s% End an anchor or bookmark reference RN(RR!RR1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRss cCs^|tdf}|i|}|i|idh|d6|idt|idS(s Bookmark definition R8RR]N(RR0RR R!RR1(R.RrRsR8thtml_id((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRys  cCsR|tdf}d|i|}|i|idh|d6|idS(s Bookmark reference sref-nameRRR<N(RR0RR R1(R.RrRsR8R((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs  cCst|tdf}|djo d}n|djo d}n|i|d|i|<|i|}x(t|ddD]}d|i|/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs  cCs|it|tdf}|djo d}n|djo d}n|id|d!}ditt|}di|i}|idjo ||_n|i d||f}|i dh|d6|i dt |i d ||i d S( s Headings end Side-effect: If there is no title in the metadata, then it is taken from the first heading of any level. s outline-leveliiR,Rgs%s.%sRR]sh%sN(RRRRRtmaptstrR RR0R R!RR1(R.RrRsRtlevtoutlinetheadingtanchor((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs     cCs%|i|id|idS(s Force a line break (
) tbrN(RR"R1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs  cCs|itdf}|ii|d}|o|idd}n|iitdf}d||f}|io.|id|ii|dh|d6n!|id|ii|d|i d S( s Start a list (
    or
      ) To know which level we're at, we have to count the number of elements on the tagstack. s style-nameiR,R-s%s_%ds%stulR8N( RJRR R}R.RyRR RR1(R.RrRsR8Rt list_class((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs . cCs|i|itdf}|ii|d}|o|idd}n|iitdf}d||f}|i|ii|d|i dS(s End a list s style-nameiR,R-s%s_%dRN( RRJRR R}R.RyR!RR1(R.RrRsR8RR((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs cCs|id|idS(s Start list item R\N(R R1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs cCs%|i|id|idS(s End list item R\N(RR!R1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs  cCs|iitdf}|tdf}|i|_d||f}d|i|/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs   cCs|i|_|`dS(N(RR(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs cCs=|iitdf}|tdf}|itdfd}d||f}|i|_d|idd|f|_d|i|<|i i |ih|i |i<|djo d }nc|d jo d }nL|d jo d }n5|djo d}n|djo d}nd }||i |id/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs*       cCs|i|_|`dS(N(RR(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR s cCsA|i|i|id|_h|i|i/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs   cCsdS(N((R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt e_text_notescCs%|djo|ii|ndS(NRg(RRq(R.R((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt collectnotes cCs|i|_|i|_dS(N(R t _orgwfuncR(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs cCs?|i|_di|i|i|id/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR!s   cCsdi|i}||i|id<|idhd|id6|id|it|i|id|iddS(NRgtcitationRs #footnote-%sR<tsup(RR RRR RRR!(R.RrRstmark((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR's  cCsh}d}|itdfd}|o\|idd}tid|}|djo&d}|iod||d/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR3s  cCsd}|itdfd}|o@|idd}tid|}|djo d}qen|i|i||idS(s End Paragraph Rs style-nameR,R-sP-N(RJRRKR.RRR!R1(R.RrRsRRz((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRCs   cCsF|itdfd}x'tt|D]}|idq+WdS(s Generate a number of spaces. ODF has an element; HTML uses   We use   so we can send the output through an XML parser if we desire to RzRs N(RJRR^RR(R.RrRsRzRb((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRQscCs|i|itdfd}h}|oR|idd}tid|}|djo|iod||d element matches the element in HTML. It is typically used to properties of the text. s style-nameR,R-sS-sS-%sR8RN( RRJRRKR.RRR R1(R.RrRsRzRCR((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRYs cCs(|i|idt|idS(s End the RN(RR!RR1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRhs cCs%|i|id|idS(s: Move to the next tabstop. We ignore this in HTML RMN(RRR1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRns  cCs(|i|i|i||dS(sB Various indexes and tables of contents. We ignore those. N(RR1R(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRus  cCs|i|idS(sB Various indexes and tables of contents. We ignore those. N(RR1(R.RrRs((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR|s cCsXg|_|i|_t|tot||_n ||_|i|iidS(s Loads a document into the parser and parses it. The argument can either be a filename or a document in memory. N( RR R t isinstanceRRRRFRG(R.todffile((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRs    cCs|itijoW|i|i|i|ix|iD]}|i|q9W|i |i|in|iti jp|iti jo|i t |ndS(N(tnodeTypeRt ELEMENT_NODER'R&ttagNamet attributest childNodesRFR+t TEXT_NODEtCDATA_SECTION_NODER#R(R.tnodeRz((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRFs &cCs|i||iS(s* Load a file and return the XHTML (Rtxhtml(R.R((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt odf2xhtmls cCs%|djo|ii|ndS(NRg(RRq(R.R((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR s cCsdi|iS(s Returns the xhtml Rg(RR(R.((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRscCs%|djo|ii|ndS(NRg(t _csslinesRq(R.R((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt _writecsss cCsdS(N((R.R((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyt _writenothingscCsGg|_|i|_|idi|i}|i|_|`|S(s Returns the CSS content Rg(RRR RTRR (R.tres((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pytcsss    cCsk|djo ti}n%|o|d}nt|d}|i|iidd|idS(s Save the HTML under the filename. If the filename is '-' then save to stdout We have the last style filename in self.stylefilename t-s.htmltwsus-asciitxmlcharrefreplaceN(tsyststdouttfiletwriteRtencodetclose(R.t outputfilet addsuffixtoutputfp((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pytsaves  N(}RlRmRnRRR/RRRKRRRRRR R!R"R#R'R+R$R(R%R)RRRR/R0R1RRRRRRRRRR=RRRRRRRRURWRTR_RRRRRRRRRRRRRmRRRRpRqRrRtRuRvRwRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRFRR RRRRR(((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRKsg                                                                                           tODF2XHTMLembeddedcBseZdZeedZRS(s4 The ODF2XHTML parses an ODF file and produces XHTMLcCs|i||_||_h1|i|iftdf6|idftdf6|idftdf6|i dftdf6|i |i ftdf6|i dftdf6|i dftdf6|i|iftdf6|i dftd f6|i dftd f6|i dftd f6|i dftd f6|i dftd f6|i dftdf6|idftdf6|i dftdf6|i dftdf6|i dftdf6|i dftdf6|i|iftdf6|idftdf6|i|iftdf6|i|iftdf6|i|iftdf6|i |i!ftdf6|i dftdf6|i |i!ftdf6|i"|i#ftdf6|i |i!ftdf6|i$dftdf6|i dftdf6|i%|i&ftd f6|i'|i(ftd!f6|i)|i*ftd"f6|i+|i,ftd#f6d2td$f6|i-dftd%f6|i.|i/ftd&f6d|i0ftd'f6|i dftd(f6|i |i!ftd)f6|i1|i2ftd*f6|i3dftd+f6|i4|i5ftd,f6|i6dftd-f6|i |i!ftd.f6|i |i!ftd/f6|i |i!ftd0f6d3td1f6|_7dS(4NRRs fill-images layer-setRRs object-olestext-boxs boolean-stylescurrency-styles date-styles number-styles text-styleRRRRRscovered-table-cells table-cells table-columns table-rowRRsalphabetical-index-sourcesbibliography-configurationsbibliography-sourceRsillustration-index-sources line-breakslinenumbering-configurationRhs list-itemslist-level-style-bulletslist-level-style-numbers list-styleRs note-bodys note-citationsnotes-configurationsobject-index-sourceRRRRstable-index-sourcestable-of-content-sourcesuser-index-sources page-number(NN(NN(8RRRRRR RRKRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR(R.RRR((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyR/sj    (RlRmRnRRR/(((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyRsN($txml.saxRtxml.sax.saxutilsRRtxml.domRt opendocumentRt namespacesRRRRR R R R R RRRRRRRRRRRRRoRtContentHandlerRR(((s>/tmp/pip-build-lt8jXN/tablib/tablib/packages/odf3/odf2xhtml.pyts6