Ë
    £èhã  ã                  óz  — d dl mZ d dlmZmZmZmZmZmZ d dl	m
Z
 d dlZddlmZ ddlmZmZmZ erd dlmZ  ej(                  d	«      Zdd
„ZeD � ch c]  } | dz   ’Œ	 c} ZeD � ch c]  } | dz   ’Œ	 c} Zej3                  d«       eez  ZeZdd„Zddd„Zd e
ed¬«      iZ	 	 	 	 dd„Zdd„Z dd„Z!yc c} w c c} w )é    )Úannotations)ÚIterableÚOptionalÚTYPE_CHECKINGÚSequenceÚAnyÚIterator)ÚpartialNé   )ÚDXFTag)ÚPOINT_CODESÚNONE_TAGÚVALID_XDATA_GROUP_CODES)ÚTagsÚezdxfc              #  ó:  K  — d}| D ]Ž  }|j                   dk(  rW|�0t        |d   j                  «      }t        |   |«      E d{  –—†  d}t        |j                  «      t        v r#|g}t        }n|�|j                  |«       t        }|t        usŒ‹|–— Œ� y7 ŒT­w)z‹Reorder coordinates of legacy DXF Entities, for now only LINE.

    Input Raw tag filter.

    Args:
        tagger: low level tagger

    Nr   )ÚcodeÚ_sÚvalueÚCOORDINATE_FIXING_TOOLBOXr   Úappend)ÚtaggerÚ	collectorÚtagÚentitys       ú2lib/python3.12/site-packages/ezdxf/lldxf/repair.pyÚtag_reorder_layerr      s�   è ø€ ð !%€IÛˆØ�8‰8�qŠ=ØÐ$ä˜I a™L×.Ñ.Ó/�Ü4°VÑ<¸YÓG×GÐGØ �	ä�#—)‘)‹}Ô 9Ñ9Ø ˜E�	ä‘àÐ$Ø× Ñ  Ô%ä�Ø”hÒØ‹Iñ% ð
 Hús   ‚ABÁBÁABÂBé
   é   é&   c           	   #  óÔ  ‡K  — dˆfd„}d}d}g }dŠ| D ]÷  }|d   }|dk(  r|Š|rZ||k7  rUt        |«      dkD  r|E d{  –—†  n,t        j                  dt        |d   «      › � |«       z   «       |j	                  «        |t
        v r|dz   }|d	z   }|j                  |«       Œ�||k(  r|j                  |«       |dz  }||kD  sŒ°d}Œ³|t        vr|–— ŒÀ|t        v rd
nd}t        j                  d|› dt        |«      › � |«       z   «       Œù t        |«      dk(  r-t        j                  dt        |d   «      › � |«       z   «       yt        |«      dkD  r|E d{  –—†  yy7 �Œ&7 Œ	­w)zÃFilter invalid and misplaced point group codes.

    - removes x-axis without following y-axis
    - removes y- and z-axis without leading x-axis

    Args:
        tagger: low level tagger

    c                 ó,   •— ‰ rdt        ‰ d   «      › �S y)Nzin entity #r   Ú )r   )Ú
