ó
    �®žjí±  ã                   óþ  • S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
  S SKJr  S SKJr  S SKJr  S SKJrJr  S SKJrJrJrJrJrJrJr  S SKrS SKJrJrJrJ r J!r!J"r"J#r#  S S	K$J%r%J&r&J'r'  S S
K(J)r)J*r*J+r+J,r,J-r-J.r.  S SK/J0r0J1r1  S SK2J3r3J4r4  S SK5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrB  S SKCJDrD  S SKEJFrF  S SKGJHrH  S SKIJJrJ  S SKKJLrLJMrM  \(       a  S SK5JNrN  \Rž                  " \P5      rQ0 \R¤                  S_\R¦                  S_\R¨                  S_\Rª                  S_\R¬                  S_\R®                  S_\R°                  S_\R²                  S_\R´                  S_\R¶                  S_\R¸                  S_\Rº                  S_\R¼                  S_\R¾                  S_\RÀ                  S_\RÂ                  S_\RÄ                  \RÄ                  RÆ                  _\RÈ                  \RÈ                  RÆ                  0Ere\" S S!9rf " S" S#\5      rg " S$ S%\*5      rhS&S%S'\\i   4S( jrjS&S%S'\k\;   4S) jrl " S* S+\m\5      rn " S, S-\*5      ro " S. S/\*5      rp " S0 S1\p5      rq " S2 S3\05      rr " S4 S5\*5      rsg)6é    N)ÚIterableÚMapping)Údatetime©ÚEnum)ÚBytesIO)ÚPathÚPurePath)ÚTYPE_CHECKINGÚ	AnnotatedÚLiteralÚ
NamedTupleÚOptionalÚTypeÚUnion)ÚDocItemÚDocItemLabelÚDoclingDocumentÚPictureItemÚSectionHeaderItemÚ	TableItemÚTextItem)ÚFileSizeLimitExceededErrorÚresolve_remote_filenameÚresolve_source_to_stream)Ú
AnyHttpUrlÚ	BaseModelÚFieldÚPrivateAttrÚTypeAdapterÚValidationError)ÚAbstractDocumentBackendÚPaginatedDocumentBackend)ÚBackendOptionsÚMetsGbsBackendOptions)ÚAssembledUnitÚConfidenceReportÚConversionStatusÚDoclingComponentTypeÚDocumentStreamÚ	ErrorItemÚFailureCategoryÚFormatToExtensionsÚFormatToMimeTypeÚ
HttpSourceÚInputFormatÚMimeTypeToFormatÚPage)ÚDocumentLimits)ÚDocumentLoadError)Ú_PdfOutlineItem)ÚProfilingItem)Úcreate_file_hashÚsafe_version)ÚBaseFormatOptionÚtitleÚtablezsubtitle-level-1zcheckbox-selectedzcheckbox-unselectedÚcaptionzpage-headerzpage-footerÚfootnoteÚequationÚ	paragraphÚfigureÚdummy©Únamec                   óB   • \ rS rSr% Sr\\S'   \\S'   Sr\	\
   \S'   Srg)ÚInputRejectionéo   a&  Why an input document was flagged invalid, captured where it is known.

Set on ``InputDocument`` in ``__init__`` and ``create_invalid`` so the
converter can emit a categorized ``ErrorItem`` instead of an empty errors
list. Transient plumbing (a private attr), not part of the serialized model.
ÚmessageÚcategoryNÚoriginal_error© )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚstrÚ__annotations__r,   rI   r   ÚBaseExceptionÚ__static_attributes__rJ   ó    ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/docling/datamodel/document.pyrE   rE   o   s%   ‡ ñð ƒLØÓð
 /3€N�H˜]Ñ+Ö2rT   rE   c                   óô  ^ • \ rS rSr% Sr\\\" SS94   \S'   \\	\" SS94   \S'   \" SS	S9r