handle_tags   €r   r   z*filter_invalid_point_codes.<locals>.entityL   s    ø€ ÙØ ¤ J¨q¡MÓ!2Ð 3Ð4Ð4àó    éÿÿÿÿr   Né   r   zremove misplaced x-axis tag: r   r   zy-axiszz-axiszremove misplaced z tag: ©ÚreturnÚstr)	ÚlenÚloggerÚinfor*   ÚclearÚX_CODESr   ÚINVALID_CODESÚINVALID_Y_CODES)	r   r   Úexpected_codeÚz_codeÚpointr   r   Úaxisr$   s	           @r   Úfilter_invalid_point_codesr6   A   sx  øè ø€ õð €MØ€FØ€EØ€JÛˆØ�1‰vˆØ�1Š9ØˆJÙ�T˜]Ò*ä�5‹z˜AŠ~Ø × Ñ ä—‘Ø3´C¸¸a¹³M°?ÐCÁfÃhÑNôð �K‰KŒMà”7‰?Ø  2™IˆMØ˜B‘YˆFØ�L‰L˜ÕØ�]Ò"Ø�L‰L˜ÔØ˜RÑˆMØ˜vÓ%Ø "‘ð œ=Ñ(Ø“	à#'¬?Ñ#:‘xÀ�Ü—‘Ø'¨ v¨V´C¸³H°:Ð>ÁÃÑIõð; ôB ˆ5ƒz�Q‚Ü�‰Ð3´C¸¸a¹³M°?ÐCÁfÃhÑNÕOÜ	ˆU‹�aŠØ×Ñð 
ð9 !ùð: 	ús)   ƒ:E(½E#¾BE(ÃBE(ÅE&ÅE(Å&E(©r   é   c                óJ  ‡‡
— ˆfd„}dˆ
fd„}t         |«       «      }i Š
g }d }| D ]E  }|j                  |v r$|‰
|j                  <   |�Œ#| j                  |«      }Œ5|j                  |«       ŒG t	        ‰
«      dk(  r| S g }‰D ]  }	|j                   ||	«      «       Œ |||| |S )Nc               3  ó@   •K  — ‰D ]  } | –— | dz   –— | dz   –— Œ y ­w©Nr   r   © )r   Úcodess    €r   Úextend_codesz*fix_coordinate_order.<locals>.extend_codes~   s(   øè ø€ ÛˆDØŠJØ˜‘)ŠOØ˜‘)‹Oñ ùs   ƒc              3  ó¤   •K  — 	 ‰|    –— 	 ‰| dz      –— 	 ‰| dz      –— y # t         $ r Y Œ"w xY w# t         $ r Y Œ&w xY w# t         $ r Y y w xY w­wr;   )ÚKeyError)r   Úcoordinatess    €r   Ú
get_coordsz(fix_coordinate_order.<locals>.get_coords„   sx   øè ø€ ð	Ø˜dÑ#Ò#ð	Ø˜d R™iÑ(Ò(ð	Ø˜d R™iÑ(Ó(øô ò 	Ùð	ûô ò 	Ùð	ûô ò 	Ùð	üsS   ƒA…# �
2 ˜
A ¢A£	/¬A®/¯A²	>»A½>¾AÁ	AÁ
AÁAÁAr   )r   Úint)Ú	frozensetr   Úindexr   r+   Úextend)Útagsr=   r>   rB   Úcoordinate_codesÚremaining_tagsÚ
insert_posr   Úordered_coordsr   rA   s    `        @r   Úfix_coordinate_orderrL   }   s»   ù€ ôõô  !¡£Ó0ÐØ€KØ€NØ€JÛˆà�8‰8Ð'Ñ'Ø$'ˆK˜Ÿ™Ñ!ØÑ!Ø!ŸZ™Z¨›_‘
à×!Ñ! #Õ&ð ô ˆ;Ó˜1Òð ˆà€NÛˆØ×Ñ™j¨Ó.Õ/ð à,:€N�:˜jÐ)ØÐr%   ÚLINE)r=   c                ó   — d„ | D «       S )Nc              3  óF   K  — | ]  }|j                   t        v sŒ|–— Œ y ­w)N)r   r   )Ú.0r   s     r   Ú	<genexpr>z3filter_invalid_xdata_group_codes.<locals>.<genexpr>¶   s   è ø€ ÐG™4�C 3§8¡8Ô/FÒ#FŒC™4ùs   ‚!š!r<   )rG   s    r   Ú filter_invalid_xdata_group_codesrR   ³   s   € ñ H™4ÓGÐGr%   c           
   #  óˆ  K  — d}d}d}| D ]j  }|dz  }|j                   dk(  r*|j                  }t        |j                  «      dk(  rd}n)d}n&|j                   |k(  r	 t        |j                  d«       |–— Œl y # t        $ r= t
        j                  d	t        |j                  «      › d
t        |«      › d|› �«       Y Œ³w xY w­w)Nr&   r'   r#   é   r   ÚDIMSTYLEéi   é   zskipped invalid handle "z" in DXF entity "z" near line )r   r   r   rC   Ú
ValueErrorr,   Úwarning)rG   ÚlineÚhandle_codeÚstructure_tagr   s        r   Úfilter_invalid_handlesr]   ¹   sÈ   è ø€ Ø€DØ€KØ€MÛˆØ�‰	ˆØ�8‰8�qŠ=ØŸI™IˆMÜ�#—)‘)‹} 
Ò*Ø!‘à‘Ø�X‰X˜Ò$ðÜ�C—I‘I˜rÔ"ð ‹	ñ# øô ò Ü—‘Ø.¬r°#·)±)«}¨oð >#Ü#% mÓ#4Ð"5°\À$ÀðIôñ ðüs+   ‚ACÁA9Á2CÁ9AB?Â<CÂ>B?Â?Cc                óL   — t        | t        «      r| j                  dd¬«      S | S )NÚasciiÚignore)ÚencodingÚerrors)Ú
isinstanceÚbytesÚdecode)Úbs    r   r   r   Ñ   s$   € Ü�!”UÔØ�x‰x °ˆxÓ:Ð:Ø€Hr%   )r   úIterable[DXFTag]r)   úIterator[DXFTag])r   rg   r)   rg   )r7   )rG   r   r=   zSequence[int])rG   rg   r)   rh   r(   )"Ú
__future__r   Útypingr   r   r   r   r   r	   Ú	functoolsr
   ÚloggingrG   r   Útypesr   r   r   Úezdxf.eztypesr   Ú	getLoggerr,   r   r1   ÚINVALID_Z_CODESÚremover0   r/   r6   rL   r   rR   r]   r   )r   s   0r   Ú<module>rr      sâ   ðõ #÷÷ õ Û Ý ß AÑ AáÝ"à	ˆ×	Ñ	˜7Ó	#€óñB *5Ó5© �4˜"“9¨Ñ5€Ù)4Ó5© �4˜"“9¨Ñ5€ð × Ñ �rÔ Ø /Ñ1€Ø
€ó9ôx.ðd ‰GÐ(°Ô9ðÐ ð
HØ
ðHàóHóô0ùòs 6ùÚ5s   ÁB3Á&B8