\\S
'   \" SSS9r\\   \S'   \" \" 5       SS9r\\S'   \\\" SS94   \S'   \" SSS9r\\   \S'   \" SSS9r\\S'   \\S'   \" SS9r\\   \S'      S%S\\\4   S\S\\   S\\   S\\	   S\\   SS4U 4S jjjr\SSS.S\	S\S\S\\   S \\   SS 4S! jj5       rS&S" jr S\\   S\\\4   SS4S# jr!S$r"U =r#$ )'ÚInputDocumenté€   z/A document as an input of a Docling conversion.z)A path representation the input document.)ÚdescriptionÚfilez:A stable hash of the path or stream of the input document.Údocument_hashTz*Whether this is is a valid input document.ÚvalidNzCustom options for backends.Úbackend_optionsz0Limits in the input document for the conversion.ÚlimitszThe document format.Úformatz!Size of the input file, in bytes.Úfilesizer   z&Number of pages in the input document.Ú
page_countÚ_backend©ÚdefaultÚ
_rejectionÚpath_or_streamÚbackendÚfilenameÚreturnc                 óT  >• [         TU ]  SS[        R                  US9  U=(       d
    [	        5       U l        X l         [        U[        5      (       a|  Xl	        UR                  5       R                  U l        U R                  U R
                  R                  :”  a  U R                  5         OÞ[        U5      U l        U R#                  X15        O¼[        U[$        5      (       a�  Uc   S5       e['        U5      U l	        UR)                  5       R*                  U l        U R                  U R
                  R                  :”  a  U R                  5         O9[        U5      U l        U R#                  X15        O[-        S[/        U5       35      eU R0                  (       Gae  U R2                  R5                  5       (       GaD  U R2                  R7                  5       (       Ga#  [        U R2                  [8        5      (       Ga  U R2                  R;                  5       U l        U R:                  U R
                  R<                  ::  dJ  SU l        [?        SU R:                   SU R
                  R<                   S3[@        RB                  S	9U l"        g U R:                  U R
                  RF                  S
   :  aM  SU l        [?        SU R:                   SU R
                  RF                  S
    S3[@        RB                  S	9U l"        g g g g g g ! [H        [J        4 a†  nSU l        U RD                  =(       d1    [?        SU R                  RL                   S3[@        RN                  US9U l"        [P        RS                  SU R                  RL                   S3US9   S nAg S nAf[,         a…  nSU l        U RD                  =(       d1    [?        SU R                  RL                   S3[@        RT                  US9U l"        [P        RS                  SU R                  RL                   3US9   S nAg S nAff = f)NÚ )rZ   r[   r_   r]   zICan't construct InputDocument from stream without providing filename arg.z Unexpected type path_or_stream: FzDocument has z- pages, exceeding the max_num_pages limit of Ú.©rG   rH   r   z2 pages, fewer than the requested page_range start zFile z not found or cannot be opened.©rG   rH   rI   )Úexc_infoz8An unexpected error occurred while opening the document )+ÚsuperÚ__init__r0   ÚPDFr3   r^   r_   Ú
isinstancer	   rZ   ÚstatÚst_sizer`   Úmax_file_sizeÚ_reject_filesizer7   r[   Ú	_init_docr   r
   Ú	getbufferÚnbytesÚRuntimeErrorÚtyper\   rb   Úis_validÚsupports_paginationr#   ra   Úmax_num_pagesrE   r,   ÚPOLICYre   Ú
page_rangeÚFileNotFoundErrorÚOSErrorrC   ÚSOURCE_UNAVAILABLEÚ_logÚ	exceptionÚUNKNOWN)	Úselfrf   r_   rg   r]   rh   r^   ÚeÚ	__class__s	           €rU   rq   ÚInputDocument.__init__œ   sƒ  ø€ ô 	‰ÑØØÜ—?‘?Ø+ð	 	ñ 	
ð ×0¤Ó 0ˆŒØŒðP	Ü˜.¬$×/Ñ/Ø*”	Ø .× 3Ñ 3Ó 5× =Ñ =�”Ø—=‘= 4§;¡;×#<Ñ#<Ó<Ø×)Ñ)Õ+ä)9¸.Ó)I�DÔ&Ø—N‘N 7Õ;ä˜N¬G×4Ñ4ØÑ+ð ð$óÐ+ô % XÓ.�”	Ø .× 8Ñ 8Ó :× AÑ A�”à—=‘= 4§;¡;×#<Ñ#<Ó<Ø×)Ñ)Õ+ä)9¸.Ó)I�DÔ&Ø—N‘N 7Õ;ä"Ø6´t¸NÓ7KÐ6LÐMóð ð
 �z�zˆz˜dŸm™m×4Ñ4×6Ò6Ø—=‘=×4Ñ4×6Ò6¼:Ø—M‘MÔ#;÷<ò <ð '+§m¡m×&>Ñ&>Ó&@�D”OØŸ?™?¨d¯k©k×.GÑ.GÓGØ%*˜œ
Ü*8à"/°·±Ð/@ð A:Ø:>¿+¹+×:SÑ:SÐ9TÐTUð!Wô &5×%;Ñ%;ñ+˜�ð Ÿ™¨4¯;©;×+AÑ+AÀ!Ñ+DÓDØ%*˜œ
Ü*8à"/°·±Ð/@ð A>Ø>B¿k¹k×>TÑ>TÐUVÑ>WÐ=XÐXYð![ô &5×%;Ñ%;ñ+˜�ð Eð<Ð6ð 7ˆzøô0 "¤7Ð+ó 		ØˆDŒJØ"Ÿo™o÷ ´Ø §	¡	§¡Ð/Ð/NÐOÜ(×;Ñ;Ø ñ2ˆDŒOô
 �N‰NØ˜Ÿ	™	Ÿ™Ð'Ð'FÐGÐRSð ö ûô ó 	ð ˆDŒJØ"Ÿo™o÷ ´àNØ—y‘y—~‘~Ð& að)ô )×0Ñ0Ø ñ2ˆDŒOô �N‰NØJØ—9‘9—>‘>Ð"ð$àð ö ûð	ús-   ¿IL ÊA3L ÌP'ÌA<NÎP'Î"A;P"Ð"P')r^   Ú	rejectionrŒ   c          	      ón   • U R                  [        U5      SSU=(       d
    [        5       UUS9nXVl        U$ )a?  Build an InputDocument flagged invalid without opening a backend.

Used when the input is rejected before a stream is available, e.g. an
HTTP download aborted for exceeding ``limits.max_file_size``. The normal
constructor derives ``filesize`` from the actual path/stream, which is
unavailable in that case, so the fields are set explicitly here.

``__init__`` is overridden to load from a path/stream and open a backend,
so the validated constructor cannot be used to set bare field values;
``model_construct`` is the supported way to do that. Only fields that
differ from their declared defaults are passed; the rest (e.g.
``backend_options``, ``page_count``) fall back to those defaults.

``rejection`` carries the (message, category) reason so the converter can
emit a categorized ``ErrorItem`` instead of an empty errors list.
rk   F)rZ   r[   r\   r^   r_   r`   )Úmodel_constructr
   r3   re   )Úclsrh   r_   r`   r^   rŒ   Údocs          rU   Úcreate_invalidÚInputDocument.create_invalid   sD   € ð4 ×!Ñ!Ü˜(Ó#ØØØ×-œ^Ó-ØØð "ð 
ˆð #ŒØˆ
rT   c                 ó–   • SU l         [        SU R                   SU R                  R                   S3[
        R                  S9U l        g )NFú
File size ú$ exceeds the max_file_size limit of ú bytes.rm   )r\   rE   r`   r^   rv   r,   r€   re   ©rˆ   s    rU   rw   ÚInputDocument._reject_filesize%  sE   € ØˆŒ
Ü(à˜TŸ]™]˜OÐ+OØ—;‘;×,Ñ,Ð-¨Wð6ô %×+Ñ+ñ
ˆ�rT   c                 óÀ  •  U R                   (       a  U" U UU R                   S9U l        OU" XS9U l         U R                  R                  5       (       d%  SU l        [        S[        R                  S9U l
        g g ! [         aW  n[        U[        5      (       d  e SU l        [        [        U5      =(       d    S[        R                  US9U l
         S nAg S nAff = f)N)rf   Úoptions)rf   Fz/The document backend could not parse the input.rn   rm   )r]   rb   Ú	Exceptionrs   r4   r\   rE   rP   r,   ÚBACKEND_FAILUREre   r}   )rˆ   rg   rf   Úexcs       rU   rx   ÚInputDocument._init_doc/  sÈ   € ð
	Ø×#×#Ù 'ØØ#1Ø ×0Ñ0ñ!�•ñ !(¨Ñ L�•ð  �}‰}×%Ñ%×'Ñ'ØˆDŒJÜ,ØIÜ(×8Ñ8ñˆD�Oð (øô ó 	ô
 ˜cÔ#4×5Ñ5ØØˆDŒJÜ,Ü˜C›×UÐ$UÜ(×8Ñ8Ø"ñˆDŒOô
 ûð	ús   ‚(A< «A< Á<
CÂACÃC)	rb   re   r[   rZ   r`   r_   r^   ra   r\   )NNN)ri   N)$rK   rL   rM   rN   rO   r   r
   r   rQ   rP   r\   Úboolr]   r   r$   r3   r^   r0   r`   Úintra   r"   r   re   rE   r   r   r	   r   rq   Úclassmethodr‘   rw   rx   rS   Ú__classcell__©rŠ   s   @rU   rW   rW   €   s  ø‡ Ù9à
Ø‘%Ð$OÑPÐPñó ð ØÙÐVÑWð	Yñó ñ ˜Ð*VÑW€Eˆ4ÓWÙ05ØÐ8ñ1€O�X˜nÑ-ó ñ #ÙÓÐ&Xñ€FˆNó ð �k¡5Ð5KÑ#LÐLÑMÓMá#ØÐ=ñ€Hˆh�s‰mó ñ ˜AÐ+SÑT€J�ÓTà%Ó%á+6¸tÑ+D€J�˜Ñ(ÓDð 59Ø"&Ø+/ñbà˜g t˜mÑ,ðbð ðbð Ð-Ñ.ð	bð
 " .Ñ1ðbð ˜3‘-ðbð ˜Ñ(ðbð 
÷bð bðH ð ,0Ø.2ò"ð ð"ð ð	"ð
 ð"ð ˜Ñ(ð"ð ˜NÑ+ð"ð 
ô"ó ð"ôH
ð"àÐ-Ñ.ð"ð ˜g t˜mÑ,ð"ð 
÷	"ò "rT   rW   Úin_docri   c                 ó:   • U R                   nUc  gUR                  $ )aW  Return the exception behind an invalid input document, if one exists.

Companion to ``build_invalid_input_errors``: lets the converter raise
``ConversionError`` with ``from`` so the original backend exception (e.g.
``PdfiumError`` for an encrypted PDF) stays reachable via ``__cause__``
for programmatic error classification. See issue #1920.
N)re   rI   ©r¤   rŒ   s     rU   Úget_input_rejection_causer§   T  s$   € ð ×!Ñ!€IØÑØØ×#Ñ#Ð#rT   c                 óÐ   • U R                   nUc)  [        [        R                  SS[        R
                  S9/$ [        [        R                  SUR                  UR                  S9/$ )a  Build the ErrorItem list for an invalid input document.

Surfaces the rejection reason captured during construction so the document
reaches the user as a categorized error instead of an empty errors list.
Falls back to a generic UNKNOWN entry if no reason was recorded.
rk   zInput document is not valid.)Úcomponent_typeÚmodule_nameÚerror_messagerH   )re   r+   r)   Ú
USER_INPUTr,   r‡   rG   rH   r¦   s     rU   Úbuild_invalid_input_errorsr­   b  sq   € ð ×!Ñ!€IØÑäÜ3×>Ñ>ØØ<Ü(×0Ñ0ñ	ð
ð 	
ô 	Ü/×:Ñ:ØØ#×+Ñ+Ø×'Ñ'ñ		
ðð rT   c                   ó   • \ rS rSrSrSrSrg)ÚDocumentFormati}  Úv2Úv1rJ   N)rK   rL   rM   rN   ÚV2ÚV1rS   rJ   rT   rU   r¯   r¯   }  s   † Ø	€BØ	ƒBrT   r¯   c                   ó&  • \ rS rSr% \" S5      r\\S'   \" S5      r\\S'   \" S5      r	\\S'   \" S5      r
\\S	'   \" S
5      r\\S'   \R                  " 5       r\\S'   \R                  R                   r\\S'   \R$                  " 5       r\\S'   Srg)ÚDoclingVersioni‚  ÚdoclingÚdocling_versionzdocling-slimÚdocling_slim_versionzdocling-coreÚdocling_core_versionzdocling-ibm-modelsÚdocling_ibm_models_versionzdocling-parseÚdocling_parse_versionÚplatform_strÚpy_impl_versionÚpy_lang_versionrJ   N)rK   rL   rM   rN   r8   r·   rP   rQ   r¸   r¹   rº   r»   Úplatformr¼   ÚsysÚimplementationÚ	cache_tagr½   Úpython_versionr¾   rS   rJ   rT   rU   rµ   rµ   ‚  sŽ   ‡ Ù'¨	Ó2€O�SÓ2Ù ,¨^Ó <Ð˜#Ó<Ù ,¨^Ó <Ð˜#Ó<Ù&2Ð3GÓ&HÐ ÓHÙ!-¨oÓ!>Ð˜3Ó>Ø ×)Ò)Ó+€L�#Ó+Ø×-Ñ-×7Ñ7€O�SÓ7Ø#×2Ò2Ó4€O�SÖ4rT   rµ   c                   ó^  • \ rS rSr% \" 5       r\\S'   Sr\\	   \S'   \
R                  r\
\S'   / r\\   \S'   / r\\   \S'   0 r\\	\4   \S'   \" \S	9r\\S
'   \r\\S'   SS\\   S\4S jjrS\4S jrS\4S jrS\4S jr SS.S\!\	\"4   S\\#   4S jjr$\%S\!\	\"4   SS 4S j5       r&Sr'g)ÚConversionAssetsi�  ÚversionNÚ	timestampÚstatusÚerrorsÚpagesÚtimings)Údefault_factoryÚ
confidenceÚdocumentrH   ri   c                 ór   ^• Tc  [        U R                  5      $ [        U4S jU R                   5       5      $ )z“Whether any error was recorded.

Args:
    category: If given, only errors of this category count; otherwise
        any recorded error qualifies.
c              3   ó@   >#   • U  H  oR                   T:H  v •  M     g 7f©N)rH   )Ú.0r‰   rH   s     €rU   Ú	<genexpr>Ú.ConversionAssets.has_errors.<locals>.<genexpr>¤  s   øé € Ð?²;¨a—:‘: Ö)²;ùs   ƒ)rŸ   rÉ   Úany)rˆ   rH   s    `rU   Ú
has_errorsÚConversionAssets.has_errors›  s/   ø€ ð ÑÜ˜Ÿ™Ó$Ð$ÜÔ?°4·;²;Ó?Ó?Ð?rT   c                 ó@   • U R                  [        R                  5      $ )z'Whether any error has category TIMEOUT.)rÖ   r,   ÚTIMEOUTr—   s    rU   Úhas_timeout_errorsÚ#ConversionAssets.has_timeout_errors¦  s   € à�‰œ×6Ñ6Ó7Ð7rT   c                 ó@   • U R                  [        R                  5      $ )z1Whether any error has category INFERENCE_FAILURE.)rÖ   r,   ÚINFERENCE_FAILUREr—   s    rU   Úhas_inference_errorsÚ%ConversionAssets.has_inference_errorsª  s   € à�‰œ×@Ñ@ÓAÐArT   c                 ó@   • U R                  [        R                  5      $ )zGWhether any error has category BACKEND_FAILURE (backend/parse failure).)rÖ   r,   rœ   r—   s    rU   Úhas_parse_errorsÚ!ConversionAssets.has_parse_errors®  s   € à�‰œ×>Ñ>Ó?Ð?rT   é   )Úindentrh   rä   c          
      óL  ^^^• [        U[        5      (       a  [        U5      n[        5       nU4S jm[        R
                  " US[        R                  S9 mS[        SS4UUU4S jjn[        R                  " 5       R                  5       U l
        U" SU R                  5        U" S	U R                  5        U" S
U R                  5        U" SU R                  5        U" SU R                  5        U" SU R                  5        U" SU R                   5        U R"                  R%                  5       nTR'                  S[(        R*                  " USTS9R-                  S5      5        SSS5        UR/                  S5        UR0                  (       a9  UR0                  R3                  5       (       d  UR0                  R5                  SSS9  UR7                  S5       nUR9                  UR;                  5       5        SSS5        g! , (       d  f       N£= f! , (       d  f       g= f)z,Serialize the full ConversionAssets to JSON.c                 óè  >•  [        U S5      (       a  U R                  SS9$   SSKJn  [        X5      (       a  U R                  $  [        U [        5      (       a  U  Vs/ s H  nT" U5      PM     sn$ [        U [        5      (       a,  U R                  5        VVs0 s H  u  p4UT" U5      _M     snn$ U $ ! [         a    U R                  5       s $ f = f! [         a     N�f = fs  snf s  snnf )NÚ
model_dumpÚjson©Úmoder   r   )Úhasattrrç   Ú	TypeErrorÚenumr   rs   Úvaluer›   ÚlistÚdictÚitems)Úobjr   ÚxÚkÚvÚto_jsonables        €rU   rö   Ú*ConversionAssets.save.<locals>.to_jsonable¾  sç   ø€ ð(ä˜3 ×-Ñ-ØŸ>™>¨v˜>Ð6Ð6ð .ðÝ%ä˜c×(Ñ(ØŸ9™9Ð$ð )ô ˜#œt×$Ñ$Ù03Ó4²¨1™ Až±Ñ4Ð4Ü˜#œt×$Ñ$Ø69·i±i´kÔB²k©d¨a˜™; q›>Ò)±kÒBÐBð ˆJøô) ó (à—~‘~Ó'Ò'ð(ûô ó Ùðüò
 5ùãBs.   ƒB9 ¥!C Á!C)ÂC.Â9CÃCÃ
C&Ã%C&Úw)rê   ÚcompressionrC   ri   Nc                 ó~   >• [         R                  " T" U5      STS9nTR                  XR                  S5      5        g )NF©Úensure_asciirä   úutf-8)rè   ÚdumpsÚwritestrÚencode)rC   ÚpayloadÚdatarä   rö   Úzfs      €€€rU   Ú
write_jsonÚ)ConversionAssets.save.<locals>.write_jsonÛ  s4   ø€ Ü—z’zÙ Ó(°uÀVñ�ð —‘˜D§+¡+¨gÓ"6Õ7rT   útimestamp.jsonúversion.jsonústatus.jsonúerrors.jsonú
pages.jsonútimings.jsonúconfidence.jsonúdocument.jsonFrû   rý   r   T)ÚparentsÚexist_okÚwb)rs   rP   r	   r   ÚzipfileÚZipFileÚZIP_DEFLATEDr   ÚnowÚ	isoformatrÇ   rÆ   rÈ   rÉ   rÊ   rË   rÍ   rÎ   Úexport_to_dictrÿ   rè   rþ   r   ÚseekÚparentÚexistsÚmkdirÚopenÚwriteÚgetvalue)	rˆ   rh   rä   Úbufr  Údoc_dictÚfrö   r  s	     `    @@rU   ÚsaveÚConversionAssets.save²  s’  ú€ ô �h¤×$Ñ$Ü˜H“~ˆHä‹iˆõ	ô6 �_Š_˜S s¼×8LÑ8LÒMÐQSð8¤ð 8°$÷ 8ñ 8ô &Ÿ\š\›^×5Ñ5Ó7ˆDŒNÙÐ'¨¯©Ô8ñ �~ t§|¡|Ô4Ù�} d§k¡kÔ2Ù�} d§k¡kÔ2Ù�| T§Z¡ZÔ0Ù�~ t§|¡|Ô4ÙÐ(¨$¯/©/Ô:à—}‘}×3Ñ3Ó5ˆHØ�K‰KØÜ—
’
˜8°%ÀÑG×NÑNÈwÓWô÷+ Nð6 	�‰�ŒØ�?�? 8§?¡?×#9Ñ#9×#;Ñ#;Ø�O‰O×!Ñ!¨$¸Ð!Ñ>Ø�]‰]˜4Ô  AØ�G‰G�C—L‘L“NÔ#÷ !Ð ÷= NÕMú÷< !Õ ús   ÁDHÇ HÈ
HÈ
H#c                 óT  ^• [        U[        5      (       a  [        U5      n[        5       nSn[        R
                  n/ n/ n0 n[        5       n[        n	[        R                  " USS9 mS[        4U4S jjn
U
" S5      =nb   [        R                  U5      nU
" S5      =nb  [        U[        5      (       a  UnU
" S	5      =nb   [	        U5      nU
" S
5      =nb;  [        U[        5      (       a&  U Vs/ s H  n[        R                  " U5      PM     nnU
" S5      =nb;  [        U[        5      (       a&  U Vs/ s H  n[         R                  " U5      PM     nnU
" S5      =nbN  [        U["        5      (       a9  UR%                  5        VVs0 s H  u  pïU[&        R                  " U5      _M     nnnU
" S5      =nb+  [        U["        5      (       a  [        R                  " U5      nU
" S5      =nb+  [        U["        5      (       a  [(        R                  " U5      n	SSS5        U " UUUUUUUU	S9$ ! [         a#  n[        R                  SU 35         SnAGNÇSnAff = f! [         a    [        R
                  n GN³f = fs  snf s  snf s  snnf ! , (       d  f       N|= f)zLoad a ConversionAssets.NÚrré   rC   c                 óæ   >•  TR                  U S5       n[        R                  " UR                  5       R	                  S5      5      sS S S 5        $ ! , (       d  f       g = f! [
         a     g f = f)Nr$  rý   )r  rè   ÚloadsÚreadÚdecodeÚKeyError)rC   Úfpr  s     €rU   Ú	read_jsonÚ(ConversionAssets.load.<locals>.read_json  sR   ø€ ð ØŸ™  sÔ+¨rÜ#Ÿzšz¨"¯'©'«)×*:Ñ*:¸7Ó*CÓD÷ ,×+×+ûäó  Ùð ús.   ƒA# •3AÁ	A# Á
A ÁA# Á A# Á#
A0Á/A0r  zCould not read version: r  r  r	  r
  r  r  r  )rÆ   rÇ   rÈ   rÉ   rÊ   rË   rÍ   rÎ   )rs   rP   r	   rµ   r(   ÚPENDINGr'   Ú_EMPTY_DOCLING_DOCr  r  Úmodel_validater›   r…   Úerrorrï   r+   r2   rð   rñ   r6   r   )r�   rh   Úversion_inforÇ   rÈ   rÉ   rÊ   rË   rÍ   rÎ   r+  r  r�   Úitemrô   rõ   r  s                   @rU   ÚloadÚConversionAssets.loadú  sµ  ø€ ô �h¤×$Ñ$Ü˜H“~ˆHô (6Ó'7ˆØ#'ˆ	Ü!×)Ñ)ˆØ"$ˆØˆØ,.ˆÜ%Ó'ˆ
Ü$6ˆä�_Š_˜X¨CÒ0°Bð ¤÷  ñ " .Ó1Ð1�Ñ>ðAÜ#1×#@Ñ#@ÀÓ#F�Lñ
 "Ð"2Ó3Ð3�Ñ@Ü˜d¤C×(Ñ(Ø $�Iñ " -Ó0Ð0�Ñ=ð6Ü-¨dÓ3�Fñ
 " -Ó0Ð0�Ñ=Ä*Ø”d÷Cñ Cñ FJÓJÂT¸Tœ)×2Ò2°4Ö8ÁT�ÐJñ " ,Ó/Ð/�Ñ<ÄÈDÔRV×AWÑAWÙ?CÓDºt°tœ×,Ò,¨TÖ2¹t�ÐDñ " .Ó1Ð1�Ñ>Ä:Ø”d÷Dñ Dð KOÏ*É*Ì,ÔWÊ,Á$À!˜1œm×:Ò:¸1Ó=Ò=É,�ÑWñ "Ð"3Ó4Ð4�ÑAÄjØ”d÷Gñ Gô .×<Ò<¸TÓB�
ñ " /Ó2Ð2�Ñ?ÄJØ”d÷Eñ Eô +×9Ò9¸$Ó?�÷m 1ñp Ø ØØØØØØ!Øñ	
ð 		
øôW !ó AÜ—J‘JÐ!9¸#¸Ð?×@Ò@ûðAûô !ó 6Ü-×5Ñ5“Fð6üò Kùò Eùó X÷U 1Õ0ús   Á)JÂH8Â-JÃI(Ã$JÃ6 J	Ä&JÄ< JÅ5JÆ#JÆ4A/JÈ8
I%ÉI ÉJÉ I%É%JÉ(JÊJÊJÊJÊ
J')rÇ   rÑ   )(rK   rL   rM   rN   rµ   rÆ   rQ   rÇ   r   rP   r(   r-  rÈ   rÉ   rï   r+   rÊ   r2   rË   rð   r6   r   r'   rÍ   r.  rÎ   r   r,   rŸ   rÖ   rÚ   rÞ   rá   r   r	   r    r!  r¡   r3  rS   rJ   rT   rU   rÅ   rÅ   �  s  ‡ Ù,Ó.€Gˆ^Ó.à#€Iˆx˜‰}Ó#à/×7Ñ7€FÐÓ7Ø €FˆD�‰OÓ à€Eˆ4�‰:ÓØ(*€GˆT�#�}Ð$Ñ%Ó*Ù#(Ð9IÑ#J€JÐ ÓJà 2€HˆoÓ2ñ	@ 8¨OÑ#<ð 	@Èõ 	@ð8 Dô 8ðB dô Bð@ $ô @ð !"ò	F$ð ˜˜T˜	Ñ"ðF$ð ˜‘õ	F$ðP ðP
˜E # t )Ñ,ð P
Ð1Có P
ó óP
rT   rÅ   c                   óZ   • \ rS rSr% \\S'   \" 5       r\\S'   \" SS9r	\
\\      \S'   Srg)ÚConversionResultiN  ÚinputÚ	assembledNrc   Ú_pdf_outlinerJ   )rK   rL   rM   rN   rW   rQ   r&   r8  r   r9  r   rï   r5   rS   rJ   rT   rU   r6  r6  N  s0   ‡ ØÓÙ,›€Iˆ}Ó.ñ
 5@ÈÑ4M€L�(˜4 Ñ0Ñ1ÖMrT   r6  c                   óx   ^ • \ rS rSrU 4S jrS\4S jr\S\\	   4S j5       r
\S\4S j5       rU 4S jrSrU =r$ )	Ú_DummyBackendiX  c                 ó&   >• [         TU ]  " U0 UD6  g rÑ   )rp   rq   )rˆ   ÚargsÚkwargsrŠ   s      €rU   rq   Ú_DummyBackend.__init__Y  s   ø€ Ü‰Ò˜$Ð) &Ó)rT   ri   c                 ó   • g©NFrJ   r—   s    rU   r}   Ú_DummyBackend.is_valid\  s   € ØrT   c                 ó   • [        5       $ rÑ   )Úset©r�   s    rU   Úsupported_formatsÚ_DummyBackend.supported_formats_  s	   € ä‹uˆrT   c                 ó   • grA  rJ   rE  s    rU   r~   Ú!_DummyBackend.supports_paginationc  s   € àrT   c                 ó    >• [         TU ]  5       $ rÑ   )rp   Úunload)rˆ   rŠ   s    €rU   rK  Ú_DummyBackend.unloadg  s   ø€ Ü‰w‰~ÓÐrT   rJ   )rK   rL   rM   rN   rq   rŸ   r}   r¡   rD  r0   rF  r~   rK  rS   r¢   r£   s   @rU   r;  r;  X  sY   ø† õ*ð˜$ô ð ð # kÑ"2ó ó ðð ð Dó ó ð÷ ó  rT   r;  c                   ót  • \ rS rSr% \\\\\\	4      \
S'   Sr\\\\4      \
S'   \" 5       r\\   \
S'   S\\S4   S\\   4S	 jr  S&S
\S\\S4   S\S\\   S\4
S jjr\S\S\4S j5       r\S\S\4S j5       rS\\\4   S\\   4S jr\S
\S\4S j5       r\S
\S\4S j5       r\S\\\4   S\\   4S j5       r \S\S\4S j5       r!\ S'S\"S\S\#\   S\\   S\\   4
S jj5       r$\S 5       r%\S\"S\\&S      4S  j5       r'\S\"S\\&S!      4S" j5       r(\S\\\4   S\\&S#      4S$ j5       r)S%r*g)(Ú_DocumentConversionInputik  Úpath_or_stream_iteratorNÚheadersr^   Úformat_optionsr9   ri   c              #   ó  #   • U R                    GH•  n[        U[        [        45      (       a  [        U[        5      (       a9  [        UR                  5      n0 U R
                  =(       d    0 EUR
                  EnOUnU R
                  nUn [        UUU R                  R                  S9nOUnUnU R-                  U5      nS n	U(       a  X�;  a>  [$        R'                  S	UR.                   S
U SUR1                  5        S35        [2        n
O!X   nUR4                  n
UR7                  U5      n	[        U[8        5      (       a  UnO9[        U[:        5      (       a  UR<                  nO[?        S[A        U5       35      e[C        UUUR.                  U R                  U
U	S9v •  GM˜     g ! [         ao  nU R                  UR                  UUR                  [        SUR                   SU R                  R                   S3[        R                  S9S9v •   S nAGM  S nAf[         ["        4 aS  n[$        R'                  SX'5        U R                  U R)                  U5      UU R+                  U5      S9v •   S nAGMp  S nAff = f7f)N)rv   r”   r•   r–   rm   )rC   rQ  Ú	file_sizerŒ   z%Failed to resolve input source %r: %s)rC   rQ  rŒ   zInput document z with format z% does not match any allowed format: (Ú)z!Unexpected obj type in iterator: )rf   r_   rh   r^   rg   r]   )"rO  rs   rP   r/   ÚurlrP  r   r^   rv   r   Ú_build_invalid_input_documentrh   ÚsizerE   r,   r€   rƒ   Ú
ValueErrorr…   r0  Ú_filename_from_sourceÚ_classify_source_errorÚ_guess_formatrC   Úkeysr;  rg   Úbackend_options_for_inputr	   r*   Ústreamr{   r|   rW   )rˆ   rQ  r2  Ú
source_uriÚreq_headersÚbackend_inputrò   r�   r_   r]   rg   rš   rf   s                rU   ÚdocsÚ_DocumentConversionInput.docsp  sc  é € ð ×0Õ0ˆDô
 ˜$¤¤jÐ 1×2Ñ2Ü˜d¤J×/Ñ/Ü!$ T§X¡X£�Jð #K d§l¡l×&8°bÐ"J¸T¿\¹\Ð"J‘Kà!%�JØ"&§,¡,�KØ *�ð#Ü2Ø"Ø#Ø&*§k¡k×&?Ñ&?ñ‘CðH �Ø $�Ø×'Ñ'¨Ó,ˆFà8<ˆOÞ˜VÓ9Ü—
‘
Ø% c§h¡h Z¨}¸V¸Hð E,Ø,:×,?Ñ,?Ó,AÐ+BÀ!ðEôô (‘à(Ñ0�Ø!Ÿ/™/�Ø")×"CÑ"CÀMÓ"R�ô ˜#œt×$Ñ$Ø!$‘Ü˜C¤×0Ñ0Ø!$§¡‘ä"Ð%FÄtÈCÃyÀkÐ#RÓSÐSäØ-ØØŸ™Ø—{‘{ØØ /ñõ òY 1øô* 2ó Ø×<Ñ<Ø Ÿ\™\Ø'5Ø"%§(¡(Ü"0à",¨S¯X©X¨Jð 7,Ø,0¯K©K×,EÑ,EÐ+FÀgð!Oô &5×%;Ñ%;ñ#ð	 =ð ò ö ûÜ¤Ð,ó ô —J‘JÐFÈÔRØ×<Ñ<Ø!×7Ñ7¸
ÓCØ'5Ø"&×"=Ñ"=¸cÓ"Bð =ð ò ö
 ûðüsE   ‚B
JÂF*Â,C>JÆ*
JÆ4A#HÈJÈJÈ1AI?É8JÉ?JÊJrC   rS  rŒ   c                 óÐ   • U R                  [        U[        5       S95      nUc"  [        [	        UR                  5       5      5      n[        R                  UUUU R                  US9$ )N)rC   r^  )rh   r_   r`   r^   rŒ   )	r[  r*   r   ÚnextÚiterr\  rW   r‘   r^   )rˆ   rC   rQ  rS  rŒ   Úguessed_formats         rU   rV  Ú6_DocumentConversionInput._build_invalid_input_documentÉ  sf   € ð ×+Ñ+¬NÀÌWËYÑ,WÓXˆØÑ!Ü!¤$ ~×':Ñ':Ó'<Ó"=Ó>ˆNä×+Ñ+ØØ!ØØ—;‘;Øð ,ð 
ð 	
rT   r�   c                 óØ   • [        U SS5      n[        USS5      nUS;   a!  [        [        U 5      [        R                  S9$ [        [        U 5      =(       d    S[        R
                  S9$ )aN  Map a source-resolution failure to an InputRejection.

Splits HTTP status rejections the same way as the jobkit task path
(``_classify_http_status``): policy status codes map to POLICY, every
other status or transport failure maps to SOURCE_UNAVAILABLE.
``response.status_code`` is read by duck-typing to avoid a ``requests``
import.
ÚresponseNÚstatus_code>   é‘  é“  é”  é�  éŸ  é¦  rm   z%Source document could not be reached.)ÚgetattrrE   rP   r,   r€   r„   )r�   rj  rk  s      rU   rZ  Ú/_DocumentConversionInput._classify_source_errorÜ  sc   € ô ˜3 
¨DÓ1ˆÜ˜h¨°tÓ<ˆØÐ8Ó8Ü!¬#¨c«(¼_×=SÑ=SÑTÐTÜÜ˜“H×GÐ GÜ$×7Ñ7ñ
ð 	
rT   Úsourcec                 ó°   •  [        [        5      R                  U 5      n[        U0 S9$ ! [         a!    [	        U 5      R
                  =(       d    U s $ f = f)ab  Best-effort filename for a source that could not be resolved.

Reuses docling-core's ``resolve_remote_filename`` for URLs (the same
helper ``resolve_source_to_stream`` uses to name successful fetches) so a
failed source is labeled consistently; the URL path basename is used with
the query string dropped. Non-URL sources fall back to the path basename.
)Úhttp_urlÚresponse_headers)r    r   Úvalidate_pythonr!   r
   rC   r   )rt  rv  s     rU   rY  Ú._DocumentConversionInput._filename_from_sourceï  sR   € ð	3Ü"¤:Ó.×>Ñ>¸vÓFˆHô '°È2ÑNÐNøô ó 	3Ü˜FÓ#×(Ñ(×2¨FÒ2ð	3ús   ‚* ª(AÁArò   c                 óÂ	  • Sn/ nS n[        U[        5      (       Ga´  [        R                  UR                  5      (       a  [
        R                  $ [        R                  UR                  5      (       a  [
        R                  $ [        R                  " [        U5      5      nUR                  (       a  UR                  SS  OSnUc  [        R                  U5      nUS L =(       d    US L=(       a    UR                  5       S;   nU(       a+  UR                  S5       nUR!                  S5      nS S S 5        Ub“  UR                  5       S:X  a  SnUR                  R                  5       n	U	S	:X  a  US
-   nGOuU	S:X  a  US-   nGOhU	S:X  a  US-   nGO[U	S:X  a  ["        [
        R$                     S   nGO9[        R'                  U5      n
U
b  U
nGO[        U[(        5      (       Ga  [        R                  UR                  5      (       a  [
        R                  $ [        R                  UR                  5      (       a  [
        R                  $ UR*                  R!                  S5      nUR*                  R-                  S5        [        R                  " U5      nSUR                  ;   a?  UR                  R/                  S5      (       d  UR                  R1                  SS5      S   OSnUc#  [        R                  UR                  5       5      nUbÙ  UR                  5       S:X  aÅ  UR                  R                  5       nSnUR3                  S	5      (       a  US
-   nO�UR3                  S5      (       a  US-   nOqUR3                  S5      (       a  US-   nOUUR3                  S5      (       a  ["        [
        R$                     S   nO$[        R'                  UR*                  5      n
U
b  U
nWb2  UR                  5       S:X  a  [        R5                  U5      =n(       a  UnU=(       d    [        R7                  U5      nU=(       d    [        R9                  U5      nU=(       d    Sn[:        R<                  " U/ 5      n[>        RA                  SU 35        U(       a.  [C        U5      S:X  a  US;  a  US   $ [        RE                  X%X4S9$ g ! , (       d  f       GN¥= f)NrT   é   rk   ¾   úapplication/xmlúapplication/xhtml+xmlÚrbi   zapplication/zipú-application/vnd.openxmlformats-officedocumentz.xlsxú.spreadsheetml.sheetz.docxú.wordprocessingml.documentz.pptxú.presentationml.presentationz.pagesr   i    rl   éÿÿÿÿzapplication/gzipú
text/plainzdetected formats: )Úext)#rs   r	   rN  Ú_has_doclang_extensionrC   r0   ÚXML_DOCLANGÚ_has_dclx_extensionÚDCLXÚfiletypeÚ
guess_mimerP   ÚsuffixÚ_mime_from_extensionÚlowerr  r'  r.   ÚIWORK_PAGESÚ_detect_office_mime_from_zipr*   r^  r  Ú
startswithÚrsplitÚendswithÚ_detect_mets_gbsÚ_detect_html_xhtmlÚ_detect_csvr1   Úgetr…   ÚinfoÚlenÚ_guess_from_content)rˆ   rò   ÚcontentÚformatsÚobj_extÚmimeÚneeds_content_sniffr   Ú	mime_rootr�  Úoffice_mimeÚobjnameÚdetected_mimes                rU   r[  Ú&_DocumentConversionInput._guess_formatþ  s  € ØˆØ%'ˆØ!%ˆä�cœ4× Ò Ü'×>Ñ>¸s¿x¹x×HÑHÜ"×.Ñ.Ð.Ü'×;Ñ;¸C¿H¹H×EÑEÜ"×'Ñ'Ð'Ü×&Ò&¤s¨3£xÓ0ˆDØ(+¯
¯
�c—j‘j  ‘n¸ˆGØ‰|Ü/×DÑDÀWÓM�Ø"&¨$ ,÷ #Ø˜DÐ ÷ QØ—J‘J“LÐ$PÑPð  ö #Ø—X‘X˜d”^ qØŸf™f T›l�G÷ $àÑ D§J¡J£LÐ4EÓ$EØK�	ØŸ™×)Ñ)Ó+�Ø˜WÓ$Ø$Ð'=Ñ=’DØ˜wÓ&Ø$Ð'CÑC’DØ˜wÓ&Ø$Ð'EÑE’DØ˜xÓ'Ü+¬K×,CÑ,CÑDÀQÑG’Dä":×"WÑ"WØó#�Kð #Ñ.Ø*˜ùä˜œ^×,Ò,Ü'×>Ñ>¸s¿x¹x×HÑHÜ"×.Ñ.Ð.Ü'×;Ñ;¸C¿H¹H×EÑEÜ"×'Ñ'Ð'Ø—j‘j—o‘o dÓ+ˆGØ�J‰J�O‰O˜AÔÜ×&Ò& wÓ/ˆDð ˜3Ÿ8™8“O¨C¯H©H×,?Ñ,?À×,DÑ,Dð —‘—‘  QÓ'¨Ò+àð ð
 ‰|Ü/×DÑDÀWÇ]Á]Ã_ÓU�ØÑ D§J¡J£LÐ4EÓ$EØŸ(™(Ÿ.™.Ó*�ØK�	Ø×#Ñ# G×,Ñ,Ø$Ð'=Ñ=‘DØ×%Ñ% g×.Ñ.Ø$Ð'CÑC‘DØ×%Ñ% g×.Ñ.Ø$Ð'EÑE‘DØ×%Ñ% h×/Ñ/Ü+¬K×,CÑ,CÑDÀQÑG‘Dä":×"WÑ"WØŸ
™
ó#�Kð #Ñ.Ø*˜àÑ §
¡
£Ð0BÓ BÜ 8× IÑ IÈ#Ó NÐNˆ}ÕNØ$�à×KÔ/×BÑBÀ7ÓKˆØ×DÔ/×;Ñ;¸GÓDˆØ×#�|ˆÜ"×&Ò& t¨RÓ0ˆÜ�	‰	Ð& w iÐ0Ô1æÜ�7‹|˜qÓ  T°,Ó%?Ø˜q‘zÐ!ä/×CÑCØ 7ð Dð ð ð ÷O $–^ús   ÄSÓ
Sc                 óD   • U R                  5       nUR                  S5      $ )N)z.dclgz	.dclg.xml©r�  r”  )rC   Ú
lower_names     rU   r‡  Ú/_DocumentConversionInput._has_doclang_extensionZ  s   € à—Z‘Z“\ˆ
Ø×"Ñ"Ð#9Ó:Ð:rT   c                 ó@   • U R                  5       R                  S5      $ )Nz.dclxr§  rB   s    rU   r‰  Ú,_DocumentConversionInput._has_dclx_extension_  s   € à�z‰z‹|×$Ñ$ WÓ-Ð-rT   c                 óØ  •  [         R                  " U 5       n[        UR                  5       5      nSnSU;   a5  US-   sSSS5        [	        U [
        5      (       a  U R                  S5        $ $ SU;   a5  US-   sSSS5        [	        U [
        5      (       a  U R                  S5        $ $ SU;   a5  US	-   sSSS5        [	        U [
        5      (       a  U R                  S5        $ $ S
U;   au  UR                  S
5      R                  SSS9nUR                  S5      (       a@  UR                  5       sSSS5        [	        U [
        5      (       a  U R                  S5        $ $ SSS5        [	        U [
        5      (       a  U R                  S5        g! , (       d  f       N5= f! [         R                  [        4 a     NTf = f! [	        U [
        5      (       a  U R                  S5        f f = f)z³Detect Office Open XML format by inspecting ZIP archive contents.

Useful when the filename has no extension (e.g. pre-signed URLs)
and filetype only reports ``application/zip``.
r€  zword/document.xmlr‚  Nr   zxl/workbook.xmlr�  zppt/presentation.xmlrƒ  ÚmimetypeÚasciiÚignore©rÉ   z#application/vnd.oasis.opendocument.)r  r  rD  Únamelistrs   r   r  r'  r(  r’  ÚstripÚ
BadZipFilerƒ   )rt  r  Únamesr¡  Úodf_mimes        rU   r‘  Ú5_DocumentConversionInput._detect_office_mime_from_zipc  sª  € ð	Ü—’ Ô(¨BÜ˜BŸK™K›MÓ*�ØK�	Ø&¨%Ó/Ø$Ð'CÑC÷	 )Ð(ô  ˜&¤'×*Ñ*Ø—‘˜A•ð +ð '¨%Ó/Ø$Ð'=Ñ=÷ )Ð(ô  ˜&¤'×*Ñ*Ø—‘˜A•ð +ð ,¨uÓ4Ø$Ð'EÑE÷ )Ð(ô  ˜&¤'×*Ñ*Ø—‘˜A•ð +ð  Ó&Ø!Ÿw™w zÓ2×9Ñ9¸'È(Ð9ÐS�HØ×*Ñ*Ð+P×QÑQØ'Ÿ~™~Ó/÷ )Ð(ô  ˜&¤'×*Ñ*Ø—‘˜A•ð +÷! )ô  ˜&¤'×*Ñ*Ø—‘˜A”Ø÷% )Õ(ûô ×"Ñ"¤GÐ,ó 	Ùð	ûô ˜&¤'×*Ñ*Ø—‘˜A•ð +úsp   ‚F  ˜&F¾	F  Á/
FÁ9	F  Â*
FÂ4	F  Ã%A
FÄ/	F  Å F  Æ
FÆF  ÆG  ÆF  Æ F=Æ:G  Æ<F=Æ=G  Ç )G)Úcontent_strc                 ó>  • [         R                  " SSU [         R                  S9n U R                  5       n [         R                  " SU 5      (       a%  [         R                  " SSU SS9R                  5       n [         R                  " SU [         R
                  5      S	L$ )
z>Return whether XML content starts with a DocLang root element.ú<!--(.*?)-->rk   ©Úflagsú<\?xmlz<\?xml[^>]*\?>r{  )Úcountz<\s*doclang\bN)ÚreÚsubÚDOTALLÚlstripÚmatchÚ
IGNORECASE)r·  s    rU   Ú_has_doclang_root_elementÚ2_DocumentConversionInput._has_doclang_root_element�  sv   € ô —f’f˜_¨b°+ÄRÇYÁYÑOˆØ!×(Ñ(Ó*ˆÜ�8Š8�I˜{×+Ñ+ÜŸ&š&Ð!2°B¸È1ÑM×TÑTÓVˆKÜ�xŠxÐ(¨+´r·}±}ÓEÈTÐQÐQrT   rœ  rŸ  r�  r†  c                 óº  ^• SnUS;   Ga.  U R                  SSS9n[        R                  U;   a*  SU;   a$  SUR                  5       ;   a  [        R                  $ [        R
                  " SU5      nU(       a  UR                  5       m[        R                  U;   a+  [        U4S	 jS
 5       5      (       a  [        R                  nO0[        R                  U;   a  ST;   d  ST;   a  [        R                  nUc>  [        R                  U;   a*  [        R                  U5      (       a  [        R                  nU$ US:X  aœ  U R                  SSS9n[        R                  U;   a(  UR                  S5      (       a  [        R                  nU$ [        R                  U;   a<  Ub9  UR                  5       [        [        R                     ;   a  [        R                  nU$ )zEGuess the input format of a document by checking part of its content.Nr|  rý   Úreplacer°  z!http://www.xbrl.org/2003/instancez<xbrlz<!DOCTYPE [^>]+>c              3   óJ   >#   • U  H  nUTR                  5       ;   v •  M     g 7frÑ   )r�  )rÒ   r2  Úxml_doctypes     €rU   rÓ   Ú?_DocumentConversionInput._guess_from_content.<locals>.<genexpr>¦  s*   øé € ð <ò!˜ð ˜K×-Ñ-Ó/Ö/ò!ùs   ƒ #)zus-patent-application-v4zus-patent-grant-v4zus-grant-025zpatent-application-publicationzJATS-journalpublishingzJATS-archiver…  )zPATN
zPATN
)r(  r0   ÚXML_XBRLr�  r¾  ÚsearchÚgroupÚ	XML_USPTOrÕ   ÚXML_JATSrˆ  rN  rÄ  r’  ÚMDr-   )rœ  rŸ  r�  r†  Úinput_formatr·  Úmatch_doctyperÉ  s          @rU   r›  Ú,_DocumentConversionInput._guess_from_contentŠ  s§  ø€ ð /3ˆàÐ?Ô?ð "Ÿ.™.¨¸˜.ÐCˆKô ×$Ñ$¨Ó/Ø7¸;ÓFØ˜{×0Ñ0Ó2Ó2ä"×+Ñ+Ð+äŸIšIÐ&9¸;ÓGˆMÞØ+×1Ñ1Ó3�Ü×(Ñ(¨GÓ3¼ô <ñ!ó<÷ 9ñ 9ô $/×#8Ñ#8‘Lä ×)Ñ)¨WÓ4Ø,°Ó;Ø%¨Ó4ä#.×#7Ñ#7�Lð Ñ$Ü×+Ñ+¨wÓ6Ü,×FÑFÀ{×SÑSä*×6Ñ6�ð$ Ðð! �\Ó!Ø!Ÿ.™.¨¸˜.ÐCˆKÜ×$Ñ$¨Ó/°K×4JÑ4JØ&÷5ñ 5ô  +×4Ñ4�ð Ðô —‘ 'Ó)Ø‘OØ—I‘I“KÔ#5´k·n±nÑ#EÓEô
  +Ÿ~™~�àÐrT   c                 óê  • S nU [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R
                     ;   a   U$ U [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R                     ;   a  [        [        R                     S   nU$ U [         [        R                      ;   a  [        [        R                      S   nU$ U [         [        R"                     ;   a  [        [        R"                     S   nU$ U [         [        R$                     ;   a  [        [        R$                     S   nU$ U [         [        R&                     ;   a  [        [        R&                     S   nU$ U [         [        R(                     ;   a  [        [        R(                     S   nU$ U [         [        R*                     ;   a  [        [        R*                     S   nU$ U [         [        R,                     ;   a  [        [        R,                     S   nU$ U [         [        R.                     ;   a"  U S:X  a  SO[        [        R.                     S   nU$ )Nr   Úmsgzapplication/vnd.ms-outlook)r-   r0   ÚASCIIDOCr.   ÚHTMLrÎ  rÐ  ÚCSVÚJSON_DOCLINGÚBOXNOTEÚEBCDICrr   ÚDOCXÚDOCÚPPTXÚPPTÚXLSXÚXLSÚODTÚODSÚODPÚVTTÚLATEXÚEMAIL)r†  rŸ  s     rU   rŽ  Ú-_DocumentConversionInput._mime_from_extensionÐ  s  € àˆØÔ$¤[×%9Ñ%9Ñ:Ó:Ü#¤K×$8Ñ$8Ñ9¸!Ñ<ˆDð^ ˆð] Ô&¤{×'7Ñ'7Ñ8Ó8Ü#¤K×$4Ñ$4Ñ5°aÑ8ˆDðZ ˆðY Ô&¤{×'<Ñ'<Ñ=Ó=ð ðR ˆðQ Ô&¤{§~¡~Ñ6Ó6Ü#¤K§N¡NÑ3°AÑ6ˆDðN ˆðM Ô&¤{§¡Ñ7Ó7Ü#¤K§O¡OÑ4°QÑ7ˆDðJ ˆðI Ô&¤{×'?Ñ'?Ñ@Ó@Ü#¤K×$<Ñ$<Ñ=¸aÑ@ˆDðF ˆðE Ô&¤{×':Ñ':Ñ;Ó;Ü#¤K×$7Ñ$7Ñ8¸Ñ;ˆDðB ˆðA Ô&¤{×'9Ñ'9Ñ:Ó:Ü#¤K×$6Ñ$6Ñ7¸Ñ:ˆDð> ˆð= Ô&¤{§¡Ñ7Ó7Ü#¤K§O¡OÑ4°QÑ7ˆDð: ˆð9 Ô&¤{×'7Ñ'7Ñ8Ó8Ü#¤K×$4Ñ$4Ñ5°aÑ8ˆDð6 ˆð5 Ô&¤{§¡Ñ7Ó7Ü#¤K§O¡OÑ4°QÑ7ˆDð2 ˆð1 Ô&¤{×'7Ñ'7Ñ8Ó8Ü#¤K×$4Ñ$4Ñ5°aÑ8ˆDð. ˆð- Ô&¤{§¡Ñ7Ó7Ü#¤K§O¡OÑ4°QÑ7ˆDð* ˆð) Ô&¤{×'7Ñ'7Ñ8Ó8Ü#¤K×$4Ñ$4Ñ5°aÑ8ˆDð& ˆð% Ô&¤{§¡Ñ7Ó7Ü#¤K§O¡OÑ4°QÑ7ˆDð" ˆð! Ô&¤{§¡Ñ7Ó7Ü#¤K§O¡OÑ4°QÑ7ˆDð ˆð Ô&¤{§¡Ñ7Ó7Ü#¤K§O¡OÑ4°QÑ7ˆDð ˆð Ô&¤{§¡Ñ7Ó7Ü#¤K§O¡OÑ4°QÑ7ˆDð ˆð Ô&¤{§¡Ñ7Ó7Ü#¤K§O¡OÑ4°QÑ7ˆDð ˆð Ô&¤{×'8Ñ'8Ñ9Ó9Ü#¤K×$5Ñ$5Ñ6°qÑ9ˆDð ˆð Ô&¤{×'8Ñ'8Ñ9Ó9ð ˜%“<ñ -ä%¤k×&7Ñ&7Ñ8¸Ñ;ð ð
 ˆrT   )r~  r}  ú	text/htmlc                 óü  • U R                  SSS9R                  5       n[        R                  " SSU[        R                  S9nUR                  5       n[        R                  " SU5      (       a  SUS	S
 ;   a  gg[        R                  " SU[        R                  5      (       a  g[        R                  " S5      nUR                  U5      (       a  g[        R                  U R                  SSS95      (       a  gg	)a  Guess the mime type of an XHTML, HTML, or XML file from its content.

Args:
    content: A short piece of a document from its beginning.

Returns:
    The mime type of an XHTML, HTML, or XML file, or None if the content does
      not match any of these formats.
r®  r¯  r°  r¹  rk   rº  r¼  ÚxhtmlNiè  r~  r}  zA(<script.*?>.*?</script>\s*)?(<!doctype\s+html|<html|<head|<body)ré  zE<!doctype\s+(?P<root>[a-zA-Z_:][a-zA-Z0-9_:.-]*)\s+.*>\s*<(?P=root)\brý   rÇ  )r(  r�  r¾  r¿  rÀ  rÁ  rÂ  ÚcompilerÌ  rN  rÄ  )rœ  r·  Úps      rU   r–  Ú+_DocumentConversionInput._detect_html_xhtml  sÞ   € ð —n‘n W°X�nÐ>×DÑDÓFˆä—f’f˜_¨b°+ÄRÇYÁYÑOˆØ!×(Ñ(Ó*ˆä�8Š8�I˜{×+Ñ+Ø˜+ e tÐ,Ó,Ø.à(ä�8Š8ØPØÜ�I‰I÷
ñ 
ð
 ä�JŠJØTó
ˆð �8‰8�K× Ñ Ø$ä#×=Ñ=Ø�N‰N˜7¨9ˆNÐ5÷
ñ 
ð %àrT   útext/csvc                 óð   • U R                  SSS9R                  5       nSU;  a  g [        R                  " 5       R	                  U5      nUR
                  S;   a  g g! [        R                   a     gf = f)zâGuess the mime type of a CSV file from its content.

Args:
    content: A short piece of a document from its beginning.

Returns:
    The mime type of a CSV file, or None if the content does
      not match any of the format.
r®  r¯  r°  Ú
N>   Ú	Ú,Ú;Ú|rï  )r(  r²  ÚcsvÚSnifferÚsniffÚ	delimiterÚError)rœ  r·  Údialects      rU   r—  Ú$_DocumentConversionInput._detect_csv1  s{   € ð —n‘n W°X�nÐ>×DÑDÓFˆð �{Ó"Øð	Ü—k’k“m×)Ñ)¨+Ó6ˆGØ× Ñ Ð$9Ó9Ø!ð :ð
 øô �y‰yó 	Ùð	ús   §4A ÁA5Á4A5úapplication/mets+xmlc           	      óz  • [        5       nUR                  nUR                  n[        U [        5      (       a  U OU R
                  nSn [        R                  " [        U[        5      (       a  UOS [        U[        5      (       a  UOS SS9 nUR                  5        HÒ  nUS-  nXS:”  a#  [        R                  SU S35          S S S 5        g UR                  R                  S5      (       d  MR  UR                  U5      nUc  Mh  UR                  US-   5      n	[!        U	5      U:”  a(  [        R                  SUR                   S	U S
35        M³  U	R#                  SS9n
SU
;   d  MÊ    S S S 5        g   S S S 5        g ! , (       d  f       g = f! [$         a"  n[        R                  SU 35         S nAg S nAff = f)Nr   zr:gz)rC   Úfileobjrê   r{  z$Archive exceeds member count limit (z) during format detectionz.xmlz	XML file z exceeds size limit (z bytes) during format detectionr¯  r°  zhttp://www.loc.gov/METS/rý  z(Error during METS-GBS format detection: )r%   Úmax_file_bytesÚmax_member_countrs   r	   r^  Útarfiler  r   Ú
getmembersr…   ÚwarningrC   r”  Úextractfiler'  rš  r(  r›   )rò   Údefault_optionsr   r  rœ  Úmember_countÚtarÚmemberrZ   Úxml_contentr·  r‰   s               rU   r•  Ú)_DocumentConversionInput._detect_mets_gbsN  s®  € ô
 0Ó1ˆØ(×7Ñ7ˆØ*×;Ñ;Ðä# C¬×.Ñ.‘#°C·J±Jˆð ˆð	Ü—’Ü *¨7´D× 9Ñ 9‘W¸tÜ#-¨g´w×#?Ñ#?™ÀTØòð Ø!Ÿn™nÖ.�FØ  AÑ%�LØ#Ó6ÜŸ™ØBÐCSÐBTÐTmÐnôð  $÷ð ð —{‘{×+Ñ+¨F×3Ó3Ø"Ÿ™¨vÓ6˜ØÓ+Ø*.¯)©)°NÀQÑ4FÓ*G˜KÜ" ;Ó/°.Ó@Ü $§¡Ø&/°·±¨}Ð<QÐR`ÐQað  bAð  %Bô!"ñ !)à*5×*<Ñ*<ÀHÐ*<Ð*M˜KØ9¸[ÕHØ'=÷3ð ñ
 /÷ð< ÷=ô ð< ûô	 ó 	Ü�L‰LÐCÀAÀ3ÐGÔHÜûð	úsb   Á	AF Â8E=ÃF ÃE=Ã0E=ÄAE=Å(E=Å)F Å2E=Å4F Å=
FÆF ÆF Æ
F:ÆF5Æ5F:rJ   )r   NrÑ   )+rK   rL   rM   rN   r   r   r	   rP   r*   r/   rQ   rP  r   rð   r3   r^   r   r0   rW   rb  r    rE   rV  ÚstaticmethodrR   rZ  rY  r[  rŸ   r‡  r‰  r   r‘  rÄ  Úbytesrï   r›  rŽ  r   r–  r—  r•  rS   rJ   rT   rU   rN  rN  k  sÎ  ‡ Ø% e¨D°#°~ÀzÐ,QÑ&RÑSÓSØ(,€GˆX�d˜3 ˜8‘nÑ%Ó,Ù'5Ó'7€FˆH�^Ñ$Ó7ðWà Ð-?Ð ?Ñ@ðWð 
�-Ñ	 ôWðz Ø.2ñ
àð
ð   Ð-?Ð ?Ñ@ð
ð ð	
ð
 ˜NÑ+ð
ð 
õ
ð& ð
 Mð 
°nó 
ó ð
ð$ ðO cð O¨có Oó ðOðZ  t¨^Ð';Ñ!<ð ZÀÈ+ÑAVô Zðx ð; Sð ;¨Tó ;ó ð;ð ð. #ð .¨$ó .ó ð.ð ðØ�d˜G�mÑ$ðà	�#‰óó ðð: ðR¨sð R°tó Ró ðRð ð
 "ñ	CØðCàðCð �kÑ"ðCð �c‰]ð	Cð
 
�+Ñ	ôCó ðCðJ ñ2ó ð2ðh ð)Øð)à	�'ÐQÑRÑ	Só)ó ð)ðV ðØðà	�'˜*Ñ%Ñ	&óó ðð8 ð,Ø�4˜Ð'Ñ(ð,à	�'Ð0Ñ1Ñ	2ó,ó ó,rT   rN  )trö  rè   Úloggingr¿   r¾  rÀ   r  r  Úcollections.abcr   r   r   rí   r   Úior   Úpathlibr	   r
   Útypingr   r   r   r   r   r   r   r‹  Údocling_core.types.docr   r   r   r   r   r   r   Údocling_core.utils.filer   r   r   Úpydanticr   r   r   r   r    r!   Ú docling.backend.abstract_backendr"   r#   Ú!docling.datamodel.backend_optionsr$   r%   Údocling.datamodel.base_modelsr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   Údocling.datamodel.settingsr3   Údocling.exceptionsr4   Údocling.utils.pdf_outliner5   Údocling.utils.profilingr6   Údocling.utils.utilsr7   r8   r9   Ú	getLoggerrK   r…   ÚTITLEÚDOCUMENT_INDEXÚSECTION_HEADERÚCHECKBOX_SELECTEDÚCHECKBOX_UNSELECTEDÚCAPTIONÚPAGE_HEADERÚPAGE_FOOTERÚFOOTNOTEÚTABLEÚFORMULAÚ	LIST_ITEMÚCODEÚPICTUREÚTEXTÚ	PARAGRAPHÚFORMrî   ÚKEY_VALUE_REGIONÚlayout_label_to_ds_typer.  rE   rW   rR   r§   rï   r­   rP   r¯   rµ   rÅ   r6  r;  rN  rJ   rT   rU   Ú<module>r2     s·  ðó Û Û Û Û 	Û 
Û Û ß -Ý Ý Ý ß "÷÷ ñ ó ÷÷ ñ ÷ñ ÷
÷ ÷÷÷÷ ÷ õ õ 6Ý 0Ý 5Ý 1ß >æÝ>à×Ò˜Ó"€ðØ×Ñ˜ðà×Ñ ðð ×ÑÐ!3ðð ×"Ñ"Ð$7ð	ð
 ×$Ñ$Ð&;ðð ×Ñ˜)ðð ×Ñ˜mðð ×Ñ˜mðð ×Ñ˜:ðð ×Ñ˜ðð ×Ñ˜*ðð ×Ñ˜Kðð ×Ñ�{ðð ×Ñ˜(ðð ×Ñ�{ðð  ×Ñ˜Kð!ð" ×Ñ�|×(Ñ(×.Ñ.ð#ð$ ×!Ñ! <×#@Ñ#@×#FÑ#Fñ%Ð ñ* %¨'Ñ2Ð ô3�Zô 3ô"Q�Iô Qðh$ oð $¸(À=Ñ:Qô $ð ð ¸4À	¹?ô ô6�S˜$ô ô
5�Yô 5ô~
�yô ~
ôBNÐ'ô Nô Ð+ô  ô&P˜yõ PrT   