+
    é
4i~ ã                   óV  € ^ RI t^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
HtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^ RIHt ^ RIHtHtH t  ^ RI!H"t"H#t#H$t$ ^ RI%H&t&H't'H(t(H)t) ^ R	I*H+t+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5H6t6H7t7H8t8H9t9 ^ R
I:H;t;H<t< ^ RI=H>t>H?t?H@t@HAtAHBtBHCtC ^ RI=HDtD ^ RI:HEtEHFtFHGtGHHtHHItIHJtJHKtKHLtL ]]+]]+,          .]F3,          tM]]N.]]R]F3,          ,          3,          tO]@R,          tP ! R R]]G,          4      tQ]P¤                  RV8¼  g	   ]'       d   ]P¦                  ]D,          tTM ! R R]]D,          4      tT ! R R]]F]E3,          ]TR,          4      tU ! R R]]D,          4      tV ! R R]V]D,          ]]D]F3,          4      tWR tX ! R R]W]U]F]E3,          ]F3,          4      tYR tZR t[R  t\R! t] ! R" R#]&4      t^ ! R$ R%]^4      t_ ! R& R']^4      t` ! R( R)]^4      ta ! R* R+]^4      tb ! R, R-]^4      tc ! R. R/]^4      td ! R0 R]^4      teR1 tfRWR3 ltgR4 th]P¤                  RV8¼  g	   ]'       d!   ]P                  P2                  ]H]D3,          tiM( ! R5 R6]P                  P2                  ]]D,          ]4      ti ! R7 R8]]D,          ]i]D,          4      tj ! R9 R:]j]N,          ]4      tk ! R; R<]j]D,          ]4      tl ! R= R>]l]D,          4      tm ! R? R@]l]N,          ]k4      tn ! RA RB]^]k]4      to ! RC RD]o4      tp ! RE RF]o4      tq ! RG RH]^4      tr]! ]6]`4      ts]! ]/]d4      tt]! ]a]b4      tu]! ]e]o]oPì                  RI7      twRJ tx]Y! ]9]Z]c]-RK ]x4      ty]Y! ]8]\]c]3]3]x4      tz]Y! ]8]]]c]3]3]x4      t{RL t|RM t}RN t~RO tRPR2RQR2RRRS/RT lt€]�RU8X  d   ^ RI‚t‚]‚EP                  ! 4        R# R# )Xé    N)ÚABC)ÚTracebackType)ÚIterableÚIteratorÚListÚUnionÚDictÚOptionalÚCallableÚAnyÚGenericÚTypeÚTupleÚIOÚcastÚoverloadÚMappingÚTYPE_CHECKINGÚSequence)ÚReferenceType)Úcombine_into_replacementÚBufferingIteratorÚlen_check_iterator)ÚFormatterContentTokenÚ%one_value_per_line_trailing_separatorÚformat_field)Ú	LocatableÚSTART_POSITIONÚPositionÚRange)ÚDeb822TokenÚDeb822ValueTokenÚ'Deb822SemanticallySignificantWhiteSpaceÚDeb822SpaceSeparatorTokenÚDeb822CommentTokenÚDeb822WhitespaceTokenÚDeb822ValueContinuationTokenÚDeb822NewlineAfterValueTokenÚDeb822CommaTokenÚDeb822FieldNameTokenÚDeb822FieldSeparatorTokenÚDeb822ErrorTokenÚtokenize_deb822_fileÚcomma_split_tokenizerÚwhitespace_split_tokenizer)ÚAmbiguousDeb822FieldKeyErrorÚSyntaxOrParseError)Úresolve_refÚ
LinkedListÚLinkedListNodeÚ
OrderedSetÚ_strIÚdefault_field_sort_key)ÚT)ÚSTÚVEÚTEÚParagraphKeyÚTokenOrElementÚ
CommentishÚParagraphKeyBaseÚFormatterCallbackr!   ÚDeb822KeyValuePairElementc                   ó¢   a € ] tR t^0t o RtRtR tR t]V 3R lR l4       t	]	P                  R 4       t	]V 3R lR l4       tV 3R	 lR
 ltRtV tR# )ÚValueReferencea2  Reference to a value inside a Deb822 paragraph

This is useful for cases where want to modify values "in-place" or maybe
conditionally remove a value after looking at it.

ValueReferences can be invalidated by various changes or actions performed
to the underlying provider of the value reference.  As an example, sorting
a list of values will generally invalidate all ValueReferences related to
that list.

The ValueReference will raise validity issues where it detects them but most
of the time it will not notice.  As a means to this end,  the ValueReference
will *not* keep a strong reference to the underlying value.  This enables it
to detect when the container goes out of scope.  However, keep in mind that
the timeliness of garbage collection is implementation defined (e.g., pypy
does not use ref-counting).
c                ól   € \         P                  ! V4      V n        W n        W0n        W@n        WPn        R # ©N)ÚweakrefÚrefÚ_nodeÚ_renderÚ_value_factoryÚ_removal_handlerÚ_mutation_notifier)ÚselfÚnodeÚrenderÚvalue_factoryÚremoval_handlerÚmutation_notifiers   &&&&&&Ú>/usr/lib/python3/dist-packages/debian/_deb822_repro/parsing.pyÚ__init__ÚValueReference.__init__F   s+   € ô —[’[ Ó&ˆŒ
ØŒØ+ÔØ /ÔØ"3Öó    c                óv   € V P                   f   \        R4      hV P                  4       pVf   \        R4      hV# )Nz(Cannot use ValueReference after remove()z-ValueReference is invalid (garbage collected))rH   ÚRuntimeError)rM   rN   s   & rS   Ú_resolve_nodeÚValueReference._resolve_nodeS   s;   € ð �:‰:ÒÜÐIÓJÐJØ�z‰z‹|ˆØŠ<ÜÐNÓOÐOØˆrV   c                ó    <€ V ^8„  d   QhRS[ /# ©é   Úreturn©Ústr)ÚformatÚ__classdict__s   "€rS   Ú__annotate__ÚValueReference.__annotate___   s   ø€ ÷ 8ñ 8‘sñ 8rV   c                óT   € V P                  V P                  4       P                  4      # )z Resolve the reference into a str)rI   rY   Úvalue©rM   s   &rS   rf   ÚValueReference.value^   s"   € ð �|‰|˜D×.Ñ.Ó0×6Ñ6Ó7Ð7rV   c                óŽ   € V P                  V4      V P                  4       n        V P                  e   V P                  4        R# R# )ae  Update the reference value

Updating the value via this method will *not* invalidate the reference (or other
references to the same container).

This can raise an exception if the new value does not follow the requirements
for the referenced values.  As an example, values in whitespace separated
lists cannot contain spaces and would trigger an exception.
N)rJ   rY   rf   rL   ©rM   Ú	new_values   &&rS   rf   rh   c   s=   € ð &*×%8Ñ%8¸Ó%Cˆ×ÑÓÔ"Ø×"Ñ"Ò.Ø×#Ñ#Ö%ñ /rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   )r   )ra   rb   s   "€rS   rc   rd   t   s   ø€ ÷ *ñ *™9ñ *rV   c                ó6   € V P                  4       P                  # )zJReference to a locatable that can be used to determine where this value is)rY   rf   rg   s   &rS   Ú	locatableÚValueReference.locatables   s   € ð ×!Ñ!Ó#×)Ñ)Ð)rV   c                ó   <€ V ^8„  d   QhRR/# ©r]   r^   N© )ra   rb   s   "€rS   rc   rd   x   s   ø€ ÷ ñ ˜ñ rV   c                óf   € V P                  \        RV P                  4       4      4       RV n        R# )zÐRemove the underlying value

This will invalidate the ValueReference (and any other ValueReferences pointing
to that exact value).  The validity of other ValueReferences to that container
remains unaffected.
zLinkedListNode[TokenOrElement]N)rK   r   rY   rH   rg   s   &rS   ÚremoveÚValueReference.removex   s*   € ð 	×ÑœdÐ#CÀT×EWÑEWÓEYÓZÔ[ØˆŽ
rV   )rL   rH   rK   rI   rJ   N)rH   rI   rJ   rK   rL   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__rT   rY   Úpropertyrf   Úsetterrn   rt   Ú__static_attributes__Ú__classdictcell__©rb   s   @rS   rC   rC   0   sf   ø‡ € ñð$ a€Iò4ò	ð ÷8ó ð8ð ‡\�\ñ&ó ð&ð ÷*ó ð*÷ö rV   rC   c                   ó,   a € ] tR t^Št o R tR tRtV tR# )Ú%_Deb822ParsedTokenList_ContextManagerc                ó   € V # rE   rr   rg   s   &rS   Ú	__enter__Ú/_Deb822ParsedTokenList_ContextManager.__enter__Œ   s   € ØˆKrV   c                ó   € R # rE   rr   )rM   Úexc_typeÚexc_valÚexc_tbs   &&&&rS   Ú__exit__Ú._Deb822ParsedTokenList_ContextManager.__exit__�   s   € ÙrV   rr   N)rv   rw   rx   ry   r„   rŠ   r~   r   r€   s   @rS   r‚   r‚   Š   s   ø‡ € ò	÷	ð 	rV   r‚   c                   óä  a a€ ] tR t^“t oR tR tV3R lR ltV 3R lt]R 4       t	V3R lR lt
V3R	 lR
 ltR tR7R ltR tR tR tR tR tV3R lR ltV3R lR ltR t]V3R lR l4       tV3R lR ltV3R lR ltV3R lR ltV3R lR  ltR8R" ltV3R# lR$ ltR% tV3R& lR' ltV3R( lR) ltV3R* lR+ lt R,R!/V3R- lR. llt!V3R/ lR0 lt"R1R2R3R!/R4 lt#R1R2/R5 lt$R6t%Vt&V ;t'# )9ÚDeb822ParsedTokenListc                ó²  € Wn         W n        \        VP                  4      V n        W0n        W@n        WPn        W`n        \        WS4      V n
        Wpn        R V n        \        V n        RV n        RV n        V P                  '       g   Q hV P                  P"                  pVe5   \%        V\&        4      '       d   V P                  P)                  4        R# R# R# )TFN)Ú_kvpair_elementÚ_proxy_elementr3   ÚpartsÚ_token_listÚ_vtypeÚ_stypeÚ_str2value_parserÚ_default_separator_factoryÚ_parser_to_value_factoryrJ   rI   Ú$_format_preserve_original_formattingr   Ú
_formatterÚ_changedÚ._Deb822ParsedTokenList__continuation_line_charÚtailÚ
isinstancer(   Úpop)	rM   Úkvpair_elementÚinterpreted_value_elementÚvtypeÚstypeÚstr2value_parserÚdefault_separator_factoryrO   Ú
last_tokens	   &&&&&&&& rS   rT   ÚDeb822ParsedTokenList.__init__—   s¾   € ð  .ÔØ7ÔÜ%Ð&?×&EÑ&EÓFˆÔØŒØŒØ!1ÔØ*CÔ'Ü6Ð7GÓOˆÔØŒØ48ˆÔ1Ü?ˆŒØˆŒØ(,ˆÔ%Ø××ÐÐÐØ×%Ñ%×*Ñ*ˆ
àÒ!¤j°Ô=Y×&ZÒ&Zð ×Ñ× Ñ Ö"ñ '[Ñ!rV   c              #  óP   a "  € V 3R  lS P                    4        Rj  x€L
  R#  L5i)c              3   óF   <"  € T F  pSP                  V4      x € K  	  R # 5irE   )rI   ©Ú.0ÚvrM   s   & €rS   Ú	<genexpr>Ú1Deb822ParsedTokenList.__iter__.<locals>.<genexpr>½   s   øé € Ð>Ñ-=¨�D—L‘L —O�OÓ-=ùs   ƒ!N)Úvalue_partsrg   s   frS   Ú__iter__ÚDeb822ParsedTokenList.__iter__»   s   øé € ä>¨T×-=Ò-=Ó>×>Ô>ùó   ƒ&�$ž&c                ó    <€ V ^8„  d   QhRS[ /# r\   ©Úbool)ra   rb   s   "€rS   rc   Ú"Deb822ParsedTokenList.__annotate__¿   s   ø€ ÷ 2ñ 2™$ñ 2rV   c                ó0   € \        \        V 4      R 4      R J# rE   )ÚnextÚiterrg   s   &rS   Ú__bool__ÚDeb822ParsedTokenList.__bool__¿   s   € Ü”D˜“J Ó%¨TÐ1Ð1rV   c                óp   <€ Vf#   V P                   '       d   V P                  4        \        SV `  WV4      # rE   )rš   Ú_update_fieldÚsuperrŠ   )rM   r‡   rˆ   r‰   Ú	__class__s   &&&&€rS   rŠ   ÚDeb822ParsedTokenList.__exit__Â   s1   ø€ ð Ò §§ Ø×ÑÔ Ü‰wÑ °6Ó:Ð:rV   c              #  óP   a "  € V 3R  lS P                    4        Rj  x€L
  R#  L5i)c              3   ód   <"  € T F%  p\        VSP                  4      '       g   K!  Vx € K'  	  R # 5irE   )r�   r“   r©   s   & €rS   r¬   Ú4Deb822ParsedTokenList.value_parts.<locals>.<genexpr>Ï   s"   øé € ÐNÑ/˜!´:¸aÀÇÁ×3M—A’AÓ/ùs   ƒ0¦
0N©r’   rg   s   frS   r®   Ú!Deb822ParsedTokenList.value_partsÌ   s   øé € ô O˜t×/Ò/ÓN×NÔNùr±   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r\   )r   r=   )ra   rb   s   "€rS   rc   rµ   Ñ   s   ø€ ÷ $ñ $™H¡^Õ4ñ $rV   c              #  ó:   "  € V P                    R j  x€L
  R #  L5irE   rÃ   rg   s   &rS   Ú
iter_partsÚ Deb822ParsedTokenList.iter_partsÑ   s   é € Ø×#Ñ#×#Ô#ùó   ‚’“c                ó   <€ V ^8„  d   QhRR/# rq   rr   )ra   rb   s   "€rS   rc   rµ   Ô   s   ø€ ÷ ñ ˜tñ rV   c                ó   € R V n         R# ©TN)rš   rg   s   &rS   Ú_mark_changedÚ#Deb822ParsedTokenList._mark_changedÔ   s	   € ØˆŽrV   c              #  ól   a "  € V 3R lS P                   P                  4        4        Rj  x€L
  R#  L5i)z÷Iterate over all values in the list (as ValueReferences)

This is useful for doing inplace modification of the values or even
streaming removal of field values.  It is in general also more
efficient when more than one value is updated or removed.
c              3   óö   <"  € T Fn  p\        VP                  SP                  4      '       g   K+  \        \	        R V4      SP
                  SP                  SP                  SP                  4      x € Kp  	  R# 5i)zLinkedListNode[VE]N)	r�   rf   r“   rC   r   rI   rJ   Ú_remove_noderÍ   )rª   ÚnrM   s   & €rS   r¬   Ú>Deb822ParsedTokenList.iter_value_references.<locals>.<genexpr>ß   sg   øé € ð 
ñ 1ˆaÜ˜!Ÿ'™' 4§;¡;×/ô
”NÜÐ% qÓ)Ø�L‰LØ×ÑØ×ÑØ×Ñ÷
ð 
ó 1ùs   ƒ(A9°A	A9N)r’   Ú
iter_nodesrg   s   frS   Úiter_value_referencesÚ+Deb822ParsedTokenList.iter_value_references×   s.   øé € ô
ð ×#Ñ#×.Ñ.Ô0ó
÷ 	
ô 	
ùs   ƒ(4«2¬4c                ó6  € V P                  4       pVP                  '       d   R pRV n        V P                  4        V P                  P                  V4       V'       d;   VP                  '       g'   V P                  P                  \        R4      4       R# R# R# ©FTÚ N)r–   Úis_whitespacerš   Ú,_append_continuation_line_token_if_necessaryr’   Úappendr&   )rM   Úspace_after_separatorÚseparator_tokens   && rS   Úappend_separatorÚ&Deb822ParsedTokenList.append_separatoré   s|   € ð ×9Ñ9Ó;ˆØ×(×(Ð(Ø$)Ð!àˆŒØ×9Ñ9Ô;Ø×Ñ×Ñ Ô0ç ¨×)F×)FÐ)FØ×Ñ×#Ñ#Ô$9¸#Ó$>Ö?ñ *GÑ rV   c                ó.  € V P                   pV P                  P                  4        Fa  p\        VP                  V4      '       g   K!  V P                  VP                  4      V8X  g   KC  V P                  V4      Vn        RV n         R# 	  \        R4      h)zsReplace the first instance of a value with another

This method will *not* affect the validity of ValueReferences.
Tz!list.replace(x, y): x not in listN)	r“   r’   rÔ   r�   rf   rI   rJ   rš   Ú
ValueError)rM   Ú
orig_valuerk   r¡   rN   s   &&&  rS   ÚreplaceÚDeb822ParsedTokenList.replace÷   su   € ð —‘ˆØ×$Ñ$×/Ñ/Ö1ˆDÜ˜$Ÿ*™* e×,Ô,°·±¸d¿j¹jÓ1IÈZÖ1WØ!×0Ñ0°Ó;�”
Ø $�”Úñ	 2ô Ð@ÓAÐArV   c                ó  € V P                   pV P                  P                  4        FE  p\        VP                  V4      '       g   K!  V P                  VP                  4      V8X  g   KC  Tp M	  \        R4      hV P                  V4      # )zžRemove the first instance of a value

Removal will invalidate ValueReferences to the value being removed.
ValueReferences to other values will be unaffected.
zlist.remove(x): x not in list)r“   r’   rÔ   r�   rf   rI   râ   rÑ   )rM   rf   r¡   rN   Únode_to_removes   &&   rS   rt   ÚDeb822ParsedTokenList.remove  sr   € ð —‘ˆØ×$Ñ$×/Ñ/Ö1ˆDÜ˜$Ÿ*™* e×,Ô,°·±¸d¿j¹jÓ1IÈUÖ1RØ!%�Ùñ 2ô
 Ð<Ó=Ð=à× Ñ  Ó0Ð0rV   c                ó&  € V P                   pR V n        RpRpRpRpVP                  R R7       FP  pVP                  p\	        V\
        4      '       d   VP                  '       d   R pK;  \	        W‚4      '       g   KN  Tp M	  VP                  R R7       FP  p	V	P                  p
\	        V
\
        4      '       d   V
P                  '       d   R pK;  \	        W¢4      '       g   KN  T	p M	  Vf!   Vf   V P                  P                  4        R# Ve   V'       g   R pMVe   V'       g   RpMVRJpV'       d   TpVP                  pMVP                  pTpVf   WÐP                  n        Vf   WÀP                  n        \        P                  ! WÍ4       R# )TNF©Úskip_current)r“   rš   Úiter_previousrf   r�   r!   Ú
is_commentÚ	iter_nextr’   ÚclearÚ	next_nodeÚprevious_nodeÚ	head_nodeÚ	tail_noder4   Ú
link_nodes)rM   rç   r¡   Úfirst_value_on_lhsÚfirst_value_on_rhsÚcomment_before_previous_valueÚcomment_before_next_valueÚ	past_nodeÚ
past_tokenÚfuture_nodeÚfuture_tokenÚdelete_lhs_of_nodeÚfirst_remain_lhsÚfirst_remain_rhss   &&            rS   rÑ   Ú"Deb822ParsedTokenList._remove_node  s‰  € à—‘ˆØˆŒðv "ÐØ!ÐØ(-Ð%Ø$)Ð!Ø'×5Ñ5À4Ð5ÖHˆIØ"Ÿ™ˆJÜ˜*¤k×2Ò2°z×7L×7LÐ7LØ04Ð-ÙÜ˜*×,Ô,Ø%.Ð"Ùñ Ið *×3Ñ3ÀÐ3ÖFˆKØ&×,Ñ,ˆLÜ˜,¬×4Ò4¸×9P×9PÐ9PØ,0Ð)ÙÜ˜,×.Ô.Ø%0Ð"Ùñ Gð Ò%Ð*<Ò*Dà×Ñ×"Ñ"Ô$ÙàÒ)×2Oà!%ÑØÒ+×4Mà!&Ñð
 "4¸4Ð!?ÐçØ1ÐØ-×7Ñ7Ñà-×;Ñ;ÐØ1Ðð Ò#Ø)9×ÑÔ&ØÒ#Ø)9×ÑÔ&Ü×!Ò!Ð"2ÖErV   c                óJ   € V P                  V4      pV P                  V4       R # rE   )rJ   Úappend_value)rM   rf   Úvts   && rS   rÜ   ÚDeb822ParsedTokenList.append‹  s    € à× Ñ  Ó'ˆØ×Ñ˜"ÖrV   c                ó   € V P                   pV'       dn   R pV P                  pV P                  p\        V4       F+  p\	        We4      '       d   Rp M\	        Wd4      '       g   K+   M	  V'       d   V P                  4        M$V P                   P                  \        R4      4       V P                  4        RV n	        VP                  V4       R# rØ   )
r’   r”   r“   Úreversedr�   rß   rÜ   r&   rÛ   rš   )rM   r  r®   Úneeds_separatorr¢   r¡   Úts   &&     rS   r  Ú"Deb822ParsedTokenList.append_value�  s¦   € à×&Ñ&ˆßØ#ˆOØ—K‘KˆEØ—K‘KˆEÜ˜kÖ*�Ü˜a×'Ò'Ø&*�OÙÜ˜a×'Ô'Ùñ +÷ Ø×%Ñ%Ô'øð ×Ñ×#Ñ#Ô$9¸#Ó$>Ô?Ø×9Ñ9Ô;ØˆŒØ×Ñ˜2ÖrV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   rµ   §  s   ø€ ÷ Jñ J¡dñ JrV   c                ó„   € V P                   P                  pVR J;'       d     VP                  4       P                  R4      # ©NÚ
)r’   rœ   Úconvert_to_textÚendswith©rM   rœ   s   & rS   Ú_previous_is_newlineÚ*Deb822ParsedTokenList._previous_is_newline§  s:   € Ø×Ñ×$Ñ$ˆØ˜4Ð×IÐI D×$8Ñ$8Ó$:×$CÑ$CÀDÓ$IÐIrV   c                ó   <€ V ^8„  d   QhRR/# rq   rr   )ra   rb   s   "€rS   rc   rµ   «  s   ø€ ÷ @ñ @ ñ @rV   c                óŽ   € V P                  4       '       d   \        R 4      hV P                  P                  \	        4       4       R# )z9Cannot add a newline after a token that ends on a newlineN)r  râ   r’   rÜ   r(   rg   s   &rS   Úappend_newlineÚ$Deb822ParsedTokenList.append_newline«  s5   € Ø×$Ñ$×&Ò&ÜÐXÓYÐYØ×Ñ×ÑÔ <Ó >Ö?rV   c                ó  € V P                   P                  pVe&   VP                  4       P                  R4      '       g   V P	                  4        \        \        V4      4      pV P                   P                  V4       R # r  )r’   rœ   r  r  r  r%   Ú_format_commentrÜ   )rM   Úcomment_textrœ   Úcomment_tokens   &&  rS   Úappend_commentÚ$Deb822ParsedTokenList.append_comment°  s`   € à×Ñ×$Ñ$ˆØŠ<˜t×3Ñ3Ó5×>Ñ>¸t×DÒDØ×ÑÔ!Ü*¬?¸<Ó+HÓIˆØ×Ñ×Ñ Ö.rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r_   )ra   rb   s   "€rS   rc   rµ   ¹  s   ø€ ÷ 
ñ 
©ñ 
rV   c                ó¤   € V P                   pVf@   RpV P                   F'  p\        V\        4      '       g   K  VP                  p M	  Wn         V# )NrÙ   )r›   r’   r�   r'   Útext)rM   ÚcharÚtokens   &  rS   Ú_continuation_line_charÚ-Deb822ParsedTokenList._continuation_line_char¸  sN   € à×,Ñ,ˆØŠ<àˆDØ×)Ô)�Ü˜eÔ%A×BÔBØ Ÿ:™:�DÙñ *ð -1Ô)ØˆrV   c                ó   <€ V ^8„  d   QhRR/# rq   rr   )ra   rb   s   "€rS   rc   rµ   Å  s   ø€ ÷ `ñ `¸dñ `rV   c                óè   € V P                   P                  pVeX   VP                  4       P                  R4      '       d1   V P                   P	                  \        V P                  4      4       R # R # R # r  )r’   rœ   r  r  rÜ   r'   r"  r  s   & rS   rÛ   ÚBDeb822ParsedTokenList._append_continuation_line_token_if_necessaryÅ  s[   € Ø×Ñ×$Ñ$ˆØÒ × 4Ñ 4Ó 6× ?Ñ ?À× EÒ EØ×Ñ×#Ñ#Ô$@À×A]ÑA]Ó$^Ö_ñ !FÑrV   c                ó   <€ V ^8„  d   QhRR/# rq   rr   )ra   rb   s   "€rS   rc   rµ   Ê  s   ø€ ÷ ñ ¨ñ rV   c                ó4   € V P                  4        R V n        R# rÌ   )Ú_enable_reformattingrš   rg   s   &rS   Úreformat_when_finishedÚ,Deb822ParsedTokenList.reformat_when_finishedÊ  s   € Ø×!Ñ!Ô#ØˆŽrV   c                ó   <€ V ^8„  d   QhRR/# rq   rr   )ra   rb   s   "€rS   rc   rµ   Î  s   ø€ ÷ :ñ : dñ :rV   c                ó   € R V n         R# ©FN©r˜   rg   s   &rS   r)  Ú*Deb822ParsedTokenList._enable_reformattingÎ  s
   € Ø49ˆÖ1rV   c                ó   <€ V ^8„  d   QhRR/# rq   rr   )ra   rb   s   "€rS   rc   rµ   Ñ  s   ø€ ÷ 9ñ 9¨tñ 9rV   c                ó   € R V n         R# rÌ   r/  rg   s   &rS   Úno_reformatting_when_finishedÚ3Deb822ParsedTokenList.no_reformatting_when_finishedÑ  s
   € Ø48ˆÖ1rV   Fc                óB   € Wn         RV n        V'       d
   RV n        R# R# )a<  Use a custom formatter when formatting the value

:param formatter: A formatter (see debian._deb822_repro.formatter.format_field
  for details)
:param force_reformat: If True, always reformat the field even if there are
  no (other) changes performed.  By default, fields are only reformatted if
  they are changed.
FTN)r™   r˜   rš   )rM   Ú	formatterÚforce_reformats   &&&rS   Úvalue_formatterÚ%Deb822ParsedTokenList.value_formatterÔ  s    € ð $ŒØ49ˆÔ1ßØ ˆDŽMñ rV   c                ó   <€ V ^8„  d   QhRR/# rq   rr   )ra   rb   s   "€rS   rc   rµ   æ  s   ø€ ÷ !ñ !�tñ !rV   c                ól   € V P                   '       d   RV n        V P                   P                  4        R# )zGLike list.clear() - removes all content (including comments and spaces)TN)r’   rš   rï   rg   s   &rS   rï   ÚDeb822ParsedTokenList.clearæ  s'   € à××ÐØ ˆDŒMØ×Ñ×ÑÖ rV   c              #  ó    "  € V P                    F7  p\        V\        4      '       d   VP                  4        R j  x€L
  K3  Vx € K9  	  R #  L5irE   )r’   r�   ÚDeb822ElementÚiter_tokens)rM   Útes   & rS   Ú_iter_content_as_tokensÚ-Deb822ParsedTokenList._iter_content_as_tokensì  s:   é € à×"Ô"ˆBÜ˜"œm×,Ò,ØŸ>™>Ó+×+Ò+à”ó	 #á+ùs   ‚9A»A¼Ac                ó    <€ V ^8„  d   QhRS[ /# r\   r_   )ra   rb   s   "€rS   rc   rµ   ô  s   ø€ ÷ ñ ±Sñ rV   c                ó  aaa€ V P                  4       pV P                  oV P                  oV P                  oVVV3R  lp\	        V P
                  V P                  P                  \        P                  ! VP                  4      V! 4       4      # )c               3   óª  <"  € R p S FÅ  p\        V\        4      '       dq   VP                  '       d%   \        P                  ! VP
                  4      x € KO  \        VS4      '       d'   VP
                  p \        P                  ! V 4      x € K‡  K‰  \        VS4      '       g   Q hVP                  4       p \        P                  ! V 4      x € KÇ  	  R# 5i)Ú N)	r�   r!   rí   r   r  r  rÞ   r  Úvalue_token)r  r@  r¢   Ú
token_listr¡   s     €€€rS   Ú_token_iterÚNDeb822ParsedTokenList._generate_reformatted_field_content.<locals>._token_iterú  s    øé € àˆDÛ �Ü˜b¤+×.Ò.Ø—}—}�}Ü3×AÒAÀ"Ç'Á'ÓJÔJÜ# B¨×.Ò.Ø!Ÿw™w˜Ü3×CÒCÀDÓIÔIñ /ô & b¨%×0Ò0Ð0Ð0Ø×-Ñ-Ó/�DÜ/×;Ò;¸DÓAÔAó !ùs   ƒ/C³B C)r–   r“   r”   r’   r   r™   r�   Ú
field_namer   rÞ   r  )rM   rÞ   rI  r¢   rH  r¡   s   &  @@@rS   Ú#_generate_reformatted_field_contentÚ9Deb822ParsedTokenList._generate_reformatted_field_contentô  sq   ú€ Ø×9Ñ9Ó;ˆØ—‘ˆØ—‘ˆØ×%Ñ%ˆ
÷	Bô ˜DŸO™OØ ×0Ñ0×;Ñ;Ü1×AÒAÀ/×BVÑBVÓWÙ'›Móð 	rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r_   )ra   rb   s   "€rS   rc   rµ     s   ø€ ÷ Gñ G©ñ GrV   c                óN   € R P                  R V P                  4        4       4      # )rF  c              3   ó8   "  € T F  qP                   x € K  	  R # 5irE   ©r  ©rª   r  s   & rS   r¬   Ú@Deb822ParsedTokenList._generate_field_content.<locals>.<genexpr>  s   é € ÐFÑ'E !—v–vÓ'Eùó   ‚)ÚjoinrA  rg   s   &rS   Ú_generate_field_contentÚ-Deb822ParsedTokenList._generate_field_content  s    € Ø�w‰wÑF t×'CÑ'CÔ'EÓFÓFÐFrV   c                ó   <€ V ^8„  d   QhRR/# )r]   r^   rA   rr   )ra   rb   s   "€rS   rc   rµ     s   ø€ ÷ ."ñ ."Ð"=ñ ."rV   c                ó°  € V P                   pVP                  pV P                  pVP                  pR pV P	                  4        F-  pRpVP
                  '       d   K  VP                  '       d   K-   M	  V'       d   \        R4      hVeÁ   \        V\        4      '       d   VP
                  '       d   \        R4      hVP                  4       P                  R4      '       g   V P                  4        V P                  '       d$   V P                  4       pRP                  W'34      pMV P!                  4       pVP#                  RR7      p	M
VR,           .p	\%        \'        V	4      4      p
V
P)                  4       pV'       d   \        RV,           4      h\+        \'        V
4      4      p\        V\,        4      '       g   Q hVP/                  V4      pVf   Q hV# )	FTzUField must be completely empty or have content (i.e. non-whitespace and non-comments)z Fields must not end on a commentr  Ú:©Úkeependsz:
ú$Syntax error in new field value for )r�   rK  r’   rœ   rA  rí   rÚ   râ   r�   r!   r  r  r  r˜   rV  rU  rL  Ú
splitlinesÚparse_deb822_filer¸   Úfind_first_error_elementr·   Ú'Deb822NoDuplicateFieldsParagraphElementÚget_kvpair_element)rM   rŸ   rK  rH  rœ   Ú
had_tokensr  Ú
value_textr  Únew_contentÚdeb822_fileÚerror_tokenÚ	paragraphÚnew_kvpair_elements   &             rS   Ú_generate_kvpairÚ&Deb822ParsedTokenList._generate_kvpair  s•  € Ø×-Ñ-ˆØ#×.Ñ.ˆ
Ø×%Ñ%ˆ
Ø�‰ˆØˆ
à×-Ñ-Ö/ˆAØˆJØ—<—<’<¨¯¯ªÙñ 0÷
 Ü ð "Jó Kð KàÒÜ˜$¤×,Ò,°··°Ü Ð!CÓDÐDØ×'Ñ'Ó)×2Ñ2°4×8Ò8à×#Ñ#Ô%à×8×8Ð8Ø!×9Ñ9Ó;�
Ø—x‘x Ð 8Ó9‘à×?Ñ?ÓA�àŸ/™/°4˜/Ó8‰Kð
 &¨Õ-Ð.ˆKô (¬¨[Ó(9Ó:ˆØ!×:Ñ:Ó<ˆßäÐCÀjÕPÓQÐQÜœ˜kÓ*Ó+ˆ	Ü˜)Ô%L×MÒMÐMÐMØ&×9Ñ9¸*ÓEÐØ!Ò-Ð-Ð-Ø!Ð!rV   Úwith_field_namec                ó&   <€ V ^8„  d   QhRS[ RS[/# )r]   rl  r^   )r´   r`   )ra   rb   s   "€rS   rc   rµ   B  s   ø€ ÷ )ñ )±$ð )Á3ñ )rV   c               ón   € V P                  4       pV'       d   TMVP                  pVP                  4       # rE   )rj  Úvalue_elementr  )rM   rl  ÚkvpairÚelements   &$  rS   r  Ú%Deb822ParsedTokenList.convert_to_textB  s.   € Ø×&Ñ&Ó(ˆß+‘&°×1EÑ1EˆØ×&Ñ&Ó(Ð(rV   c                ó   <€ V ^8„  d   QhRR/# rq   rr   )ra   rb   s   "€rS   rc   rµ   G  s   ø€ ÷ ñ ˜tñ rV   c                ój   € V P                   pV P                  4       P                  Vn        R V n        R# r.  )r�   rj  ro  rš   )rM   rŸ   s   & rS   r¼   Ú#Deb822ParsedTokenList._update_fieldG  s+   € Ø×-Ñ-ˆØ'+×'<Ñ'<Ó'>×'LÑ'LˆÔ$ØˆŽrV   ÚkeyNÚreversec               ó°  aa€ RpV P                   pV P                  oV3R lp. pV P                  P                  4        F§  pVP                  p\        V\        4      '       d   VP                  '       d	   Vf   TpK?  \        W„4      '       g   KR  . p	Ve<   VP                  RR7       F%  p
W§J d    MV	P                  V
P                  4       K'  	  VP                  W‰34       RpK©  	  VP                  WRR7       RV n        V P                  P                  4        RpV P                  4       P                  pV EF  w  r‰V'       dA   RpV	'       d6   V	 Uu. uF  p\        VS4      '       d   K  VNK  	  p	pV P                  4        M—V'       gS   \         ;QJ d    V3R lV	 4       F  '       g   K   RM	  RM! V3R lV	 4       4      '       g   V P#                  RR7       V	'       d   V P                  4        M$V P                  P                  \%        R	4      4       V P                  P'                  V	4       V P)                  V4       EK  	  R# u upi )
a  Sort the elements (abstract values) in this list.

This method will sort the logical values of the list. It will
attempt to preserve comments associated with a given value where
possible.  Whether space and separators are preserved depends on
the contents of the field as well as the formatting settings.

Sorting (without reformatting) is likely to leave you with "awkward"
whitespace. Therefore, you almost always want to apply reformatting
such as the reformat_when_finished() method.

Sorting will invalidate all ValueReferences.
Nc                 ó`   <€ S'       d   S! V ^ ,          4      # V ^ ,          P                  4       # ©r   ©r  )Úxrv  s   &€rS   Úkey_funcÚ5Deb822ParsedTokenList.sort_elements.<locals>.key_funcb  s'   ø€ çÙ˜1˜Q�4“yÐ Ø�Q•4×'Ñ'Ó)Ð)rV   Frê   )rv  rw  Tc              3   ó<   <"  € T F  p\        VS4      x € K  	  R # 5irE   )r�   )rª   r|  r¢   s   & €rS   r¬   Ú6Deb822ParsedTokenList.sort_elements.<locals>.<genexpr>Ž  s   øé € Ð5]ÑT\Èq´jÀÀE×6JÐ6JÓT\ùs   ƒ)rÝ   rÙ   )r“   r”   r’   rÔ   rf   r�   r!   rí   rî   rÜ   Úsortrš   rï   r–   rÚ   r  Úanyrß   r&   Úextendr  )rM   rv  rw  Úcomment_start_noder¡   r}  r‘   rN   rf   ÚcommentsÚ	keep_nodeÚfirst_valueÚseparator_is_spacer|  r¢   s   &d$           @rS   Úsort_elementsÚ#Deb822ParsedTokenList.sort_elementsL  sä  ù€ ð$ "ÐØ—‘ˆØ—‘ˆõ	*ð ˆà×$Ñ$×/Ñ/Ö1ˆDØ—J‘JˆEÜ˜%¤×-Ò-°%×2B×2BÐ2BØ%Ò-Ø)-Ð&Ùä˜%×'Ô'Ø�Ø%Ò1Ø%7×%AÑ%AÈuÐ%AÖ%U˜	Ø$Ó,Ù!Ø Ÿ™¨	¯©Ö8ñ &Vð —‘˜eÐ.Ô/Ø%)Ò"ñ 2ð" 	�
‰
�xˆ
Ô1àˆŒØ×Ñ×ÑÔ Øˆà!×<Ñ<Ó>×LÑLÐä$‰OˆEßØ#�ßñ ,4ÓP©8 a¼:ÀaÈ×;O§ ©8�HÐPð ×'Ñ'Ô)øç)·#³#Ô5]ÑT\Ó5]·#·#²#Ô5]ÑT\Ó5]×2]Ò2]ð
 ×)Ñ)ÀÐ)ÔFßØ×'Ñ'Õ)à×$Ñ$×+Ñ+Ô,AÀ#Ó,FÔGà×Ñ×#Ñ# HÔ-Ø×Ñ˜e×$ó/  %ùò  Qs   ÅIÅ0Ic               ób   aa€ Se   V P                   oVV3R lVR&   V P                  ! R/ VB  R# )a  Sort the values (rendered as str) in this list.

This method will sort the logical values of the list. It will
attempt to preserve comments associated with a given value where
possible.  Whether space and separators are preserved depends on
the contents of the field as well as the formatting settings.

Sorting (without reformatting) is likely to leave you with "awkward"
whitespace. Therefore, you almost always want to apply reformatting
such as the reformat_when_finished() method.

Sorting will invalidate all ValueReferences.
Nc                 ó    <€ S! S! V 4      4      # rE   rr   )r  rv  rO   s   &€€rS   Ú<lambda>Ú,Deb822ParsedTokenList.sort.<locals>.<lambda>±  s   ø€ ¡s©6°"«:¤rV   rv  rr   )rI   r‰  )rM   rv  ÚkwargsrO   s   &d,@rS   r�  ÚDeb822ParsedTokenList.sortœ  s-   ù€ ð& Š?Ø—\‘\ˆFÝ6ˆF�5‰MØ×ÒÑ$˜VÔ$rV   )Ú__continuation_line_charrš   r–   r˜   r™   r�   r�   rI   r•   r”   r’   rJ   r“   ©T©F)(rv   rw   rx   ry   rT   r¯   r¹   rŠ   r|   r®   rÇ   rÍ   rÕ   rß   rä   rt   rÑ   rÜ   r  r  r  r  r"  rÛ   r*  r)  r3  r8  rï   rA  rL  rV  rj  r  r¼   r‰  r�  r~   r   Ú__classcell__©r¾   rb   s   @@rS   r�   r�   “   sG  ù‡ € ò"#òH?÷2ð 2õ;ð ñOó ðO÷$ð $÷ð ò
ô$@òBò1ò"rFòhò
÷.Jð J÷@ð @ò
/ð ÷
ó ð
÷`ð `÷
ð ÷:ð :÷9ð 9ô!÷$!ð !ò÷ð ÷6Gð G÷."ð ."ð`)¸÷ )ò )÷
ð ð
N%ØðN%à#ôN%ð`%à÷%ô %rV   r�   zDeb822ParsedTokenList[VE, ST]c                   ó*   a € ] tR tRt o RR ltRtV tR# )ÚInterpretationiµ  c                ó   € \         hrE   ©ÚNotImplementedError)rM   rŸ   Údiscard_comments_on_reads   &&&rS   Ú	interpretÚInterpretation.interpret·  ó
   € ô
 "Ð!rV   rr   Nr’  )rv   rw   rx   ry   rœ  r~   r   r€   s   @rS   r—  r—  µ  s   ø‡ € ÷"ò "rV   r—  c                   óX   a a€ ] tR tRt oV 3R ltR	R ltR tR tR tR	R lt	Rt
VtV ;t# )
Ú!GenericContentBasedInterpretationi¿  c                ó<   <€ \         SV `  4        Wn        W n        R # rE   )r½   rT   Ú
_tokenizerÚ_value_parser)rM   Ú	tokenizerÚvalue_parserr¾   s   &&&€rS   rT   Ú*GenericContentBasedInterpretation.__init__Á  s   ø€ ô
 	‰ÑÔØ#ŒØ)ÖrV   c                ó   € \         hrE   r™  ©rM   rŸ   Úproxy_elementr›  s   &&&&rS   Ú_high_level_interpretationÚ<GenericContentBasedInterpretation._high_level_interpretationÊ  ó
   € ô "Ð!rV   c              #  ó„   "  € V P                   pV F)  p\        V\        4      '       d   V! W14      x € K%  Vx € K+  	  R # 5irE   )r£  r�   r"   )rM   Úbuffered_iteratorr¥  r!  s   &&  rS   Ú_parse_streamÚ/GenericContentBasedInterpretation._parse_streamÒ  s:   é € ð
 ×)Ñ)ˆÛ&ˆEÜ˜%Ô!1×2Ò2Ù" 5Ó<Ô<à”ó	 'ùs   ‚>A c                ó”   € VP                   pVP                  4       p. pVP                  V P                  V4      4       \	        W$4      # rE   )ro  r  rƒ  Ú
_parse_strÚ Deb822InterpretationProxyElement)rM   rp  ro  ÚcontentrH  s   &&   rS   Ú_parse_kvpairÚ/GenericContentBasedInterpretation._parse_kvpairÞ  sD   € ð
 ×,Ñ,ˆØ×/Ñ/Ó1ˆØˆ
Ø×Ñ˜$Ÿ/™/¨'Ó2Ô3Ü/°ÓJÐJrV   c              #  ó¾   "  € \        V4      p\        \        VV P                  V4      VR 7      4      p\        VV P	                  V4      VR 7       Rj  x€L
  R#  L5i))Úcontent_lenN)Úlenr   r   r¢  r¯  )rM   r´  r¸  Úbiters   &&  rS   r²  Ú,GenericContentBasedInterpretation._parse_stré  sZ   é € ä˜'“lˆÜ!Ô"4°WØ59·_±_ÀWÓ5MØALô#Oó Pˆô & gØ&*×&8Ñ&8¸Ó&?Ø2=ô(÷ 	(ô 	(ùs   ‚AAÁAÁAc                óL   € V P                  V4      pV P                  VVVR 7      # ©)r›  )rµ  rª  )rM   rŸ   r›  r©  s   &&& rS   rœ  Ú+GenericContentBasedInterpretation.interpretô  s4   € ð
 ×*Ñ*¨>Ó:ˆØ×.Ñ.¨~Ø/<ØH`ð /ó 1ð 	1rV   )r¢  r£  r’  )rv   rw   rx   ry   rT   rª  r¯  rµ  r²  rœ  r~   r   r”  r•  s   @@rS   r   r   ¿  s)   ù‡ € õ*ô"ò
ò	Kò	(÷	1ô 	1rV   r   c                 ó   a a€ V V3R  lpV# )c                 óØ  <€ V R 8X  d   \        R4      h\        S! V 4      4      p\        VR4      p\        VR4      pVf   Q RV ,           R,           4       hVe2   \        P                  ! R4      P                  V R7      p\        V4      h\        VS4      '       go   \        V\        4      '       d0   VP                  '       g   VP                  '       d   \        R4      hRp\        VP                  V SP                  VR	7      4      h\        VP                  4       4      \        V 4      8X  g9   Q R
P                  \        VP                  4       4      \        V 4      R7      4       hV# )rF  zThe empty string is not a valueNz.Bad parser - it returned None (or no TE) for "Ú"zü            The input "{v}" should have been exactly one element, but the parser provided at
             least two.  This can happen with unnecessary leading/trailing whitespace
             or including commas the value for a comma list.
            ©r«   z<The input "{v}" is whitespace or a comment: Expected a valuezaThe input "{v}" should have produced a element of type {vtype_name}, but instead it produced {t1})r«   Ú
vtype_nameÚt1zSBad tokenizer - the token did not cover the input text exactly ({t1_len} != {v_len})Út1_lenÚv_len)râ   r¸   r·   ÚtextwrapÚdedentra   r�   r!   rí   rÚ   rv   r¹  r  )r«   Ú
token_iterrÄ  Út2ÚmsgÚparserr¡   s   &    €€rS   rJ   Ú0_parser_to_value_factory.<locals>._value_factory  sB  ø€ à�Œ7ÜÐ>Ó?Ð?Ü™& ›)“_ˆ
Ü�*˜dÓ#ˆÜ�*˜dÓ#ˆØŠ~ÐYÐOÐRSÕSÐVYÕYÓYˆ~ØŠ>Ü—/’/ð #ó ÷ ‘˜!�“ð	 ô
 ˜S“/Ð!Ü˜"˜e×$Ò$Ü˜"œk×*Ò*°··°À×AQ×AQÐAQÜ Ð!_Ó`Ð`ð.ˆCä˜SŸZ™Z¨!¸¿¹È2˜ZÓNÓOÐOä�2×%Ñ%Ó'Ó(¬C°«FÔ2ð 	ð,ß,2©FÜ˜2×-Ñ-Ó/Ó0¼¸A»ð -3ó -ó	Ð2ð
 ˆ	rV   rr   )rÌ  r¡   rJ   s   ff rS   r—   r—      s   ù€ öð: ÐrV   c                   ó<   a a€ ] tR tRt oV 3R ltRR ltRtVtV ;t# )ÚListInterpretationi$  c                óV   <€ \         SV `  W4       W0n        W@n        WPn        W`n        R # rE   )r½   rT   r“   r”   r–   Ú_render_factory)rM   r¤  r¥  r¡   r¢   r¤   Úrender_factoryr¾   s   &&&&&&&€rS   rT   ÚListInterpretation.__init__&  s(   ø€ ô 	‰Ñ˜Ô1ØŒØŒØ*CÔ'Ø-ÖrV   c                ó’   € \        VVV P                  V P                  V P                  V P                  V P                  V4      4      # rE   )r�   r“   r”   r²  r–   rÑ  r¨  s   &&&&rS   rª  Ú-ListInterpretation._high_level_interpretation5  sD   € ô %ØØØ�K‰KØ�K‰KØ�O‰OØ×+Ñ+Ø× Ñ Ð!9Ó:ó
ð 	
rV   )r–   rÑ  r”   r“   r’  )	rv   rw   rx   ry   rT   rª  r~   r   r”  r•  s   @@rS   rÏ  rÏ  $  s   ù‡ € õ.÷
ô 
rV   rÏ  c                 ó   € \        V .4      # rE   )ÚDeb822ParsedValueElement)r!  Ú_s   &&rS   Ú_parse_whitespace_list_valuerÙ  F  s   € ä# U GÓ,Ð,rV   c                 ó"   € \        V \        4      # rE   )r�   r)   rÂ  s   &rS   Ú_is_comma_tokenrÛ  K  s   € ô �aÔ)Ó*Ð*rV   c                 óŽ  € VP                  \        4      pV .pVe)   VP                  VP                  V^,
          4      4       MVP                  VP	                  4       4       V'       d0   \        VR,          \        4      '       g   VP                  4        K7  VP                  \        V4      ^,
          4       \        V4      # )Néÿÿÿÿ)Ú	peek_findrÛ  rƒ  Ú	peek_manyÚpeek_bufferr�   r"   rž   Úconsume_manyr¹  r×  )r!  r®  Úcomma_offsetr®   s   &&  rS   Ú_parse_comma_list_valuerã  Q  s™   € à$×.Ñ.¬Ó?€LØ�'€KØÒà×ÑÐ,×6Ñ6°|ÀaÕ7GÓHÕIð 	×ÑÐ,×8Ñ8Ó:Ô;ß
œj¨°R­Ô:J×KÒKØ�‰Öà×"Ñ"¤3 {Ó#3°aÕ#7Ô8Ü# KÓ0Ð0rV   c                 ó   € V .pRpVEeû   VP                  \        4      pVEea   VR,          .pVP                  VP                  V^,
          4      4       Rp\	        V4      ^,
          pV^ 8¼  dÊ   WF,          p \        V \        4      '       d¡   V P                  P                  R4      '       d   VP                  VP                  V4      4       \        VR,          \        4      '       d)   VR,          P                  P                  R4      '       g   Q R\        V4      ,           4       hRpMV^,          pKÐ  V'       d   MÂVP                  VP                  V4      4       \        VR,          \        4      '       g   Q hEK  VP                  4       p\	        V4      pVP                  V4       V'       d9   \        VR,          \        4      '       g   VP                  4        V^,          pK@  VP                  V4       EKÿ  \        V4      # )é   FÚ>zGot: TrÝ  )rÞ  rÛ  rƒ  rß  r¹  r�   r"   r  r  rá  r`   r)   rà  rž   r×  )	r!  r®  r®   râ  Úpeeked_elementsÚcomma_was_separatorÚiÚremaining_partÚconsume_elementss	   &&       rS   Ú_parse_uploaders_list_valuerì  c  s½  € ð
 �'€KØ€LØ
Ó
"Ø(×2Ñ2´?ÓCˆØÓ#ð  +¨2�Ð/ˆOØ×"Ñ"Ð#4×#>Ñ#>¸|ÈaÕ?OÓ#PÔQØ"'ÐÜ�OÓ$ qÕ(ˆAØ�q”&Ø'Õ*�Ü˜eÔ%5×6Ò6Ø—z‘z×*Ñ*¨3×/Ò/à#×*Ñ*Ð+<×+IÑ+IÈ!Ó+LÔMÜ)¨+°b­/Ô;K×LÒLØ*¨2�×3Ñ3×<Ñ<¸S×AÒAð^ØCJÌSÐQ\ÓM]ÕC]ó^ð  Bà.2Ð+ØØ�Q•’ß"ØØ×ÑÐ0×=Ñ=¸lÓKÔLÜ˜k¨"�oÔ/?×@Ò@Ð@Ó@ð /×:Ñ:Ó<ˆNÜ" >Ó2ÐØ×Ñ˜~Ô.ß¤j°¸RµÔBR×&SÒ&SØ—‘Ô!Ø  AÕ%Ò Ø×*Ñ*Ð+;×<ä# KÓ0Ð0rV   c                   ó:  a € ] tR tRt o RtRtV 3R lR ltR tR tR t	RR	/R
 lt
]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t]R 4       t]P"                  R 4       tV 3R lR ltV 3R lR ltR tV 3R lR ltRtV tR	# )r>  i“  z1Composite elements (consists of 1 or more tokens)c                ó   <€ V ^8„  d   QhRR/# rq   rr   )ra   rb   s   "€rS   rc   ÚDeb822Element.__annotate__˜  s   ø€ ÷ %ñ %˜$ñ %rV   c                ó"   € R V n         R V n        R # rE   )Ú_parent_elementÚ_full_size_cacherg   s   &rS   rT   ÚDeb822Element.__init__˜  s   € Ø#ˆÔØ $ˆÖrV   c                ó   € \         hrE   r™  rg   s   &rS   rÇ   ÚDeb822Element.iter_partsœ  ó   € ä!Ð!rV   c              #  ój   "  € V P                  4        F  p\        W!4      '       g   K  Vx € K  	  R # 5irE   )rÇ   r�   ©rM   Úonly_element_or_token_typeÚparts   && rS   Úiter_parts_of_typeÚ Deb822Element.iter_parts_of_type   s&   é € à—O‘OÖ%ˆDÜ˜$×;Ô;Ø”
ó &ùs   ‚"3©
3c              #  óÈ   "  € V P                  4        FG  pVP                  f   Q h\        V\        4      '       d   VP	                  4        R j  x€L
  KC  Vx € KI  	  R #  L5irE   )rÇ   rñ  r�   r>  r?  ©rM   rú  s   & rS   r?  ÚDeb822Element.iter_tokens¦  sQ   é € à—O‘OÖ%ˆDà×'Ñ'Ò3Ð3Ð3Ü˜$¤×.Ò.Ø×+Ñ+Ó-×-Ò-à”
ó &ñ .ùs   ‚AA"ÁA ÁA"rù  Nc             #  óê   "  € V P                  4        FX  pVe   \        W!4      '       d   \        RV4      x € \        V\        4      '       g   K>  VP	                  VR7       R j  x€L
  KZ  	  R #  L
5i)Nr;   ©rù  )rÇ   r�   r   r>  Úiter_recurserø  s   &$ rS   r  ÚDeb822Element.iter_recurse°  s`   é € ð —O‘OÖ%ˆDØ)Ò1´ZÀ×5aÒ5aÜ˜4 Ó&Ò&Ü˜$¤×.Ô.Ø×,Ñ,ÐHbÐ,Óc×cÒcó	 &ñ dùs   ‚A
A3ÁA3Á&A1Á'A3c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   rï  »  s   ø€ ÷ ñ ™$ñ rV   c                ó   € R # r“  rr   rg   s   &rS   Úis_errorÚDeb822Element.is_errorº  ó   € árV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   rï  ¿  s   ø€ ÷ ñ ™Dñ rV   c                ó   € R # r“  rr   rg   s   &rS   rí   ÚDeb822Element.is_comment¾  r  rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   rï  Ã  s   ø€ ÷ ñ ™tñ rV   c                ó   € R # r“  rr   rg   s   &rS   rÚ   ÚDeb822Element.is_whitespaceÂ  r  rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   rï  Ç  s   ø€ ÷ ñ ™dñ rV   c                ó   € R # r“  rr   rg   s   &rS   Úis_separatorÚDeb822Element.is_separatorÆ  r  rV   c                ó,   € \        V P                  4      # rE   )r2   rñ  rg   s   &rS   Úparent_elementÚDeb822Element.parent_elementÊ  s   € ô ˜4×/Ñ/Ó0Ð0rV   c                óV   € Ve   \         P                  ! V4      V n        R # R V n        R # rE   )rF   rG   rñ  )rM   Ú
new_parents   &&rS   r  r  Ï  s#   € ð ;EÒ:PœwŸ{š{¨:Ó6ˆÖÐVZˆÖrV   c                ó   <€ V ^8„  d   QhRR/# rq   rr   )ra   rb   s   "€rS   rc   rï  Ô  s   ø€ ÷ 'ñ ' tñ 'rV   c                ó@   € V P                  4        F	  pWn        K  	  R # rE   )rÇ   r  rþ  s   & rS   Ú_init_parent_of_partsÚ#Deb822Element._init_parent_of_partsÔ  s   € Ø—O‘OÖ%ˆDØ"&Öó &rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r_   )ra   rb   s   "€rS   rc   rï  Ù  s   ø€ ÷ ;ñ ;¡ñ ;rV   c                óN   € R P                  R V P                  4        4       4      # )rF  c              3   ó8   "  € T F  qP                   x € K  	  R # 5irE   rQ  rR  s   & rS   r¬   Ú0Deb822Element.convert_to_text.<locals>.<genexpr>Ú  s   é € Ð:Ñ'9 !—v–vÓ'9ùrT  ©rU  r?  rg   s   &rS   r  ÚDeb822Element.convert_to_textÙ  s    € Ø�w‰wÑ: t×'7Ñ'7Ô'9Ó:Ó:Ð:rV   c                ó6   € WP                   J d
   R V n        R # R # rE   )r  rñ  ©rM   Úparents   &&rS   Úclear_parent_if_parentÚ$Deb822Element.clear_parent_if_parentÜ  s   € à×(Ñ(Ó(Ø#'ˆDÖ ñ )rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   ©r    )ra   rb   s   "€rS   rc   rï  á  s   ø€ ÷ ñ ‘eñ rV   c                ó’   € V P                   pVf7   \        P                  ! \        R V P	                  4        4       4      pWn         V# )Nc              3   ó@   "  € T F  qP                  4       x € K  	  R # 5irE   ©Úsize©rª   Úps   & rS   r¬   Ú%Deb822Element.size.<locals>.<genexpr>æ  ó   é € Ð5Ñ#4˜a—‘—�Ó#4ùó   ‚)rò  r    Úfrom_position_and_sizesr   rÇ   )rM   Ú
size_caches   & rS   r,  ÚDeb822Element.sizeá  sC   € Ø×*Ñ*ˆ
ØÒÜ×6Ò6ÜÙ5 4§?¡?Ô#4Ó5óˆJð %/Ô!ØÐrV   )rò  rñ  )rñ  rò  Ú__weakref__)rv   rw   rx   ry   rz   r{   rT   rÇ   rû  r?  r  r|   r  rí   rÚ   r  r  r}   r  r  r%  r,  r~   r   r€   s   @rS   r>  r>  “  sØ   ø‡ € Ù;àF€I÷%ð %ò"òòðdØ04ôdð ÷ó ðð ÷ó ðð ÷ó ðð ÷ó ðð ñ1ó ð1ð ×Ññ[ó ð[÷'ð '÷
;ð ;ò(÷
ö rV   r>  c                   ó~   a a€ ] tR tRt oRtV3R lV 3R lltR tV3R lR ltV3R lR ltV3R	 lR
 lt	Rt
VtV ;t# )r³  iì  c                ó:   <€ V ^8„  d   QhRS[ RS[S[,          RR/# )r]   Úreal_elementr‘   r^   N)r>  r   r=   )ra   rb   s   "€rS   rc   Ú-Deb822InterpretationProxyElement.__annotate__ð  s(   ø€ ÷ $ñ $¡]ð $¹4ÁÕ;Oð $ÐTXñ $rV   c                óZ   <€ \         SV `  4        Wn        W n        V F	  pWn        K  	  R # rE   )r½   rT   r  r‘   )rM   r8  r‘   r.  r¾   s   &&& €rS   rT   Ú)Deb822InterpretationProxyElement.__init__ð  s)   ø€ Ü‰ÑÔØ*ÔØŒ
ÛˆAØ#Öó rV   c                ó,   € \        V P                  4      # rE   )r¸   r‘   rg   s   &rS   rÇ   Ú+Deb822InterpretationProxyElement.iter_parts÷  s   € ä�D—J‘JÓÐrV   c                ó    <€ V ^8„  d   QhRS[ /# r\   ©r   )ra   rb   s   "€rS   rc   r9  û  s   ø€ ÷ +ñ +¡Hñ +rV   c                óX   € V P                   pVf   \        R4      hVP                  4       # ©Nzparent was garbage collected)r  rX   Úposition_in_parentr#  s   & rS   rB  Ú3Deb822InterpretationProxyElement.position_in_parentû  s-   € Ø×$Ñ$ˆØŠ>ÜÐ=Ó>Ð>Ø×(Ñ(Ó*Ð*rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r?  )ra   rb   s   "€rS   rc   r9    s   ø€ ÷ )ñ )¡(ñ )rV   c                óX   € V P                   pVf   \        R4      hVP                  4       # rA  )r  rX   Úposition_in_filer#  s   & rS   rF  Ú1Deb822InterpretationProxyElement.position_in_file  s-   € Ø×$Ñ$ˆØŠ>ÜÐ=Ó>Ð>Ø×&Ñ&Ó(Ð(rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r(  )ra   rb   s   "€rS   rc   r9    s   ø€ ÷ Dñ D‘eñ DrV   c                óf   € R  V P                  4        4       p\        P                  ! \        V4      # )c              3   ó@   "  € T F  qP                  4       x € K  	  R # 5irE   r+  r-  s   & rS   r¬   Ú8Deb822InterpretationProxyElement.size.<locals>.<genexpr>	  r0  r1  )rÇ   r    r2  r   )rM   Úsizess   & rS   r,  Ú%Deb822InterpretationProxyElement.size  s&   € á5 4§?¡?Ô#4Ó5ˆÜ×,Ò,¬^¸UÓCÐCrV   )r  r‘   )r‘   )rv   rw   rx   ry   r{   rT   rÇ   rB  rF  r,  r~   r   r”  r•  s   @@rS   r³  r³  ì  s?   ù‡ € à€I÷$ó $ò ÷+ð +÷)ð )÷D÷ Dð DrV   r³  c                   ó\   a a€ ] tR tRt oRtRtV 3R ltR t]V3R lR l4       t	Rt
VtV ;t# )ÚDeb822ErrorElementi  ah  Element representing elements or tokens that are out of place

Commonly, it will just be instances of Deb822ErrorToken, but it can be other
things.  As an example if a parser discovers out of order elements/tokens,
it can bundle them in a Deb822ErrorElement to signal that the sequence of
elements/tokens are invalid (even if the tokens themselves are valid).
c                ód   <€ \         SV `  4        \        V4      V n        V P	                  4        R # rE   )r½   rT   ÚtupleÚ_partsr  )rM   r‘   r¾   s   &&€rS   rT   ÚDeb822ErrorElement.__init__  s%   ø€ ä‰ÑÔÜ˜E“lˆŒØ×"Ñ"Ö$rV   c              #  ó:   "  € V P                    R j  x€L
  R #  L5irE   ©rR  rg   s   &rS   rÇ   ÚDeb822ErrorElement.iter_parts  s   é € à—;‘;×ÔùrÉ   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   ÚDeb822ErrorElement.__annotate__#  s   ø€ ÷ ñ ™$ñ rV   c                ó   € R # r’  rr   rg   s   &rS   r  ÚDeb822ErrorElement.is_error"  ó   € árV   rU  )rv   rw   rx   ry   rz   r{   rT   rÇ   r|   r  r~   r   r”  r•  s   @@rS   rO  rO    s4   ù‡ € ñð €Iõ%òð ÷ó ÷ð rV   rO  c                   ó    a a€ ] tR tRt oRtRtV 3R lt]R 4       t]R 4       t	]R 4       t
V3R lR ltR	 tR
 tV3R lR ltR tRtVtV ;t# )ÚDeb822ValueLineElementi'  z!Consists of one "line" of a valuec                ó´   <€ \         SV `  4        Ve   Vf   \        R4      hWn        W n        VV n        W@n        WPn        W`n        V P                  4        R # )Nz)Only continuation lines can have comments)
r½   rT   râ   Ú_comment_elementÚ_continuation_line_tokenÚ_leading_whitespace_tokenÚ_value_tokensÚ_trailing_whitespace_tokenÚ_newline_tokenr  )rM   Úcomment_elementÚcontinuation_line_tokenÚleading_whitespace_tokenr®   Útrailing_whitespace_tokenÚnewline_tokenr¾   s   &&&&&&&€rS   rT   ÚDeb822ValueLineElement.__init__-  s]   ø€ ô 	‰ÑÔØÒ&Ð+BÒ+JÜÐHÓIÐIØ /ÔØ(?Ô%à$ð 	Ô&à(ÔØ*CÔ'Ø+ÔØ×"Ñ"Ö$rV   c                ó   € V P                   # rE   ©r_  rg   s   &rS   re  Ú&Deb822ValueLineElement.comment_elementD  ó   € ð ×$Ñ$Ð$rV   c                ó   € V P                   # rE   )r`  rg   s   &rS   rf  Ú.Deb822ValueLineElement.continuation_line_tokenI  s   € ð ×,Ñ,Ð,rV   c                ó   € V P                   # rE   )rd  rg   s   &rS   ri  Ú$Deb822ValueLineElement.newline_tokenN  ó   € ð ×"Ñ"Ð"rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   Ú#Deb822ValueLineElement.__annotate__S  s   ø€ ÷ ñ ©ñ rV   c                ór   € V P                   f)   \        4       V n         W P                   n        R V n        R# R# )NTF)rd  r(   r  rò  rg   s   &rS   Úadd_newline_if_missingÚ-Deb822ValueLineElement.add_newline_if_missingS  s3   € Ø×ÑÒ&Ü">Ó"@ˆDÔØ15×ÑÔ.Ø$(ˆDÔ!ÙÙrV   c              #  ó¾   "  € V P                   '       d   V P                   x € V P                   R j  x€L
  V P                  '       d   V P                  x € R # R #  L(5irE   )ra  rb  rc  rg   s   &rS   Ú_iter_content_partsÚ*Deb822ValueLineElement._iter_content_parts[  sN   é € à×)×)Ð)Ø×0Ñ0Ò0Ø×%Ñ%×%Ð%Ø×*×*Ð*Ø×1Ñ1Ô1ñ +ñ 	&ùs   ‚0A²A³AÁ	Ac              #  ó¨   "  € V P                  4        F7  p\        V\        4      '       d   VP                  4        R j  x€L
  K3  Vx € K9  	  R #  L5irE   )rz  r�   r>  r?  rþ  s   & rS   Ú_iter_content_tokensÚ+Deb822ValueLineElement._iter_content_tokensc  s?   é € à×,Ñ,Ö.ˆDÜ˜$¤×.Ò.Ø×+Ñ+Ó-×-Ò-à”
ó	 /á-ùs   ‚=A¿AÁ Ac                ó    <€ V ^8„  d   QhRS[ /# r\   r_   )ra   rb   s   "€rS   rc   ru  k  s   ø€ ÷ 
Dñ 
D©ñ 
DrV   c                óR  € \        V P                  4      ^8X  di   V P                  '       gW   V P                  '       gE   \	        V P                  ^ ,          \
        4      '       d   V P                  ^ ,          P                  # RP                  R V P                  4        4       4      # )rå  rF  c              3   ó8   "  € T F  qP                   x € K  	  R # 5irE   rQ  rR  s   & rS   r¬   ÚADeb822ValueLineElement.convert_content_to_text.<locals>.<genexpr>u  s   é € ÐCÑ'B !—v–vÓ'BùrT  )	r¹  rb  ra  rc  r�   r!   r  rU  r}  rg   s   &rS   Úconvert_content_to_textÚ.Deb822ValueLineElement.convert_content_to_textk  s|   € Üˆt×!Ñ!Ó" aÔ'Ø×6×6Ð6Ø×7×7Ð7Ü˜t×1Ñ1°!Õ4´k×BÒBð ×%Ñ% aÕ(×-Ñ-Ð-à�w‰wÑC t×'@Ñ'@Ô'BÓCÓCÐCrV   c              #  ó  "  € V P                   '       d   V P                   x € V P                  '       d   V P                  x € V P                  4        R j  x€L
  V P                  '       d   V P                  x € R # R #  L(5irE   )r_  r`  rz  rd  rg   s   &rS   rÇ   Ú!Deb822ValueLineElement.iter_partsw  si   é € à× × Ð Ø×'Ñ'Ò'Ø×(×(Ð(Ø×/Ñ/Ò/Ø×+Ñ+Ó-×-Ð-Ø××ÐØ×%Ñ%Ô%ñ ñ 	.ùs   ‚2Bµ!BÁA?ÁBÁ-B)r_  r`  rò  ra  rd  rc  rb  )r_  r`  ra  rb  rc  rd  )rv   rw   rx   ry   rz   r{   rT   r|   re  rf  ri  rw  rz  r}  rƒ  rÇ   r~   r   r”  r•  s   @@rS   r]  r]  '  s{   ù‡ € Ù+ðR€Iõ%ð. ñ%ó ð%ð ñ-ó ð-ð ñ#ó ð#÷ð ò2ò÷
Dð 
D÷&ò &rV   r]  c                   ó^   a a€ ] tR tRt oRtV 3R lt]R 4       tR tV3R lR lt	Rt
VtV ;t# )	ÚDeb822ValueElementi‚  c                óf   <€ \         SV `  4        \        V4      pW n        V P	                  4        R # rE   )r½   rT   rQ  Ú_value_entry_elementsr  )rM   Úvalue_entry_elementsr«   r¾   s   && €rS   rT   ÚDeb822ValueElement.__init__…  s+   ø€ ä‰ÑÔäÐ&Ó'ˆØ%&Ô"Ø×"Ñ"Ö$rV   c                ó   € V P                   # )zRead-only list of value entries©rŠ  rg   s   &rS   Úvalue_linesÚDeb822ValueElement.value_lines�  s   € ð ×)Ñ)Ð)rV   c              #  ó:   "  € V P                    R j  x€L
  R #  L5irE   rŽ  rg   s   &rS   rÇ   ÚDeb822ValueElement.iter_parts“  s   é € à×-Ñ-×-Ô-ùrÉ   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   ÚDeb822ValueElement.__annotate__—  s   ø€ ÷ ñ ©dñ rV   c                óŽ   € V P                   '       d3   V P                   R,          P                  4       pV'       d   RV n        V# R# )rå  NFrÝ  )rŠ  rw  rò  )rM   Úchangeds   & rS   Úadd_final_newline_if_missingÚ/Deb822ValueElement.add_final_newline_if_missing—  s:   € Ø×%×%Ð%Ø×0Ñ0°Õ4×KÑKÓMˆGßØ(,�Ô%ØˆNÙrV   )rò  rŠ  rŽ  )rv   rw   rx   ry   r{   rT   r|   r�  rÇ   r—  r~   r   r”  r•  s   @@rS   rˆ  rˆ  ‚  s7   ù‡ € Ø*€Iõ%ð ñ*ó ð*ò
.÷÷ ð rV   rˆ  c                   óf   a a€ ] tR tRt oRtV 3R ltV3R lV 3R lltV3R lR ltR tRt	Vt
V ;t# )	r×  i   c                ó¦  <€ \         SV `  4        Wn        V P                  4        \	        V^ ,          \
        4      '       d   \	        VR,          \
        4      '       g'   \        V P                  P                  R,           4      h\        V4      ^8X  d.   V^ ,          pVP                  V n        VP                  V n        R# RV n        RV n        R# )r   z) MUST start and end on a Deb822ValueTokenNrÝ  )r½   rT   r’   r  r�   r"   râ   r¾   rv   r¹  r  Ú_text_cachedÚ_text_no_comments_cached)rM   Útokensr!  r¾   s   && €rS   rT   Ú!Deb822ParsedValueElement.__init__¤  sœ   ø€ ä‰ÑÔØ!ÔØ×"Ñ"Ô$Ü˜& �)Ô%5×6Ò6Ü˜v b�zÔ+;×<Ò<Ü˜TŸ^™^×4Ñ4Ð7bÕbÓcÐcÜˆv‹;˜!ÔØ˜1•IˆEØ %§
¡
ˆDÔØ,1¯J©JˆDÖ)à $ˆDÔØ,0ˆDÖ)rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r_   )ra   rb   s   "€rS   rc   Ú%Deb822ParsedValueElement.__annotate__´  s   ø€ ÷ -ñ -¡ñ -rV   c                ó^   <€ V P                   f   \        SV `	  4       V n         V P                   # rE   )rœ  r½   r  )rM   r¾   s   &€rS   r  Ú(Deb822ParsedValueElement.convert_to_text´  s+   ø€ Ø×(Ñ(Ò0Ü,1©GÑ,CÓ,EˆDÔ)Ø×,Ñ,Ð,rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r_   )ra   rb   s   "€rS   rc   r   ¹  s   ø€ ÷ -ñ -±#ñ -rV   c                óŒ   € V P                   f,   RP                  R V P                  4        4       4      V n         V P                   # )NrF  c              3   ób   "  € T F%  pVP                   '       d   K  VP                  x € K'  	  R # 5irE   ©rí   r  rR  s   & rS   r¬   ÚLDeb822ParsedValueElement.convert_to_text_without_comments.<locals>.<genexpr>»  s%   é € ð 4IÙ=O¸Ø;<¿<½<ô 5;°A·F¶FÛ=Oùó   ‚/›/)rœ  rU  r?  rg   s   &rS   Ú convert_to_text_without_commentsÚ9Deb822ParsedValueElement.convert_to_text_without_comments¹  sF   € Ø×(Ñ(Ò0Ø,.¯G©Gñ 4IØ=A×=MÑ=MÔ=Oó4Ió -IˆDÔ)ð ×,Ñ,Ð,rV   c              #  ó:   "  € V P                    R j  x€L
  R #  L5irE   rÃ   rg   s   &rS   rÇ   Ú#Deb822ParsedValueElement.iter_partsÀ  s   é € à×#Ñ#×#Ô#ùrÉ   )r›  rœ  r’   )rv   rw   rx   ry   r{   rT   r  r©  rÇ   r~   r   r”  r•  s   @@rS   r×  r×     s-   ù‡ € àK€Iõ1÷ -ó -÷
-ð -÷$ò $rV   r×  c                   óp   a a€ ] tR tRt oR	tV 3R lt]V3R lR l4       tV3R lR ltR t	R t
R	tVtV ;t# )
ÚDeb822CommentElementiÅ  c                óŠ   <€ \         SV `  4        \        V4      V n        V'       g   \	        R 4      hV P                  4        R# )z5Comment elements must have at least one comment tokenN)r½   rT   rQ  Ú_comment_tokensrâ   r  )rM   Úcomment_tokensr¾   s   &&€rS   rT   ÚDeb822CommentElement.__init__È  s6   ø€ ä‰ÑÔÜ$ ^Ó4ˆÔßÜÐTÓUÐUØ×"Ñ"Ö$rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   Ú!Deb822CommentElement.__annotate__Ñ  s   ø€ ÷ ñ ™Dñ rV   c                ó   € R # r’  rr   rg   s   &rS   rí   ÚDeb822CommentElement.is_commentÐ  r[  rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   ©Úint)ra   rb   s   "€rS   rc   r´  Ô  s   ø€ ÷ )ñ )™ñ )rV   c                ó,   € \        V P                  4      # rE   )r¹  r°  rg   s   &rS   Ú__len__ÚDeb822CommentElement.__len__Ô  s   € Ü�4×'Ñ'Ó(Ð(rV   c                ó(   € V P                   V,          # rE   ©r°  ©rM   Úitems   &&rS   Ú__getitem__Ú Deb822CommentElement.__getitem__×  s   € à×#Ñ# DÕ)Ð)rV   c              #  ó:   "  € V P                    R j  x€L
  R #  L5irE   r¾  rg   s   &rS   rÇ   ÚDeb822CommentElement.iter_partsÛ  s   é € à×'Ñ'×'Ô'ùrÉ   r¾  )rv   rw   rx   ry   r{   rT   r|   rí   r»  rÁ  rÇ   r~   r   r”  r•  s   @@rS   r®  r®  Å  s<   ù‡ € Ø$€Iõ%ð ÷ó ð÷)ð )ò*÷(ò (rV   r®  c                   óÎ   a a€ ] tR tRt oRtV 3R lt]R 4       t]R 4       t]R 4       t	]	P                  R 4       t	RR lt]R 4       t]P                  R	 4       tR
 tRtVtV ;t# )rA   ià  c                ót   <€ \         SV `  4        Wn        W n        W0n        W@n        V P                  4        R # rE   )r½   rT   r_  Ú_field_tokenÚ_separator_tokenÚ_value_elementr  )rM   re  Úfield_tokenrÞ   ro  r¾   s   &&&&&€rS   rT   Ú"Deb822KeyValuePairElement.__init__ã  s4   ø€ ô 	‰ÑÔØ /ÔØ'ÔØ /ÔØ+ÔØ×"Ñ"Ö$rV   c                ó.   € V P                   P                  # rE   )rÊ  r  rg   s   &rS   rK  Ú$Deb822KeyValuePairElement.field_nameñ  s   € ð ×Ñ×$Ñ$Ð$rV   c                ó   € V P                   # rE   )rÇ  rg   s   &rS   rÊ  Ú%Deb822KeyValuePairElement.field_tokenö  s   € ð × Ñ Ð rV   c                ó   € V P                   # rE   )rÉ  rg   s   &rS   ro  Ú'Deb822KeyValuePairElement.value_elementû  rs  rV   c                ób   € R V n         V P                  P                  V 4       Wn        Wn        R # rE   )rò  rÉ  r%  r  rj   s   &&rS   ro  rÑ     s,   € ð !%ˆÔØ×Ñ×2Ñ2°4Ô8Ø'ÔØ#'Ö rV   c                ó&   € VP                  WR 7      # r½  )rœ  )rM   Úinterpreterr›  s   &&&rS   Úinterpret_asÚ&Deb822KeyValuePairElement.interpret_as  s   € ð
 ×$Ñ$ TÐ$Ó]Ð]rV   c                ó   € V P                   # rE   rl  rg   s   &rS   re  Ú)Deb822KeyValuePairElement.comment_element  rn  rV   c                óü   € R V n         Ve4   VR,          P                  P                  R4      '       g   \        R4      hV P                  '       d   V P                  P                  V 4       Ve   Wn        Wn        R # )Nr  z&Field comments must end with a newlinerÝ  )rò  r  r  râ   r_  r%  r  )rM   rf   s   &&rS   re  rØ    si   € ð !%ˆÔØÒØ˜•9—>‘>×*Ñ*¨4×0Ò0Ü Ð!IÓJÐJØ× × Ð Ø×!Ñ!×8Ñ8¸Ô>ØÒØ#'Ô Ø %ÖrV   c              #  ó¢   "  € V P                   '       d   V P                   x € V P                  x € V P                  x € V P                  x € R # 5irE   ©r_  rÇ  rÈ  rÉ  rg   s   &rS   rÇ   Ú$Deb822KeyValuePairElement.iter_parts!  sA   é € à× × Ð Ø×'Ñ'Ò'Ø×ÑÒØ×#Ñ#Ò#Ø×!Ñ!Ô!ùs   ‚AA)r_  rÇ  rò  rÈ  rÉ  rÛ  r’  )rv   rw   rx   ry   r{   rT   r|   rK  rÊ  ro  r}   rÕ  re  rÇ   r~   r   r”  r•  s   @@rS   rA   rA   à  s£   ù‡ € ØZ€Iõ%ð ñ%ó ð%ð ñ!ó ð!ð ñ#ó ð#ð ×Ññ(ó ð(ô^ð ñ%ó ð%ð ×Ññ
&ó ð
&÷"ò "rV   c                 óú   € V R 8X  d   R# RV RR 9   d   \        R4      hV P                  R4      '       g   V P                  4       R,           p V P                  R4      '       g   RV P	                  4       ,           p V # )rF  z#
r  Nz-Comment lines must not have embedded newlinesÚ#z# rÝ  )râ   r  ÚrstripÚ
startswithÚlstrip)Úcs   &rS   r  r  *  sh   € àˆB„wáØˆq��"ˆv„~ÜÐHÓIÐIØ�:‰:�d×ÒØ�H‰H‹J˜ÕˆØ�<‰<˜×ÒØ�1—8‘8“:ÕˆØ€HrV   Fc                 ó  € R pR p\        V \        4      '       d?   V w  rBV'       d'   V^ 8w  d   Rp\        VP                  WBR7      4      hR p\	        V4      pM2R p\        V \
        4      '       d   T pVP                  pM\	        V 4      pWBV3# )NzECannot resolve key "{key}" with index {index}. The key is not indexed©rv  Úindex)r�   rQ  ÚKeyErrorra   r6   r*   r  )rÀ  Úraise_if_indexedrå  Ú
name_tokenrv  rË  s   &&    rS   Ú_unpack_keyré  8  sŒ   € ð €EØ€JÜ�$œ×ÒØ‰
ˆßð ˜ŒzØ]�Ü˜sŸz™z¨c˜zÓ?Ó@Ð@ØˆEÜ�C‹j‰àˆÜ�dÔ0×1Ò1ØˆJØ—/‘/‰Cä˜“+ˆCà�zÐ!Ð!rV   c              #   óª   "  € V'       g   R  V  4        Rj  x€L
  R# V  F+  pRP                  R VP                  4        4       4      x € K-  	  R#  L95i)c              3   ó@   "  € T F  qP                  4       x € K  	  R # 5irE   r{  )rª   r«   s   & rS   r¬   Ú0_convert_value_lines_to_lines.<locals>.<genexpr>X  s   é € Ð=±¨A×%Ñ%×'Ð'³ùr1  NrF  c              3   ób   "  € T F%  pVP                   '       d   K  VP                  x € K'  	  R # 5irE   r¦  ©rª   r|  s   & rS   r¬   rì  [  s$   é € ð /Ñ*? QØ!"§¥ô !˜!Ÿ&ž&Ó*?ùr¨  r   )r�  Ústrip_commentsrq  s   && rS   Ú_convert_value_lines_to_linesrð  S  sM   é € ÷ Ù=±Ó=×=Ò=ã"ˆGØ—'‘'ñ /¨'×*=Ñ*=Ô*?ó /ó /ô /ó #ñ 	>ùs   ‚A—A˜:Ac                   ó   € ] tR tRtRtR# )Ú_ParagraphMapping_Baseid  rr   N)rv   rw   rx   ry   r~   rr   rV   rS   rò  rò  d  s   † ÛrV   rò  c                   ó|   a € ] tR tRt o ]V 3R lR l4       t]R 4       tV 3R lR ltR tR t	R	 t
R
 tR tRtV tR# )ÚAutoResolvingMixinik  c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   ÚAutoResolvingMixin.__annotate__n  s   ø€ ÷ ñ ±ñ rV   c                ó   € R # r’  rr   rg   s   &rS   Ú_auto_resolve_ambiguous_fieldsÚ1AutoResolvingMixin._auto_resolve_ambiguous_fieldsm  r[  rV   c                ó   € \         hrE   r™  rg   s   &rS   Ú
_paragraphÚAutoResolvingMixin._paragraphq  ó
   € ô "Ð!rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r¸  )ra   rb   s   "€rS   rc   rö  v  s   ø€ ÷ ,ñ ,™ñ ,rV   c                ó.   € V P                   P                  # rE   )rû  Úkvpair_countrg   s   &rS   r»  ÚAutoResolvingMixin.__len__v  s   € Ø�‰×+Ñ+Ð+rV   c                ó8   € V P                   P                  V4      # rE   )rû  Úcontains_kvpair_elementr¿  s   &&rS   Ú__contains__ÚAutoResolvingMixin.__contains__y  s   € à�‰×6Ñ6°tÓ<Ð<rV   c                óH   € \        V P                  P                  4       4      # rE   )r¸   rû  Ú	iter_keysrg   s   &rS   r¯   ÚAutoResolvingMixin.__iter__}  s   € ä�D—O‘O×-Ñ-Ó/Ó0Ð0rV   c                óò   € V P                   '       d5   \        V\        4      '       d   V P                  P	                  V^ 34      pMV P                  P	                  V4      pVf   Q hV P                  W4      # rz  )rø  r�   r`   rû  rb  Ú_interpret_value)rM   rÀ  r«   s   && rS   rÁ  ÚAutoResolvingMixin.__getitem__�  sa   € à×.×.Ð.´:¸dÄC×3HÒ3HØ—‘×2Ñ2°D¸!°9Ó=‰Aà—‘×2Ñ2°4Ó8ˆAØŠ}Ðˆ}Ø×$Ñ$ TÓ-Ð-rV   c                ó<   € V P                   P                  V4       R # rE   )rû  Úremove_kvpair_elementr¿  s   &&rS   Ú__delitem__ÚAutoResolvingMixin.__delitem__Š  s   € à�‰×-Ñ-¨dÖ3rV   c                ó   € \         hrE   r™  ©rM   rv  rf   s   &&&rS   r
  Ú#AutoResolvingMixin._interpret_valueŽ  rö  rV   rr   N)rv   rw   rx   ry   r|   rø  rû  r»  r  r¯   rÁ  r  r
  r~   r   r€   s   @rS   rô  rô  k  sS   ø‡ € à÷ó ðð ñ"ó ð"÷,ð ,ò=ò1ò.ò4÷"ð "rV   rô  c                   ó¢   a € ] tR tRt o ]V 3R lR l4       t]V 3R lR l4       t]V 3R lR l4       t]V 3R lR	 l4       tR
 t	R t
R tRtV tR# )Ú Deb822ParagraphToStrWrapperMixini–  c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   Ú-Deb822ParagraphToStrWrapperMixin.__annotate__š  s   ø€ ÷ ñ ±4ñ rV   c                ó   € R # r’  rr   rg   s   &rS   Ú!_auto_map_initial_line_whitespaceÚBDeb822ParagraphToStrWrapperMixin._auto_map_initial_line_whitespace™  r[  rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   r  ž  s   ø€ ÷ ñ ©4ñ rV   c                ó   € R # r’  rr   rg   s   &rS   Ú_discard_comments_on_readÚ:Deb822ParagraphToStrWrapperMixin._discard_comments_on_read�  r[  rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   r  ¢  s   ø€ ÷ ñ ¹Tñ rV   c                ó   € R # r’  rr   rg   s   &rS   Ú+_auto_map_final_newline_in_multiline_valuesÚLDeb822ParagraphToStrWrapperMixin._auto_map_final_newline_in_multiline_values¡  r[  rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   r  ¦  s   ø€ ÷ ñ ¹4ñ rV   c                ó   € R # r’  rr   rg   s   &rS   Ú)_preserve_field_comments_on_field_updatesÚJDeb822ParagraphToStrWrapperMixin._preserve_field_comments_on_field_updates¥  r[  rV   c                ó  a€ VP                   pVP                  p\        V4      ^8X  d>   V^ ,          pVP                  4       pV P                  '       d   VP                  4       pV# V P                  '       g   V P                  '       dJ   \        VV P                  4      pV P                  oRP                  V3R l\        V^R7       4       4      pMVP                  4       pV P                  '       d   VR,          R8X  d   VRR pV# )rå  rF  c              3   óx   <"  € T F/  w  rS'       d   V^8X  d   VP                  4       R,           MTx € K1  	  R# 5i)rå  r  N)Ústrip)rª   ré  ÚlineÚauto_map_spaces   &  €rS   r¬   ÚIDeb822ParagraphToStrWrapperMixin._convert_value_to_str.<locals>.<genexpr>¿  s4   øé € ð  Ù-J¡' !÷ 6DÈÈQÌ˜dŸj™j›l¨TÖ1ÐTXÔXÛ-Jùs   ƒ7:©Ústartr  NrÝ  )ro  r�  r¹  r  r  r(  r  rð  rU  Ú	enumerater   )	rM   rŸ   ro  Úvalue_entriesÚvalue_entryr  Ú	converterÚas_textr*  s	   &&      @rS   Ú_convert_value_to_strÚ6Deb822ParagraphToStrWrapperMixin._convert_value_to_str©  sð   ø€ à&×4Ñ4ˆØ%×1Ñ1ˆÜˆ}Ó Ô"ð (¨Õ*ˆKØ×+Ñ+Ó-ˆAØ×5×5Ð5Ø—G‘G“I�ØˆHà×1×1Ð1°T×5S×5SÐ5SÜ5°mØ6:×6TÑ6Tó8ˆIð "×CÑCˆNð —g‘gô  Ü-6°yÈÕ-Jó ó  ‰Gð
 $×3Ñ3Ó5ˆGà×;×;Ð;ÀÈÅÈtÔ@SØ˜c˜r�lˆGØˆrV   c                ód  € V P                   pR pV'       d^   V P                  '       dL   R pTp\        V\        4      '       d   V^ 3pV P                  P                  VRR7      pVe   VP                  pV P                  '       d»    VP                  R4      pVR	8X  g   V\        V4      8X  d0   V P                  P                  VVP                  4       VVR7       R # VP                  R^4      w  r‰V'       d3   VR,          R
9  d%   RP                  RVP                  4       RV	34      pMRP                  VRV	34      pVP                  R4      '       g'   V P                   '       g   \        R4      hVR,          pV P                  P#                  VVVVR7       R #   \         d    R	p ELi ; i)NT©Úuse_getr  ©Úpreserve_original_field_commentÚfield_comment:Nrå  NrÙ   rF  zeValues must end with a newline (or be single line values and use the auto whitespace mapping feature)rÝ  )Ú	rÙ   )r$  rø  r�   r`   rû  rb  re  r  rå  râ   r¹  Úset_field_to_simple_valuer(  ÚsplitrU  r  r   Úset_field_from_raw_string)
rM   rÀ  rf   Úkeep_commentsÚcommentÚ
key_lookupÚorig_kvpairÚidxÚ
first_lineÚrests
   &&&       rS   Ú__setitem__Ú,Deb822ParagraphToStrWrapperMixin.__setitem__Ê  s–  € à×FÑFˆØˆß˜T×@×@Ð@ð
 !ˆMØˆJÜ˜$¤×$Ò$Ø" A˜Y�
ØŸ/™/×<Ñ<¸ZÐQUÐ<ÓVˆKØÒ&Ø%×5Ñ5�à×1×1Ð1ðØ—k‘k $Ó'�ð �bŒy˜C¤3 u£:Ô-Ø—‘×9Ñ9ØØ—K‘K“MØ4AØ")ð	 :ô ñ à$Ÿ{™{¨4°Ó3ÑˆJß˜j¨�n°KÔ?ØŸ™  j×&6Ñ&6Ó&8¸$ÀÐ EÓF‘àŸ™ ¨T°4Ð 8Ó9�Ø�~‰~˜d×#Ò#Ø×C×CÐCÜ ð "Xó Yð Yà�T�MˆEØ�‰×1Ñ1ØØØ,9Ø!ð	 	2ö 	
øô+ ô Ø“ðús   ÂF ÆF/Æ.F/c                ó$   € V P                  V4      # rE   )r3  r  s   &&&rS   r
  Ú1Deb822ParagraphToStrWrapperMixin._interpret_valueú  s   € ð ×)Ñ)¨%Ó0Ð0rV   rr   N)rv   rw   rx   ry   r|   r  r  r   r$  r3  rF  r
  r~   r   r€   s   @rS   r  r  –  sk   ø‡ € ð ÷ó ðð ÷ó ðð ÷ó ðð ÷ó ðòòB.
÷`1ð 1rV   r  c                   óz   a € ] tR tRt o RRRR/R lt]R 4       t]V 3R lR	 l4       t]V 3R
 lR l4       tRt	V t
R# )ÚAbstractDeb822ParagraphWrapperi   Úauto_resolve_ambiguous_fieldsFr›  Tc               ó*   € Wn         W n        W0n        R # rE   )Ú*_AbstractDeb822ParagraphWrapper__paragraphÚ>_AbstractDeb822ParagraphWrapper__auto_resolve_ambiguous_fieldsÚ9_AbstractDeb822ParagraphWrapper__discard_comments_on_read)rM   rh  rL  r›  s   &&$$rS   rT   Ú'AbstractDeb822ParagraphWrapper.__init__  s   € ð %ÔØ/LÔ,Ø*BÖ'rV   c                ó   € V P                   # rE   )rN  rg   s   &rS   rû  Ú)AbstractDeb822ParagraphWrapper._paragraph  s   € ð ×ÑÐrV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   Ú+AbstractDeb822ParagraphWrapper.__annotate__  s   ø€ ÷ /ñ /©4ñ /rV   c                ó   € V P                   # rE   )rP  rg   s   &rS   r  Ú8AbstractDeb822ParagraphWrapper._discard_comments_on_read  s   € à×.Ñ.Ð.rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   rU    s   ø€ ÷ 4ñ 4±ñ 4rV   c                ó   € V P                   # rE   )rO  rg   s   &rS   rø  Ú=AbstractDeb822ParagraphWrapper._auto_resolve_ambiguous_fields  s   € à×3Ñ3Ð3rV   )Ú__auto_resolve_ambiguous_fieldsÚ__discard_comments_on_readÚ__paragraphN)rv   rw   rx   ry   rT   r|   rû  r  rø  r~   r   r€   s   @rS   rK  rK     s]   ø‡ € ð	Cð 05ð	Cð +/ô		Cð ñ ó ð ð ÷/ó ð/ð ÷4ó ö4rV   rK  c                   óD   a a€ ] tR tRt oRRRR/V 3R lltR tRtVtV ;t# )	Ú"Deb822InterpretingParagraphWrapperi  rL  Fr›  Tc               ó8   <€ \         SV `  VVVR 7       W n        R# ©)rL  r›  N)r½   rT   Ú_interpretation)rM   rh  ÚinterpretationrL  r›  r¾   s   &&&$$€rS   rT   Ú+Deb822InterpretingParagraphWrapper.__init__  s'   ø€ ô 	‰Ñ˜Ø7TØ2Jð 	ô 	ð  .ÖrV   c                ó8   € V P                   P                  V4      # rE   )rb  rœ  r  s   &&&rS   r
  Ú3Deb822InterpretingParagraphWrapper._interpret_value+  s   € à×#Ñ#×-Ñ-¨eÓ4Ð4rV   )rb  )	rv   rw   rx   ry   rT   r
  r~   r   r”  r•  s   @@rS   r_  r_    s(   ù‡ € ð.ð 05ð	.ð
 +/÷.÷5ò 5rV   r_  c            
       óž   a a€ ] tR tRt oRRRRRRRRRR/V 3R	 llt]V3R
 lR l4       t]V3R lR l4       t]V3R lR l4       tRt	Vt
V ;t# )ÚDeb822DictishParagraphWrapperi0  r›  TÚ auto_map_initial_line_whitespacerL  FÚ(preserve_field_comments_on_field_updatesÚ*auto_map_final_newline_in_multiline_valuesc               óR   <€ \         SV `  VVVR 7       W0n        WPn        VV n        R# ra  )r½   rT   Ú@_Deb822DictishParagraphWrapper__auto_map_initial_line_whitespaceÚH_Deb822DictishParagraphWrapper__preserve_field_comments_on_field_updatesÚJ_Deb822DictishParagraphWrapper__auto_map_final_newline_in_multiline_values)rM   rh  r›  ri  rL  rj  rk  r¾   s   &&$$$$$€rS   rT   Ú&Deb822DictishParagraphWrapper.__init__3  s9   ø€ ô 	‰Ñ˜Ø7TØ2Jð 	ô 	ð 3SÔ/Ø:bÔ7à6ð 	Ö9rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   Ú*Deb822DictishParagraphWrapper.__annotate__G  s   ø€ ÷ 7ñ 7±4ñ 7rV   c                ó   € V P                   # rE   )rm  rg   s   &rS   r  Ú?Deb822DictishParagraphWrapper._auto_map_initial_line_whitespaceF  s   € à×6Ñ6Ð6rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   rr  K  s   ø€ ÷ ?ñ ?¹4ñ ?rV   c                ó   € V P                   # rE   )rn  rg   s   &rS   r$  ÚGDeb822DictishParagraphWrapper._preserve_field_comments_on_field_updatesJ  s   € à×>Ñ>Ð>rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   rr  O  s   ø€ ÷ Añ A¹Tñ ArV   c                ó   € V P                   # rE   )ro  rg   s   &rS   r   ÚIDeb822DictishParagraphWrapper._auto_map_final_newline_in_multiline_valuesN  s   € à×@Ñ@Ð@rV   )Ú,__auto_map_final_newline_in_multiline_valuesÚ"__auto_map_initial_line_whitespaceÚ*__preserve_field_comments_on_field_updates)rv   rw   rx   ry   rT   r|   r  r$  r   r~   r   r”  r•  s   @@rS   rh  rh  0  s�   ù‡ € ð7ð +/ð7ð 37ð	7ð
 05ð7ð ;?ð7ð =A÷7ð& ÷7ó ð7ð ÷?ó ð?ð ÷Aó ÷Að ArV   rh  c            
       ób  a € ] tR tRt o ]R 4       t]R 4       t]R 4       t]V 3R lR l4       t	RR/R	 lt
R
RRRRRRRRR/R lt]R 4       tR tR tR tR t]V 3R lR l4       tR tR tR&R ltR tR tR'R ltRRRR/R ltRRRR/R  lt]R! 4       t]V 3R" lR# l4       tR'R$ ltR%tV tR# )(ÚDeb822ParagraphElementiS  c                ó*   € \        . \        4       4      # rE   )ra  r5   ©Úclss   &rS   Únew_empty_paragraphÚ*Deb822ParagraphElement.new_empty_paragraphU  s   € ô 7°r¼:»<ÓHÐHrV   c                ó`   € V P                  4       pVP                  4        F	  w  r4WBV&   K  	  V# rE   )rƒ  Úitems)r‚  Úmappingrh  Úkr«   s   &&   rS   Ú	from_dictÚ Deb822ParagraphElement.from_dictZ  s1   € ð ×+Ñ+Ó-ˆ	Ø—M‘M–O‰DˆAØ�a‹Lñ $àÐrV   c                óª   € V'       g   \        R 4      h\        R V 4       4      p\        V4      \        V4      8X  d   \        W4      # \	        V4      # )z9A paragraph must consist of at least one field/value pairc              3   ó8   "  € T F  qP                   x € K  	  R # 5irE   ©rK  ©rª   Úkvs   & rS   r¬   Ú6Deb822ParagraphElement.from_kvpairs.<locals>.<genexpr>g  s   é € Ð!J¹/°B§-¦-»/ùrT  )râ   r5   r¹  ra  Ú%Deb822DuplicateFieldsParagraphElement)r‚  Úkvpair_elementsÚkvpair_orders   && rS   Úfrom_kvpairsÚ#Deb822ParagraphElement.from_kvpairsb  sO   € ÷ ÜÐXÓYÐYÜ!Ñ!J¹/Ó!JÓJˆÜˆ|Ó¤ OÓ 4Ô4ô ;¸?ÓYÐYô 5°_ÓEÐErV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   Ú#Deb822ParagraphElement.__annotate__r  s   ø€ ÷ ñ ¡dñ rV   c                ó   € R# )z0Tell whether this paragraph has duplicate fieldsFrr   rg   s   &rS   Úhas_duplicate_fieldsÚ+Deb822ParagraphElement.has_duplicate_fieldsq  s   € ñ rV   rL  Tc               ó   € \        V VVR7      # )aÝ  Provide a Dict-like view of the paragraph

This method returns a dict-like object representing this paragraph and
is useful for accessing fields in a given interpretation. It is possible
to use multiple versions of this dict-like view with different interpretations
on the same paragraph at the same time (for different fields).

    >>> example_deb822_paragraph = '''
    ... Package: foo
    ... # Field comment (because it becomes just before a field)
    ... Architecture: amd64
    ... # Inline comment (associated with the next line)
    ...               i386
    ... # We also support arm
    ...               arm64
    ...               armel
    ... '''
    >>> dfile = parse_deb822_file(example_deb822_paragraph.splitlines())
    >>> paragraph = next(iter(dfile))
    >>> list_view = paragraph.as_interpreted_dict_view(LIST_SPACE_SEPARATED_INTERPRETATION)
    >>> # With the defaults, you only deal with the semantic values
    >>> # - no leading or trailing whitespace on the first part of the value
    >>> list(list_view["Package"])
    ['foo']
    >>> with list_view["Architecture"] as arch_list:
    ...     orig_arch_list = list(arch_list)
    ...     arch_list.replace('i386', 'kfreebsd-amd64')
    >>> orig_arch_list
    ['amd64', 'i386', 'arm64', 'armel']
    >>> list(list_view["Architecture"])
    ['amd64', 'kfreebsd-amd64', 'arm64', 'armel']
    >>> print(paragraph.dump(), end='')
    Package: foo
    # Field comment (because it becomes just before a field)
    Architecture: amd64
    # Inline comment (associated with the next line)
                  kfreebsd-amd64
    # We also support arm
                  arm64
                  armel
    >>> # Format preserved and architecture replaced
    >>> with list_view["Architecture"] as arch_list:
    ...     # Prettify the result as sorting will cause awkward whitespace
    ...     arch_list.reformat_when_finished()
    ...     arch_list.sort()
    >>> print(paragraph.dump(), end='')
    Package: foo
    # Field comment (because it becomes just before a field)
    Architecture: amd64
    # We also support arm
                  arm64
                  armel
    # Inline comment (associated with the next line)
                  kfreebsd-amd64
    >>> list(list_view["Architecture"])
    ['amd64', 'arm64', 'armel', 'kfreebsd-amd64']
    >>> # Format preserved and architecture values sorted

:param interpretation: Decides how the field values are interpreted.  As an example,
  use LIST_SPACE_SEPARATED_INTERPRETATION for fields such as Architecture in the
  debian/control file.
:param auto_resolve_ambiguous_fields: This parameter is only relevant for paragraphs
  that contain the same field multiple times (these are generally invalid).  If the
  caller requests an ambiguous field from an invalid paragraph via a plain field name,
  the return dict-like object will refuse to resolve the field (not knowing which
  version to pick).  This parameter (if set to True) instead changes the error into
  assuming the caller wants the *first* variant.
)rL  )r_  )rM   rc  rL  s   &&$rS   Úas_interpreted_dict_viewÚ/Deb822ParagraphElement.as_interpreted_dict_viewv  s   € ôT 2ØØØ*Gô
ð 	
rV   r›  ri  rj  rk  c          	     ó$   € \        V VVVVVR7      # )ay  Provide a Dict[str, str]-like view of this paragraph with non-standard parameters

This method returns a dict-like object representing this paragraph that is
optionally configured differently from the default view.

    >>> example_deb822_paragraph = '''
    ... Package: foo
    ... # Field comment (because it becomes just before a field)
    ... Depends: libfoo,
    ... # Inline comment (associated with the next line)
    ...          libbar,
    ... '''
    >>> dfile = parse_deb822_file(example_deb822_paragraph.splitlines())
    >>> paragraph = next(iter(dfile))
    >>> # With the defaults, you only deal with the semantic values
    >>> # - no leading or trailing whitespace on the first part of the value
    >>> paragraph["Package"]
    'foo'
    >>> # - no inline comments in multiline values (but whitespace will be present
    >>> #   subsequent lines.)
    >>> print(paragraph["Depends"])
    libfoo,
             libbar,
    >>> paragraph['Foo'] = 'bar'
    >>> paragraph.get('Foo')
    'bar'
    >>> paragraph.get('Unknown-Field') is None
    True
    >>> # But you get asymmetric behaviour with set vs. get
    >>> paragraph['Foo'] = ' bar\n'
    >>> paragraph['Foo']
    'bar'
    >>> paragraph['Bar'] = '     bar\n#Comment\n another value\n'
    >>> # Note that the whitespace on the first line has been normalized.
    >>> print("Bar: " + paragraph['Bar'])
    Bar: bar
     another value
    >>> # The comment is present (in case you where wondering)
    >>> print(paragraph.get_kvpair_element('Bar').convert_to_text(), end='')
    Bar:     bar
    #Comment
     another value
    >>> # On the other hand, you can choose to see the values as they are
    >>> # - We will just reset the paragraph as a "nothing up my sleeve"
    >>> dfile = parse_deb822_file(example_deb822_paragraph.splitlines())
    >>> paragraph = next(iter(dfile))
    >>> nonstd_dictview = paragraph.configured_view(
    ...     discard_comments_on_read=False,
    ...     auto_map_initial_line_whitespace=False,
    ...     # For paragraphs with duplicate fields, you can choose to get an error
    ...     # rather than the dict picking the first value available.
    ...     auto_resolve_ambiguous_fields=False,
    ...     auto_map_final_newline_in_multiline_values=False,
    ... )
    >>> # Because we have reset the state, Foo and Bar are no longer there.
    >>> 'Bar' not in paragraph and 'Foo' not in paragraph
    True
    >>> # We can now see the comments (discard_comments_on_read=False)
    >>> # (The leading whitespace in front of "libfoo" is due to
    >>> #  auto_map_initial_line_whitespace=False)
    >>> print(nonstd_dictview["Depends"], end='')
     libfoo,
    # Inline comment (associated with the next line)
             libbar,
    >>> # And all the optional whitespace on the first value line
    >>> # (auto_map_initial_line_whitespace=False)
    >>> nonstd_dictview["Package"] == ' foo\n'
    True
    >>> # ... which will give you symmetric behaviour with set vs. get
    >>> nonstd_dictview['Foo'] = '  bar \n'
    >>> nonstd_dictview['Foo']
    '  bar \n'
    >>> nonstd_dictview['Bar'] = '  bar \n#Comment\n another value\n'
    >>> nonstd_dictview['Bar']
    '  bar \n#Comment\n another value\n'
    >>> # But then you get no help either.
    >>> try:
    ...     nonstd_dictview["Baz"] = "foo"
    ... except ValueError:
    ...     print("Rejected")
    Rejected
    >>> # With auto_map_initial_line_whitespace=False, you have to include minimum a newline
    >>> nonstd_dictview["Baz"] = "foo\n"
    >>> # The absence of leading whitespace gives you the terse variant at the expensive
    >>> # readability
    >>> paragraph.get_kvpair_element('Baz').convert_to_text()
    'Baz:foo\n'
    >>> # But because they are views, changes performed via one view is visible in the other
    >>> paragraph['Foo']
    'bar'
    >>> # The views show the values according to their own rules. Therefore, there is an
    >>> # asymmetric between paragraph['Foo'] and nonstd_dictview['Foo']
    >>> # Nevertheless, you can read or write the fields via either - enabling you to use
    >>> # the view that best suit your use-case for the given field.
    >>> 'Baz' in paragraph and nonstd_dictview.get('Baz') is not None
    True
    >>> # Deletion via the view also works
    >>> del nonstd_dictview['Baz']
    >>> 'Baz' not in paragraph and nonstd_dictview.get('Baz') is None
    True


:param discard_comments_on_read: When getting a field value from the dict,
  this parameter decides how in-line comments are handled.  When setting
  the value, inline comments are still allowed and will be retained.
  However, keep in mind that this option makes getter and setter asymmetric
  as a "get" following a "set" with inline comments will omit the comments
  even if they are there (see the code example).
:param auto_map_initial_line_whitespace: Special-case the first value line
  by trimming unnecessary whitespace leaving only the value. For single-line
  values, all space including newline is pruned. For multi-line values, the
  newline is preserved / needed to distinguish the first line from the
  following lines.  When setting a value, this option normalizes the
  whitespace of the initial line of the value field.
  When this option is set to True makes the dictionary behave more like the
  original Deb822 module.
:param preserve_field_comments_on_field_updates: Whether to preserve the field
  comments when mutating the field.
:param auto_resolve_ambiguous_fields: This parameter is only relevant for paragraphs
  that contain the same field multiple times (these are generally invalid).  If the
  caller requests an ambiguous field from an invalid paragraph via a plain field name,
  the return dict-like object will refuse to resolve the field (not knowing which
  version to pick).  This parameter (if set to True) instead changes the error into
  assuming the caller wants the *first* variant.
:param auto_map_final_newline_in_multiline_values: This parameter controls whether
  a multiline field with have / need a trailing newline. If True, the trailing
  newline is hidden on get and automatically added in set (if missing).
  When this option is set to True makes the dictionary behave more like the
  original Deb822 module.
)r›  ri  rL  rj  rk  )rh  )rM   r›  ri  rL  rj  rk  s   &$$$$$rS   Úconfigured_viewÚ&Deb822ParagraphElement.configured_viewÆ  s$   € ôV -ØØ%=Ø-MØ*GØ5]Ø7aô
ð 	
rV   c                ó   € V # rE   rr   rg   s   &rS   rû  Ú!Deb822ParagraphElement._paragraphZ  s	   € ð ˆrV   c                ó   € \         h)ú9Re-order the given field so it is "last" in the paragraphr™  ©rM   Úfields   &&rS   Ú
order_lastÚ!Deb822ParagraphElement.order_last_  rý  rV   c                ó   € \         h)ú:Re-order the given field so it is "first" in the paragraphr™  r¥  s   &&rS   Úorder_firstÚ"Deb822ParagraphElement.order_firstd  rý  rV   c                ó   € \         h)ú}Re-order the given field so appears directly after the reference field in the paragraph

The reference field must be present.r™  ©rM   r¦  Úreference_fields   &&&rS   Úorder_beforeÚ#Deb822ParagraphElement.order_beforei  rž  rV   c                ó   € \         h)úRe-order the given field so appears directly before the reference field in the paragraph

The reference field must be present.
r™  r¯  s   &&&rS   Úorder_afterÚ"Deb822ParagraphElement.order_afterp  r¬  rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r¸  )ra   rb   s   "€rS   rc   r—  y  s   ø€ ÷ "ñ "™cñ "rV   c                ó   € \         hrE   r™  rg   s   &rS   r   Ú#Deb822ParagraphElement.kvpair_countx  rö  rV   c                ó   € \         hrE   r™  rg   s   &rS   r  Ú Deb822ParagraphElement.iter_keys|  rö  rV   c                ó   € \         hrE   r™  r¿  s   &&rS   r  Ú.Deb822ParagraphElement.contains_kvpair_element€  rö  rV   c                ó   € \         hrE   r™  )rM   rÀ  r7  s   &&&rS   rb  Ú)Deb822ParagraphElement.get_kvpair_element„  rž  rV   c                ó   € \         hrE   r™  r  s   &&&rS   Úset_kvpair_elementÚ)Deb822ParagraphElement.set_kvpair_element‹  rö  rV   c                ó   € \         hrE   r™  ©rM   rv  s   &&rS   r  Ú,Deb822ParagraphElement.remove_kvpair_element�  rö  rV   Nc                ó   € \         h)úíRe-order all fields

:param key: Provide a key function (same semantics as for sorted).  Keep in mind that
  the module preserve the cases for field names - in generally, callers are recommended
  to use "lower()" to normalize the case.
r™  rÄ  s   &&rS   Úsort_fieldsÚ"Deb822ParagraphElement.sort_fields“  s
   € ô "Ð!rV   r9  r:  c               óª   € RV9   d   \        R4      hVP                  4       pV'       d   RV,           R,           pMRpV P                  VVVVR7       R# )a£  Sets a field in this paragraph to a simple "word" or "phrase"

In many cases, it is better for callers to just use the paragraph as
if it was a dictionary.  However, this method does enable to you choose
the field comment (if any), which can be a reason for using it.

This is suitable for "simple" fields like "Package".  Example:

    >>> example_deb822_paragraph = '''
    ... Package: foo
    ... '''
    >>> dfile = parse_deb822_file(example_deb822_paragraph.splitlines())
    >>> p = next(iter(dfile))
    >>> p.set_field_to_simple_value("Package", "mscgen")
    >>> p.set_field_to_simple_value("Architecture", "linux-any kfreebsd-any",
    ...                             field_comment=['Only ported to linux and kfreebsd'])
    >>> p.set_field_to_simple_value("Priority", "optional")
    >>> print(p.dump(), end='')
    Package: mscgen
    # Only ported to linux and kfreebsd
    Architecture: linux-any kfreebsd-any
    Priority: optional
    >>> # Values are formatted nicely by default, but it does not work with
    >>> # multi-line values
    >>> p.set_field_to_simple_value("Foo", "bar\nbin\n")
    Traceback (most recent call last):
        ...
    ValueError: Cannot use set_field_to_simple_value for values with newlines

:param item: Name of the field to set.  If the paragraph already
  contains the field, then it will be replaced.  If the field exists,
  then it will preserve its order in the paragraph.  Otherwise, it is
  added to the end of the paragraph.
  Note this can be a "paragraph key", which enables you to control
  *which* instance of a field is being replaced (in case of duplicate
  fields).
:param simple_value: The text to use as the value.  The value must not
  contain newlines.  Leading and trailing will be stripped but space
  within the value is preserved.  The value cannot contain comments
  (i.e. if the "#" token appears in the value, then it is considered
  a value rather than "start of a comment)
:param preserve_original_field_comment: See the description for the
  parameter with the same name in the set_field_from_raw_string method.
:param field_comment: See the description for the parameter with the same
  name in the set_field_from_raw_string method.
r  z=Cannot use set_field_to_simple_value for values with newlinesrÙ   r8  N)râ   r(  r>  )rM   rÀ  Úsimple_valuer9  r:  ÚstrippedÚ	raw_values   &&&$$  rS   r<  Ú0Deb822ParagraphElement.set_field_to_simple_valueŸ  s`   € ðl �<ÔÜÐ\Ó]Ð]ð
  ×%Ñ%Ó'ˆßØ˜h�¨Õ-‰Ið ˆIØ×&Ñ&ØØØ,KØ'ð	 	'ö 	
rV   c               óì  € . pVe   Ve   \        R4      hM6Ve3   \        V\        4      '       g   VP                  R V 4       4       RpRp\	        V4      w  p pTp V P                  VRR7      p	Vf   RpV	'       d   V	P                  pRP                  W‚34      p
V
P                  RR7      p\        V^R	7       Fr  w  rÍVP                  R
4      '       g   \        RP                  VR7      4      hV^8w  g   K@  V^ ,          R9  g   KP  Rp\        VP                  WÍ^ ,          R7      4      h	  \        V4      ^8”  d*   VR,          P                  R4      '       d   \        R4      hVP                  V4       \        \!        V4      4      pVP#                  4       pV'       d   \        RV,           4      h\%        \!        V4      4      p\        V\&        4      '       g   Q hVP                  V4      pVf   Q hV'       d"   V	'       d   V	P(                  Vn        RV	n        MVe   VVn        V P+                  VV4       R#   \         d#    T'       d   h T P                  T^ 3RR7      p	 EL i ; i)a”  Sets a field in this paragraph to a given text value

In many cases, it is better for callers to just use the paragraph as
if it was a dictionary.  However, this method does enable to you choose
the field comment (if any) and lets to have a higher degree of control
over whitespace (on the first line), which can be a reason for using it.

Example usage:

    >>> example_deb822_paragraph = '''
    ... Package: foo
    ... '''
    >>> dfile = parse_deb822_file(example_deb822_paragraph.splitlines())
    >>> p = next(iter(dfile))
    >>> raw_value = '''
    ... Build-Depends: debhelper-compat (= 12),
    ...                some-other-bd,
    ... # Comment
    ...                another-bd,
    ... '''.lstrip()  # Remove leading newline, but *not* the trailing newline
    >>> fname, new_value = raw_value.split(':', 1)
    >>> p.set_field_from_raw_string(fname, new_value)
    >>> print(p.dump(), end='')
    Package: foo
    Build-Depends: debhelper-compat (= 12),
                   some-other-bd,
    # Comment
                   another-bd,
    >>> # Format preserved

:param item: Name of the field to set.  If the paragraph already
  contains the field, then it will be replaced.  Otherwise, it is
  added to the end of the paragraph.
  Note this can be a "paragraph key", which enables you to control
  *which* instance of a field is being replaced (in case of duplicate
  fields).
:param raw_string_value: The text to use as the value.  The text must
  be valid deb822 syntax and is used *exactly* as it is given.
  Accordingly, multi-line values must include mandatory leading space
  on continuation lines, newlines after the value, etc. On the
  flip-side, any optional space or comments will be included.

  Note that the first line will *never* be read as a comment (if the
  first line of the value starts with a "#" then it will result
  in "Field-Name:#..." which is parsed as a value starting with "#"
  rather than a comment).
:param preserve_original_field_comment: If True, then if there is an
  existing field and that has a comment, then the comment will remain
  after this operation.  This is the default is the `field_comment`
  parameter is omitted.
  Note that if the parameter is True and the item is ambiguous, this
  will raise an AmbiguousDeb822FieldKeyError.  When the parameter is
  omitted, the ambiguity is resolved automatically and if the resolved
  field has a comment then that will be preserved (assuming
  field_comment is None).
:param field_comment: If not None, add or replace the comment for
  the field.  Each string in the list will become one comment
  line (inserted directly before the field name). Will appear in the
  same order as they do in the list.

  If you want complete control over the formatting of the comments,
  then ensure that each line start with "#" and end with "\n" before
  the call.  Otherwise, leading/trailing whitespace is normalized
  and the missing "#"/"\n" character is inserted.
NzNThe "preserve_original_field_comment" conflicts with "field_comment" parameterc              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irE   )r  rî  s   & rS   r¬   ÚCDeb822ParagraphElement.set_field_from_raw_string.<locals>.<genexpr>9  s   é € Ð"M¹}¸!¤?°1×#5Ð#5»}ùrT  FTr6  rZ  r[  r,  r  z2Line {i} in new value was missing trailing newline)ré  rÞ  z‘Line {i} in new value was invalid.  It must either start with " " space (continuation line) or "#" (comment line). The line started with "{line}")ré  r)  z2The last line in a value field cannot be a commentr]  )rÙ   r;  rÞ  rÝ  )râ   r�   r®  rƒ  ré  rb  r0   rK  rU  r^  r.  r  ra   r¹  rà  r_  r¸   r`  r·   ra  re  rÁ  )rM   rÀ  Úraw_string_valuer9  r:  re  rK  rØ  Úcased_field_nameÚoriginalÚrawÚ	raw_linesré  r)  rË  rf  rg  rh  rf   s   &&&$$              rS   r>  Ú0Deb822ParagraphElement.set_field_from_raw_stringè  sf  € ðT ˆØ*Ò6ØÒ(Ü ð ">ó ?ð ?ð )ð Ò&Ü˜mÔ-A×BÒBØ×"Ñ"Ñ"M¹}Ó"MÔMØ $�Ø.3Ð+ä& tÓ,Ñˆ
�A�qà%Ðð	NØ×.Ñ.¨t¸TÐ.ÓBˆHð +Ò2ð /3Ð+çà'×2Ñ2ÐØ�h‰hÐ(Ð;Ó<ˆØ—N‘N¨D�NÓ1ˆ	Ü  °!×4‰GˆAØ—=‘= ×&Ò&Ü Ð!U×!\Ñ!\Ð_`Ð!\Ó!aÓbÐbØ�AŽv˜$˜q�'Ð)9Ö9ð8�ô ! §¡¨a¸1µg Ó!>Ó?Ð?ñ 5ô ˆy‹>˜AÔ )¨B¥-×":Ñ":¸3×"?Ò"?ÜÐQÓRÐRØ×Ñ˜9Ô%ô (¬¨[Ó(9Ó:ˆØ!×:Ñ:Ó<ˆßÜÐCÀjÕPÓQÐQÜœ˜kÓ*Ó+ˆ	Ü˜)Ô%L×MÒMÐMÐMØ×,Ñ,¨ZÓ8ˆØÒ Ð Ð ß*ßØ(0×(@Ñ(@�Ô%Ø+/�Ô(øØÒ&Ø$1ˆEÔ!Ø×Ñ  eÖ,øô[ ,ô 	Nß.ð Ø×.Ñ.°
¸A¨ÈÐ.ÓM‹Hð	Nús   ÁI ÉI3ÉI3É2I3c                ó   € R # rE   rr   ©rM   Úfds   &&rS   ÚdumpÚDeb822ParagraphElement.dumpq  ó   € ñ
 	rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r_   )ra   rb   s   "€rS   rc   r—  y  ó   ø€ ÷ ñ ‘cñ rV   c                ó   € R # rE   rr   rg   s   &rS   rÛ  rÜ  x  ó   € árV   c                óÜ   € Vf'   RP                  R V P                  4        4       4      # V P                  4        F-  pVP                  VP                  P	                  R4      4       K/  	  R # )NrF  c              3   ó8   "  € T F  qP                   x € K  	  R # 5irE   rQ  rR  s   & rS   r¬   Ú.Deb822ParagraphElement.dump.<locals>.<genexpr>�  ó   é € Ð>Ñ+= aŸ6ž6Ó+=ùrT  úutf-8©rU  r?  Úwriter  Úencode©rM   rÚ  r!  s   && rS   rÛ  rÜ  |  óX   € ð Š:Ø—7‘7Ñ>¨4×+;Ñ+;Ô+=Ó>Ó>Ð>Ø×%Ñ%Ö'ˆEØ�H‰H�U—Z‘Z×&Ñ& wÓ/Ö0ñ (árV   rr   r“  rE   )rv   rw   rx   ry   Úclassmethodrƒ  r‰  r”  r|   r™  rœ  rŸ  rû  r§  r«  r±  rµ  r   r  r  rb  rÁ  r  rÈ  r<  r>  r   rÛ  r~   r   r€   s   @rS   r  r  S  su  ø‡ € àñIó ðIð ñó ðð ñFó ðFð ÷ó ððN
ð @DôN
ð`R
à15ðR
ð :>ðR
ð 7;ð	R
ð
 BFðR
ð DHôR
ðh ñó ðò"ò
"ò
"ò"ð ÷"ó ð"ò"ò"ô"ò"ò"ô
"ðG
ð CGð	G
ð
 15ôG
ðRG-ð CGð	G-ð
 15ôG-ðR ñó ðð ÷ó ð÷ò rV   r  c                   ó¢   a a€ ] tR tRt oRtV 3R lt]V3R lR l4       tR tR t	R t
R	 tR
 tR tR tR tRR ltR tRR ltR tRtVtV ;t# )ra  i‡  z¤Paragraph implementation optimized for valid deb822 files

When there are no duplicated fields, we can use simpler and faster
datastructures for common operations.
c                óœ   <€ \         SV `  4        V Uu/ uF  q3P                  VbK  	  upV n        W n        V P                  4        R # u upi rE   )r½   rT   rK  Ú_kvpair_elementsÚ_kvpair_orderr  )rM   r’  r“  r�  r¾   s   &&& €rS   rT   Ú0Deb822NoDuplicateFieldsParagraphElement.__init__Ž  sF   ø€ ô
 	‰ÑÔÙ=LÓ M¹_°r§¡°Ò!2¹_Ñ MˆÔØ)ÔØ×"Ñ"Ö$ùò !Ns   ”A	c                ó    <€ V ^8„  d   QhRS[ /# r\   r¸  )ra   rb   s   "€rS   rc   Ú4Deb822NoDuplicateFieldsParagraphElement.__annotate__™  s   ø€ ÷ *ñ *™cñ *rV   c                ó,   € \        V P                  4      # rE   )r¹  rï  rg   s   &rS   r   Ú4Deb822NoDuplicateFieldsParagraphElement.kvpair_count˜  s   € ä�4×(Ñ(Ó)Ð)rV   c                ó^   € \        VRR7      w  p pV P                  P                  V4       R# )r¤  T©rç  N)ré  rð  r§  ©rM   r¦  Úunpacked_fieldrØ  s   &&  rS   r§  Ú2Deb822NoDuplicateFieldsParagraphElement.order_lastœ  s+   € ô  +¨5À4ÔHÑˆ˜˜1Ø×Ñ×%Ñ% nÖ5rV   c                ó^   € \        VRR7      w  p pV P                  P                  V4       R# )rª  Tr÷  N)ré  rð  r«  rø  s   &&  rS   r«  Ú3Deb822NoDuplicateFieldsParagraphElement.order_first¢  s+   € ô  +¨5À4ÔHÑˆ˜˜1Ø×Ñ×&Ñ& ~Ö6rV   c                ó€   € \        VRR7      w  p p\        VRR7      w  p pV P                  P                  W54       R# )r®  Tr÷  N)ré  rð  r±  ©rM   r¦  r°  rù  rØ  Úunpacked_ref_fields   &&&   rS   r±  Ú4Deb822NoDuplicateFieldsParagraphElement.order_before¨  s@   € ô
  +¨5À4ÔHÑˆ˜˜1Ü#.¨ÐQUÔ#VÑ Ð˜A˜qØ×Ñ×'Ñ'¨ÖKrV   c                ó€   € \        VRR7      w  p p\        VRR7      w  p pV P                  P                  W54       R# )r´  Tr÷  N)ré  rð  rµ  rþ  s   &&&   rS   rµ  Ú3Deb822NoDuplicateFieldsParagraphElement.order_after±  s@   € ô  +¨5À4ÔHÑˆ˜˜1Ü#.¨ÐQUÔ#VÑ Ð˜A˜qØ×Ñ×&Ñ& ~ÖJrV   c                ó:   € \        R  V P                   4       4      # )c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irE   r_   ©rª   rˆ  s   & rS   r¬   ÚCDeb822NoDuplicateFieldsParagraphElement.__iter__.<locals>.<genexpr>¾  ó   é € Ð7Ñ$6˜q”C˜—F�FÓ$6ùrT  )r¸   rð  rg   s   &rS   r¯   Ú0Deb822NoDuplicateFieldsParagraphElement.__iter__¼  s   € äÑ7 D×$6Ò$6Ó7Ó7Ð7rV   c              #  óH   "  € R  V P                    4        Rj  x€L
  R#  L5i)c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5irE   r_   r  s   & rS   r¬   ÚDDeb822NoDuplicateFieldsParagraphElement.iter_keys.<locals>.<genexpr>Â  r  rT  N©rð  rg   s   &rS   r  Ú1Deb822NoDuplicateFieldsParagraphElement.iter_keysÀ  s   é € á7 D×$6Ò$6Ó7×7Ô7ùó   ‚"™ š"c                ó†   € R V n         \        VRR7      w  p pV P                  V V P                  P	                  V4       R # )NTr÷  )rò  ré  rï  rð  rt   )rM   rv  rØ  s   && rS   r  Ú=Deb822NoDuplicateFieldsParagraphElement.remove_kvpair_elementÄ  s>   € à $ˆÔÜ °dÔ;‰	ˆˆQ�Ø×!Ñ! #Ð&Ø×Ñ×!Ñ! #Ö&rV   c                óž   € \        V\        \        \        34      '       g   R # \	        RV4      p\        VRR7      w  p pW P                  9   # )Fr<   Tr÷  )r�   r`   rQ  r*   r   ré  rï  )rM   rÀ  rv  rØ  s   &&  rS   r  Ú?Deb822NoDuplicateFieldsParagraphElement.contains_kvpair_elementË  sG   € ä˜$¤¤eÔ-AÐ B×CÒCÙÜ�N DÓ)ˆÜ °tÔ<‰	ˆˆQ�Ø×+Ñ+Ñ+Ð+rV   c                ó�   € \        VR R7      w  p pV'       d   V P                  P                  V4      # V P                  V,          # )Tr÷  )ré  rï  Úget)rM   rÀ  r7  rØ  s   &&& rS   rb  Ú:Deb822NoDuplicateFieldsParagraphElement.get_kvpair_elementÓ  sA   € ô
 ! ¸Ô=‰
ˆˆa�ßØ×(Ñ(×,Ñ,¨TÓ2Ð2Ø×$Ñ$ TÕ*Ð*rV   c                ó¨  € \        VR R7      w  p p\        V\        4      '       d(   WP                  Jd   \	        R4      hVP
                  pM'WP
                  8w  d   \	        R4      hVP
                  pV P                  P                  V4      pRV n        W P                  V&   V P                  P                  V4       Ve   RVn        Wn        R# )Tr÷  zOKey is a Deb822FieldNameToken, but not *the* Deb822FieldNameToken for the valueúgCannot insert value under a different field value than field name from its Deb822FieldNameToken impliesN)ré  r�   r*   rÊ  râ   rK  rï  r  rò  rð  rÜ   r  )rM   rv  rf   rØ  Úoriginal_values   &&&  rS   rÁ  Ú:Deb822NoDuplicateFieldsParagraphElement.set_kvpair_elementÝ  sÍ   € ä °dÔ;‰	ˆˆQ�Ü�cÔ/×0Ò0Ø×+Ñ+Ó+Ü ð "2ó 3ð 3à×"Ñ"‰Cà×&Ñ&Ô&Ü ð "Jó Kð Kð ×"Ñ"ˆCØ×.Ñ.×2Ñ2°3Ó7ˆØ $ˆÔØ%*×Ñ˜cÑ"Ø×Ñ×!Ñ! #Ô&ØÒ%Ø,0ˆNÔ)Ø#ÖrV   c                ó$  € \        V P                  4       FG  pV P                  \        RV4      ,          pVP                  P                  4       '       d   RV n         M	  Vf   \        p\        \        V P                  VR7      4      V n        R# )rÇ  r6   N©rv  )
r  rð  rï  r   ro  r—  rò  r7   r5   Úsorted)rM   rv  Úlast_field_nameÚlast_kvpairs   &&  rS   rÈ  Ú3Deb822NoDuplicateFieldsParagraphElement.sort_fieldsô  sv   € ô  (¨×(:Ñ(:Ö;ˆOØ×/Ñ/´°W¸oÓ0NÕOˆKØ×(Ñ(×EÑE×GÒGØ(,�Ô%Ùñ	  <ð Š;Ü(ˆCä'¬¨t×/AÑ/AÀsÔ(KÓLˆÖrV   c              #  ód   a "  € V 3R  l\        RS P                  4       4        Rj  x€L
  R#  L5i)c              3   óJ   <"  € T F  pSP                   V,          x € K  	  R # 5irE   )rï  )rª   r|  rM   s   & €rS   r¬   ÚEDeb822NoDuplicateFieldsParagraphElement.iter_parts.<locals>.<genexpr>		  s'   øé € ð JÙH˜ð ×)Ñ)¨!×,Ò,ÛHùs   ƒ #zIterable[_strI]N)r   rð  rg   s   frS   rÇ   Ú2Deb822NoDuplicateFieldsParagraphElement.iter_parts	  s/   øé € ôJÜ!Ð"3°T×5GÑ5GÔHóJ÷ 	Jô 	Jùs   ƒ$0§.¨0©rò  rï  rð  r“  rE   )rv   rw   rx   ry   rz   rT   r|   r   r§  r«  r±  rµ  r¯   r  r  r  rb  rÁ  rÈ  rÇ   r~   r   r”  r•  s   @@rS   ra  ra  ‡  si   ù‡ € ñõ%ð ÷*ó ð*ò6ò7òLòKò8ò8ò'ò,ô+ò$ô.M÷&Jò JrV   ra  c                   óà   a a€ ] tR tRt oV 3R lt]V3R lR l4       tR tR tR t	R t
R	 tR
 tR tR t]V3R lR l4       tR tRR ltRR lt]R 4       tR tR tR tRR ltRtVtV ;t# )r‘  i	  c                ó’   <€ \         SV `  4        \        4       V n        / V n        V P                  V4       V P                  4        R # rE   )r½   rT   r3   rð  rï  Ú_init_kvpair_fieldsr  )rM   r’  r¾   s   &&€rS   rT   Ú.Deb822DuplicateFieldsParagraphElement.__init__	  s=   ø€ ä‰ÑÔÜ'›\ˆÔàð 	Ôà× Ñ  Ô1Ø×"Ñ"Ö$rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   Ú2Deb822DuplicateFieldsParagraphElement.__annotate__	  s   ø€ ÷ Dñ D¡dñ DrV   c                óX   € \        V P                  4      \        V P                  4      8„  # rE   )r¹  rð  rï  rg   s   &rS   r™  Ú:Deb822DuplicateFieldsParagraphElement.has_duplicate_fields	  s%   € ô �4×%Ñ%Ó&¬¨T×-BÑ-BÓ)CÑCÐCrV   c                ó>  € V P                   '       d   Q hV P                  '       d   Q hV Fn  pVP                  pV P                   P                  V4      pW0P                  9  d   V.V P                  V&   KL  V P                  V,          P                  V4       Kp  	  R # rE   )rð  rï  rK  rÜ   )rM   Úkvpairsr�  rK  rN   s   &&   rS   r'  Ú9Deb822DuplicateFieldsParagraphElement._init_kvpair_fields	  s†   € à×%×%Ð%Ð%Ð%Ø×(×(Ð(Ð(Ð(ÛˆBØŸ™ˆJØ×%Ñ%×,Ñ,¨RÓ0ˆDØ×!6Ñ!6Ô6Ø59°F�×%Ñ% jÓ1à×%Ñ% jÕ1×8Ñ8¸Ö>ó rV   c                óº   € \        V4      w  r#pV P                  V,          p. pVf   Ve-   V P                  WRW44      pVf   Q hVP                  V4       WV3# TpWV3# rE   )ré  rï  Ú_resolve_to_single_noderÜ   )rM   r¦  rv  rå  rè  ÚnodesÚnodes_being_relocatedÚsingle_nodes   &&      rS   Ú_nodes_being_relocatedÚ<Deb822DuplicateFieldsParagraphElement._nodes_being_relocated*	  sz   € ä!,¨UÓ!3Ñˆ�JØ×%Ñ% cÕ*ˆØ "ÐàÒ! UÒ%6Ø×6Ñ6°uÀ5ÓUˆKØÒ*Ð*Ð*Ø!×(Ñ(¨Ô5ð Ð+Ð+ð %*Ð!ØÐ+Ð+rV   c                óî  € V P                  V4      w  r#\        V4      ^8X  g   \        V4      \        V4      8X  g   Q hV P                  pV FQ  pVP                  VJ d   K  VP	                  V4       VP                  f   Q hVP                  WTP                  4       KS  	  \        V4      ^8X  dD   V^ ,          VR,          Jd.   V^ ,          pVP                  V4       VP                  V4       R# R# R# )r¤  NrÝ  )r5  r¹  rð  ró   Úremove_nodeÚinsert_node_afterrt   rÜ   ©rM   r¦  r2  r3  r“  rN   r4  s   &&     rS   r§  Ú0Deb822DuplicateFieldsParagraphElement.order_last8	  sã   € ð (,×'BÑ'BÀ5Ó'IÑ$ˆÜÐ(Ó)¨QÔ.´#°e³*ÄÐDYÓ@ZÔ2ZÐZÐZà×)Ñ)ˆÛ)ˆDØ×%Ñ%¨Ó-áØ×$Ñ$ TÔ*à×)Ñ)Ò5Ð5Ð5Ø×*Ñ*¨4×1GÑ1GÖHñ *ô Ð$Ó%¨Ô*Ð/DÀQÕ/GÈuÐUWÍyÓ/XØ/°Õ2ˆKØ�L‰L˜Ô%Ø�L‰L˜Ö%ñ 0YÑ*rV   c                óð  € V P                  V4      w  r#\        V4      ^8X  g   \        V4      \        V4      8X  g   Q hV P                  pV FQ  pVP                  VJ d   K  VP	                  V4       VP                  f   Q hVP                  WTP                  4       KS  	  \        V4      ^8X  dE   V^ ,          V^ ,          Jd/   V^ ,          pVP                  V4       VP                  ^ V4       R# R# R# )rª  N)r5  r¹  rð  rò   r8  Úinsert_node_beforert   Úinsertr:  s   &&     rS   r«  Ú1Deb822DuplicateFieldsParagraphElement.order_firstM	  så   € ð (,×'BÑ'BÀ5Ó'IÑ$ˆÜÐ(Ó)¨QÔ.´#°e³*ÄÐDYÓ@ZÔ2ZÐZÐZà×)Ñ)ˆÛ)ˆDØ×%Ñ%¨Ó-áØ×$Ñ$ TÔ*à×)Ñ)Ò5Ð5Ð5Ø×+Ñ+¨D×2HÑ2HÖIñ *ô Ð$Ó%¨Ô*Ð/DÀQÕ/GÈuÐUVÍxÓ/WØ/°Õ2ˆKØ�L‰L˜Ô%Ø�L‰L˜˜KÖ(ñ 0XÑ*rV   c                óî  € V P                  V4      w  r4\        V4      ^8X  g   \        V4      \        V4      8X  g   Q hV P                  V4      w  rVV^ ,          pWt9   d   \        R4      hV P                  pV F%  p	VP	                  V	4       VP                  W—4       K'  	  \        V4      ^8X  dC   \        V4      ^8”  d1   V^ ,          P                  P                  p
V P                  V
4       R# R# R# )r®  ú*Cannot re-order a field relative to itselfN)	r5  r¹  râ   rð  r8  r=  rf   rK  Ú!_regenerate_relative_kvapir_order©rM   r¦  r°  r2  r3  rØ  Úreference_nodesÚreference_noder“  rN   rK  s   &&&        rS   r±  Ú2Deb822DuplicateFieldsParagraphElement.order_beforeb	  sâ   € ð
 (,×'BÑ'BÀ5Ó'IÑ$ˆÜÐ(Ó)¨QÔ.´#°e³*ÄÐDYÓ@ZÔ2ZÐZÐZà!×8Ñ8¸ÓIÑˆØ(¨Õ+ˆØÔ2ÜÐIÓJÐJà×)Ñ)ˆÛ)ˆDØ×$Ñ$ TÔ*Ø×+Ñ+¨DÖAñ *ô Ð$Ó%¨Ô*¬s°5«z¸A¬~à.¨qÕ1×7Ñ7×BÑBˆJØ×2Ñ2°:Ö>ñ 0>Ñ*rV   c                ó   € V P                  V4      w  r4\        V4      ^8X  g   \        V4      \        V4      8X  g   Q hV P                  V4      w  rVVR,          pWt9   d   \        R4      hV P                  p\	        V4       F%  p	VP                  V	4       VP                  W—4       K'  	  \        V4      ^8X  dC   \        V4      ^8”  d1   V^ ,          P                  P                  p
V P                  V
4       R# R# R# )r´  rA  NrÝ  )
r5  r¹  râ   rð  r  r8  r9  rf   rK  rB  rC  s   &&&        rS   rµ  Ú1Deb822DuplicateFieldsParagraphElement.order_aftery	  sè   € ð (,×'BÑ'BÀ5Ó'IÑ$ˆÜÐ(Ó)¨QÔ.´#°e³*ÄÐDYÓ@ZÔ2ZÐZÐZØ!×8Ñ8¸ÓIÑˆà(¨Õ,ˆØÔ2ÜÐIÓJÐJà×)Ñ)ˆäÐ2Ö3ˆDØ×$Ñ$ TÔ*Ø×*Ñ*¨4Ö@ñ 4ô Ð$Ó%¨Ô*¬s°5«z¸A¬~à.¨qÕ1×7Ñ7×BÑBˆJØ×2Ñ2°:Ö>ñ 0>Ñ*rV   c                óÄ   € . pV P                   P                  4        F1  pVP                  P                  V8X  g   K   VP	                  V4       K3  	  W P
                  V&   R # rE   )rð  rÔ   rf   rK  rÜ   rï  )rM   rK  r2  rN   s   &&  rS   rB  ÚGDeb822DuplicateFieldsParagraphElement._regenerate_relative_kvapir_order’	  sN   € àˆØ×&Ñ&×1Ñ1Ö3ˆDØ�z‰z×$Ñ$¨
Ö2Ø—‘˜TÖ"ñ 4ð -2×Ñ˜jÓ)rV   c              #  ó:   "  € V P                    R j  x€L
  R #  L5irE   r  rg   s   &rS   rÇ   Ú0Deb822DuplicateFieldsParagraphElement.iter_partsš	  s   é € à×%Ñ%×%Ô%ùrÉ   c                ó    <€ V ^8„  d   QhRS[ /# r\   r¸  )ra   rb   s   "€rS   rc   r*  Ÿ	  s   ø€ ÷ 'ñ '™cñ 'rV   c                ó,   € \        V P                  4      # rE   )r¹  rð  rg   s   &rS   r   Ú2Deb822DuplicateFieldsParagraphElement.kvpair_countž	  s   € ä�4×%Ñ%Ó&Ð&rV   c              #  óH   "  € R  V P                    4        Rj  x€L
  R#  L5i)c              3   ó8   "  € T F  qP                   x € K  	  R # 5irE   r�  rŽ  s   & rS   r¬   ÚBDeb822DuplicateFieldsParagraphElement.iter_keys.<locals>.<genexpr>¤	  s   é € Ð?Ñ,> b—M–MÓ,>ùrT  Nr  rg   s   &rS   r  Ú/Deb822DuplicateFieldsParagraphElement.iter_keys¢	  s   é € á?¨D×,>Ò,>Ó?×?Ô?ùr  c           	     óT  € Vff   \        V4      ^8w  dT   Ve   V P                  WA4      pVe   V# Rp\        VP                  V\        V4      \        V4      ^,
          R7      4      h^ p W,          #   \         d*    T'       d    R # Rp\        TP                  Y#R7      4      hi ; i)Nz¾Ambiguous key {key} - the field appears {res_len} times. Use ({key}, index) to denote which instance of the field you want.  (Index can be 0..{res_len_1} or e.g. -1 to denote the last field))rv  Úres_lenÚ	res_len_1z>Field "{key}" was present but the index "{index}" was invalid.rä  )r¹  Ú_find_node_via_name_tokenr0   ra   Ú
IndexErrorræ  )rM   r2  rv  rå  rè  r7  rN   rË  s   &&&&&&  rS   r1  Ú=Deb822DuplicateFieldsParagraphElement._resolve_to_single_node¦	  s¸   € ð Š=Ü�5‹z˜QŒØÒ)Ø×9Ñ9¸*ÓL�DØÒ'Ø#˜ðT�ô 3°3·:±:À#ÜFIÈ%ÃjÜHKÈEË
ÐUVÍð 4>ó 4Xó Yð Yð ˆEð	=Ø•<ÐøÜô 	=ßÚØRˆCÜ˜3Ÿ:™:¨#˜:Ó;Ó<Ð<ð		=ús   Á+A3 Á3B'Â	B'c                óä   € \        V4      w  r4pV'       d#   V P                  P                  V4      pVf   R # MV P                  V,          pV P                  WcWEVR7      pVe   VP                  # R # )Nr6  )ré  rï  r  r1  rf   )rM   rÀ  r7  rv  rå  rè  r2  rN   s   &&&     rS   rb  Ú8Deb822DuplicateFieldsParagraphElement.get_kvpair_elementÃ	  sv   € ô
 "-¨TÓ!2Ñˆ�JßØ×)Ñ)×-Ñ-¨cÓ2ˆEØŠ}Ùð ð ×)Ñ)¨#Õ.ˆEØ×+Ñ+¨E¸ÐSZÐ+Ó[ˆØÒØ—:‘:ÐÙrV   c                óR   € V F   pWP                   P                  J g   K  Vu # 	  R # rE   )rf   rÊ  )rè  ÚelementsrN   s   && rS   rW  Ú?Deb822DuplicateFieldsParagraphElement._find_node_via_name_tokenÔ	  s(   € ó ˆDØŸZ™Z×3Ñ3Õ3Ø’ñ ñ rV   c                ó°   € \        V\        \        \        34      '       g   R # \	        RV4      p V P                  VRR7      RJ#   \         d     R# i ; i)Fr<   Tr6  N)r�   r`   rQ  r*   r   rb  r0   r¿  s   &&rS   r  Ú=Deb822DuplicateFieldsParagraphElement.contains_kvpair_elementã	  sX   € ä˜$¤¤eÔ-AÐ B×CÒCÙÜ�N DÓ)ˆð	Ø×*Ñ*¨4¸Ð*Ó>ÀdÐJÐJøÜ+ô 	Úð	ús   ±A ÁAÁAc                óH  € \        V4      w  rpV'       d   WBP                  Jdc   V P                  P                  VP                  4      pR pVe   V P                  WE4      pVf   \        R4      hVf   Q hVP                  V4      pVP                  pM'WP                  8w  d   \        R4      hVP                  pR V n        V P                  P                  V4      pVe	   V'       gŠ   Ve%   V^ 8w  d   Rp\        VP                  WR7      4      hV P                  P                  V4      pWP                  9  d   V.V P                  V&   R # V P                  V,          P                  V4       R # Rp	Vf-   Rp	V^ ,          p\        V4      ^8w  d   V.V P                  V&   MWS,          pR VP                  n        Wn        W(n        V	'       dQ   \        V4      ^8w  d?   VR,           F/  p
R V
P                  n        V P                  P!                  V
4       K1  	  R # R # R # )Nz“Key is a Deb822FieldNameToken, but not *the* Deb822FieldNameToken for the value nor the Deb822FieldNameToken for an existing field in the paragraphr  z˜Cannot replace field ({key}, {index}) as the field does not exist in the first place.  Please index-less key or ({key}, 0) if you want to add the field.rä  FTºrå  NN)ré  rÊ  rï  r  rK  rW  râ   rå  rò  ræ  ra   rð  rÜ   r¹  rf   r  r8  )rM   rv  rf   rå  rè  Úoriginal_nodesÚoriginal_noderË  rN   Úreplace_allrÒ   s   &&&        rS   rÁ  Ú8Deb822DuplicateFieldsParagraphElement.set_kvpair_elementí	  s  € ä!,¨SÓ!1Ñˆ�JßØ×!2Ñ!2Ó2Ø!%×!6Ñ!6×!:Ñ!:¸5×;KÑ;KÓ!L�Ø $�Ø!Ò-Ø$(×$BÑ$BÀ:Ó$^�Mà Ò(Ü$ð &dó eð eð &Ò1Ð1Ð1à&×,Ñ,¨]Ó;�Ø×"Ñ"‰Cà×&Ñ&Ô&Ü ð "Jó Kð Kð ×"Ñ"ˆCØ $ˆÔØ×.Ñ.×2Ñ2°3Ó7ˆØÒ!¯ØÒ  U¨a¤Zð0�ô ˜sŸz™z¨c˜zÓ?Ó@Ð@Ø×%Ñ%×,Ñ,¨UÓ3ˆDØ×/Ñ/Ô/Ø.2¨V�×%Ñ% cÑ*ñ ð ×%Ñ% cÕ*×1Ñ1°$Ô7ÙàˆØŠ=ØˆKØ! !Õ$ˆDÜ�>Ó" aÔ'Ø.2¨V�×%Ñ% cÑ*øð
 "Õ(ˆDð %)ˆ�
‰
Ô!Ø#ÔØŒ
çœ3˜~Ó.°!Ô3à# B×'Ð'�Ø)-�—‘Ô&Ø×"Ñ"×.Ñ.¨qÖ1ó (ñ 4‰;rV   c                óš  € \        V4      w  rpV P                  V,          pVfP   VfL   R V n        V F/  pR VP                  n        V P
                  P                  V4       K1  	  V P                  V R # Ve6   V P                  W44      pVf   Rp\        VP                  VR7      4      hTpMVf   Q h WB,          pR V n        \        V4      ^8X  d   V P                  V MVP                  V4       R VP                  n        V P
                  P                  V4       R #   \         d    Rp\        TP                  YR7      4      hi ; i)Nz>The field "{key}" is present but key used to access it is not.r  z@The field "{key}" is present, but the index "{idx}" was invalid.)rv  rC  )ré  rï  rò  rf   r  rð  r8  rW  ræ  ra   r¹  rt   )rM   rv  rC  rè  Ú
field_listrN   rd  rË  s   &&      rS   r  Ú;Deb822DuplicateFieldsParagraphElement.remove_kvpair_element.
  s@  € ä*¨3Ó/Ñˆ�*Ø×*Ñ*¨3Õ/ˆ
àÒ #¢+Ø$(ˆDÔ!ã"�Ø,0�—
‘
Ô)Ø×"Ñ"×.Ñ.¨tÖ4ñ #ð ×%Ñ% cÐ*ÙàÒ!à ×:Ñ:¸:ÓRˆMØÒ$ØV�Ü˜sŸz™z¨c˜zÓ2Ó3Ð3Ø ‰Dà’?Ð"�?ð=Ø!•�ð
 !%ˆÔÜˆz‹?˜aÔØ×%Ñ% cÑ*à×Ñ˜dÔ#Ø$(ˆ�
‰
Ô!Ø×Ñ×&Ñ& tÖ,øô ô =ØX�Ü˜sŸz™z¨c˜zÓ;Ó<Ð<ð=ús   Â5D! Ä!)E
c                ó.  a€ Vf   \         pVoV3R lp\        V P                  4       F*  pVP                  P	                  4       '       d   RV n         M	  \        V P                  VR7      p\        4       V n        / V n        V P                  V4       R# )zîRe-order all fields

:param key: Provide a key function (same semantics as for sorted).   Keep in mind that
  the module preserve the cases for field names - in generally, callers are recommended
  to use "lower()" to normalize the case.
Nc                 ó(   <€ S! V P                   4      # rE   r�  )rp  Úkey_impls   &€rS   Ú_actual_keyÚFDeb822DuplicateFieldsParagraphElement.sort_fields.<locals>._actual_keyc
  s   ø€ á˜F×-Ñ-Ó.Ð.rV   r  )
r7   r  rð  ro  r—  rò  r  r3   rï  r'  )rM   rv  rm  r  Úsorted_kvpair_listrl  s   &&   @rS   rÈ  Ú1Deb822DuplicateFieldsParagraphElement.sort_fieldsS
  sˆ   ø€ ð Š;Ü(ˆCð ˆõ	/ô $ D×$6Ñ$6Ö7ˆKØ×(Ñ(×EÑE×GÒGØ(,�Ô%Ùñ 8ô
 $ D×$6Ñ$6¸KÔHÐÜ'›\ˆÔØ "ˆÔØ× Ñ Ð!3Ö4rV   r$  r“  rE   )rv   rw   rx   ry   rT   r|   r™  r'  r5  r§  r«  r±  rµ  rB  rÇ   r   r  r1  rb  ÚstaticmethodrW  r  rÁ  r  rÈ  r~   r   r”  r•  s   @@rS   r‘  r‘  	  s›   ù‡ € õ%ð ÷Dó ðDò

?ò,ò&ò*)ò*?ò.?ò22ò&ð ÷'ó ð'ò@ô=ô:ð" ñó ðòò?2òB#-÷J5ô 5rV   r‘  c                   óæ   a a€ ] tR tRt oRtV 3R lt]R 4       t]V3R lR l4       t	R t
R tR	 tR
 tR tR tR tV3R lR ltV3R lR lt]R 4       t]V3R lR l4       tRR ltRtVtV ;t# )ÚDeb822FileElementir
  z!Represents the entire deb822 filec                óP   <€ \         SV `  4        Wn        V P                  4        R # rE   )r½   rT   Ú_token_and_elementsr  )rM   Útoken_and_elementsr¾   s   &&€rS   rT   ÚDeb822FileElement.__init__u
  s    ø€ ä‰ÑÔØ#5Ô Ø×"Ñ"Ö$rV   c                ó"   € V ! \        4       4      # )zsCreates a new Deb822FileElement with no contents

Note that a deb822 file must be non-empty to be considered valid
)r3   r�  s   &rS   Únew_empty_fileÚ Deb822FileElement.new_empty_file{
  s   € ñ ”:“<Ó Ð rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r³   )ra   rb   s   "€rS   rc   ÚDeb822FileElement.__annotate__…
  s   ø€ ÷ 7ñ 7™tñ 7rV   c                óŽ   € RpV  F"  pRpV'       d   VP                   '       g   K!   R# 	  V'       g   R# V P                  4       RJ # )záReturns true if the file is valid

Invalid elements include error elements (Deb822ErrorElement) but also
issues such as paragraphs with duplicate fields or "empty" files
(a valid deb822 file contains at least one paragraph).
FTN)r™  r`  )rM   Úhad_paragraphrh  s   &  rS   Úis_valid_fileÚDeb822FileElement.is_valid_file„
  sE   € ð ˆÛˆIØ ˆMß 	× >× >Ò >Úñ ÷
 Ùà×,Ñ,Ó.°$Ð6Ð6rV   c                óT   € \        \        V P                  \        R7      4      R4      # )z:Returns the first Deb822ErrorElement (or None) in the filer  N)r·   r¸   r  rO  rg   s   &rS   r`  Ú*Deb822FileElement.find_first_error_element—
  s&   € ô ”D˜×*Ñ*ÔFXÐ*ÓYÓZÐ\`ÓaÐarV   c                ó>   € \        V P                  \        4      4      # rE   )r¸   rû  r  rg   s   &rS   r¯   ÚDeb822FileElement.__iter__œ
  s   € ä�D×+Ñ+Ô,BÓCÓDÐDrV   c              #  ó:   "  € V P                    R j  x€L
  R #  L5irE   )ru  rg   s   &rS   rÇ   ÚDeb822FileElement.iter_parts 
  s   é € à×+Ñ+×+Ô+ùrÉ   c                óˆ  € RpRpRV n         V^ 8X  dR   V P                  '       g   V P                  V4       R# V P                  P                  p\	        V P                  4      pM_^ pV P                  P                  4        F?  pVP                  p\        V\        4      '       d
   V^,          pW^,
          8X  g   K=  Tp M	  Vf   V P                  V4       R# V'       d6   V P                  \        R4      4      pV P                  P                  Wƒ4      pV P                  P                  V P                  V4      V4       R# )aÒ  Inserts a paragraph into the file at the given "index" of paragraphs

Note that if the index is between two paragraphs containing a "free
floating" comment (e.g. paragraph/start-of-file, empty line, comment,
empty line, paragraph) then it is unspecified which "side" of the
comment the new paragraph will appear and this may change between
versions of python-debian.


>>> original = '''
... Package: libfoo-dev
... Depends: libfoo1 (= ${binary:Version}), ${shlib:Depends}, ${misc:Depends}
... '''.lstrip()
>>> deb822_file = parse_deb822_file(original.splitlines())
>>> para1 = Deb822ParagraphElement.new_empty_paragraph()
>>> para1["Source"] = "foo"
>>> para1["Build-Depends"] = "debhelper-compat (= 13)"
>>> para2 = Deb822ParagraphElement.new_empty_paragraph()
>>> para2["Package"] = "libfoo1"
>>> para2["Depends"] = "${shlib:Depends}, ${misc:Depends}"
>>> deb822_file.insert(0, para1)
>>> deb822_file.insert(1, para2)
>>> expected = '''
... Source: foo
... Build-Depends: debhelper-compat (= 13)
...
... Package: libfoo1
... Depends: ${shlib:Depends}, ${misc:Depends}
...
... Package: libfoo-dev
... Depends: libfoo1 (= ${binary:Version}), ${shlib:Depends}, ${misc:Depends}
... '''.lstrip()
>>> deb822_file.dump() == expected
True
NTr  )rò  ru  rÜ   rò   r´   rÔ   rf   r�   r  Ú_set_parentr&   Úinsert_before)	rM   rC  ÚparaÚanchor_nodeÚneeds_newlineré  rN   ÚentryÚnl_tokens	   &&&      rS   r>  ÚDeb822FileElement.insert¤
  s  € ðL ˆØˆØ $ˆÔØ�!Œ8ð ×+×+Ð+Ø—‘˜DÔ!ÙØ×2Ñ2×<Ñ<ˆKÜ  ×!9Ñ!9Ó:‰MàˆAØ×0Ñ0×;Ñ;Ö=�ØŸ
™
�Ü˜eÔ%;×<Ò<Ø˜•F�AØ˜a�%–<Ø"&�KÙñ >ð Òà�K‰K˜Öçà×+Ñ+Ô,AÀ$Ó,GÓH�Ø"×6Ñ6×DÑDÀXÓ[�Ø×$Ñ$×2Ñ2°4×3CÑ3CÀDÓ3IÈ;ÖWrV   c                óž  € V P                   P                  pVP                  e'   VP                  V J d   \        R4      h\        R4      hRV n        V'       dJ   \        V\        4      '       g4   V P                   P                  V P                  \        R4      4      4       V P                   P                  V P                  V4      4       R# )az  Appends a paragraph to the file

>>> deb822_file = Deb822FileElement.new_empty_file()
>>> para1 = Deb822ParagraphElement.new_empty_paragraph()
>>> para1["Source"] = "foo"
>>> para1["Build-Depends"] = "debhelper-compat (= 13)"
>>> para2 = Deb822ParagraphElement.new_empty_paragraph()
>>> para2["Package"] = "foo"
>>> para2["Depends"] = "${shlib:Depends}, ${misc:Depends}"
>>> deb822_file.append(para1)
>>> deb822_file.append(para2)
>>> expected = '''
... Source: foo
... Build-Depends: debhelper-compat (= 13)
...
... Package: foo
... Depends: ${shlib:Depends}, ${misc:Depends}
... '''.lstrip()
>>> deb822_file.dump() == expected
True
Nz(Paragraph is already a part of this filez/Paragraph is already part of another Deb822Filer  )	ru  rœ   r  râ   rò  r�   r&   rÜ   rˆ  )rM   rh  Útail_elements   && rS   rÜ   ÚDeb822FileElement.appendê
  s¦   € ð. ×/Ñ/×4Ñ4ˆØ×#Ñ#Ò/Ø×'Ñ'¨4Ó/Ü Ð!KÓLÐLÜÐNÓOÐOà $ˆÔ÷
 ¤
¨<Ô9N× OÒ OØ×$Ñ$×+Ñ+¨D×,<Ñ,<Ô=RÐSWÓ=XÓ,YÔZØ× Ñ ×'Ñ'¨×(8Ñ(8¸Ó(CÖDrV   c                óL  € VP                   V Jd   \        R 4      hRpV P                  P                  4        F  pVP                  VJ g   K   M	  Vf   \        R4      hRV n        VP                  pVP                  pV P                  P                  V4       VfE   V'       d<   \        VP                  \        4      '       d   V P                  P                  V4       M;\        VP                  \        4      '       d   V P                  P                  V4       RVn         R# )z%Paragraph is part of a different fileNzunable to find paragraph)r  râ   ru  rÔ   rf   rX   rò  rñ   rð   r8  r�   r&   )rM   rh  rN   rñ   rð   s   &&   rS   rt   ÚDeb822FileElement.remove  së   € à×#Ñ#¨4Ó/ÜÐDÓEÐEØˆØ×,Ñ,×7Ñ7Ö9ˆDØ�z‰z˜YÕ&Ùñ :ð Š<ÜÐ9Ó:Ð:Ø $ˆÔØ×*Ñ*ˆØ—N‘Nˆ	Ø× Ñ ×,Ñ,¨TÔ2ØÒß¤¨M×,?Ñ,?ÔAV×!WÒ!WØ×(Ñ(×4Ñ4°]ÔCøä˜)Ÿ/™/Ô+@×AÒAØ×(Ñ(×4Ñ4°YÔ?Ø#'ˆ	Ö rV   c                ó   € Wn         V# rE   )r  )rM   r  s   &&rS   rˆ  ÚDeb822FileElement._set_parent&  s   € àÔØˆrV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r?  )ra   rb   s   "€rS   rc   r|  +  s   ø€ ÷ ñ ¡Hñ rV   c                ó   € \         # rE   ©r   rg   s   &rS   rB  Ú$Deb822FileElement.position_in_parent+  ó   € äÐrV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r?  )ra   rb   s   "€rS   rc   r|  /  s   ø€ ÷ ñ ¡(ñ rV   c                ó   € \         # rE   r™  rg   s   &rS   rF  Ú"Deb822FileElement.position_in_file/  r›  rV   c                ó   € R # rE   rr   rÙ  s   &&rS   rÛ  ÚDeb822FileElement.dump3  rÝ  rV   c                ó    <€ V ^8„  d   QhRS[ /# r\   r_   )ra   rb   s   "€rS   rc   r|  ;  rß  rV   c                ó   € R # rE   rr   rg   s   &rS   rÛ  r   :  rá  rV   c                óÜ   € Vf'   RP                  R V P                  4        4       4      # V P                  4        F-  pVP                  VP                  P	                  R4      4       K/  	  R # )NrF  c              3   ó8   "  € T F  qP                   x € K  	  R # 5irE   rQ  rR  s   & rS   r¬   Ú)Deb822FileElement.dump.<locals>.<genexpr>C  rå  rT  ræ  rç  rê  s   && rS   rÛ  r   >  rë  rV   )rò  ru  rE   )rv   rw   rx   ry   rz   rT   rì  ry  r|   r  r`  r¯   rÇ   r>  rÜ   rt   rˆ  rB  rF  r   rÛ  r~   r   r”  r•  s   @@rS   rs  rs  r
  s¥   ù‡ € Ù+õ%ð ñ!ó ð!ð ÷7ó ð7ò$bò
Eò,òDXòL$EòL(ò,÷
ð ÷ð ð ñó ðð ÷ó ð÷ô rV   rs  )Úconstructorc                 óR   € V '       d   \         P                  # \         P                  # rE   )r×  r©  r  )Údiscard_commentss   &rS   Ú_parsed_value_render_factoryr©  U  s!   € çHXÔ#×DÑDð 6Ü%×5Ñ5ð6rV   c                  ó   € \        R 4      # )rÙ   )r$   rr   rV   rS   r�  r�  _  s   € ÔAZÐ[^ÔA_rV   c                 óZ   € \        V \        4      '       * ;'       g    V P                  R 8g  # )r  )r�   r&   r  rÂ  s   &rS   Ú_non_end_of_line_tokenr¬  r  s%   € ô ˜!Ô2Ó3Ô3×EÐE°q·v±vÀ±~ÐErV   c           	   #  ó`  "  € \        V 4      pRpRpRpV EF‘  pRp\        V\        4      '       d   TpRpRpMw\        V\        4      '       d   RpM^\        V\        4      '       dI   VP                  4       p\        V\        4      '       d#   RpTpRp\        R\        VR4      4      pVf   Q hVe   Vx € V'       g   K¬  \        VP                  \        4      4      p\        R\        VR4      4      pVe   VP                  R8X  g   Q hRp	Rp
V'       dy   \        VR,          \        4      '       d   \        RVP                  4       4      p
V'       d:   \        VR,          \        4      '       d   \        RV^ ,          4      p	VR,          p\        VVV	VV
V4      x € RpRpEK”  	  R# 5i)	zYParser helper - consumes tokens part of a Deb822ValueEntryElement and turns them into oneNFTr'   r&   r  rb  rÝ  )r   r�   r'   r+   r®  Úpeekr   r·   ÚlistÚ	takewhiler¬  r  r&   rž   r]  )Útoken_streamÚbuffered_streamre  rf  r!  Ústart_of_value_entryÚ
next_tokenÚtokens_in_valueÚ	eol_tokenÚleading_whitespaceÚtrailing_whitespaces   &          rS   Ú_build_value_liner¹  x  s½  é € ô (¨Ó5€Oð: €OØ"ÐØ€Eä ˆØ$ÐÜ�eÔ9×:Ò:Ø&+Ð#Ø#'Ð Ø‰EÜ˜Ô8×9Ò9Ø#'Ñ Ü˜Ô3×4Ò4Ø(×-Ñ-Ó/ˆJô ˜*Ô&B×CÒCØ'+Ð$Ø"'�Ø�ô +/Ð/MÜ/3°OÀTÓ/Jó+1Ð'ð /Ò:Ð:Ð:àÒØŠKßÑÜ" ?×#<Ñ#<Ô=SÓ#TÓUˆOÜÐ4´d¸?ÈDÓ6QÓRˆIØÒ$¨	¯©¸$Ô(>Ð>Ð>Ø!%ÐØ"&Ð÷ ô ˜o¨bÕ1Ô3H×IÒIÜ*.Ð/FØ/>×/BÑ/BÓ/Dó+1Ð'÷ #¤z°/À"Õ2EÔG\×']Ò']Ü)-Ð.EÀÐWXÕGYÓ)ZÐ&Ø&5°bÕ&9�OÜ(¨Ø)@Ø);Ø)8Ø)<Ø)2ó+ò +ð #ˆOØ&*Ó#óq !ùs   ‚B;F.ÃAF.Ä>F.ÅAF.c              #   ó’  "  € \        V 4      pV EF›  pR pRp\        V\        4      '       d   RpML\        V\        4      '       d7   TpVP	                  4       p\        V\        4      pV'       d    \        V4      pV'       Ed"   Tp\        VR4      p\        VR4      pVe   Vf5   V'       d   Vx € V.p	Ve   V	P                  V4       \        V	4      x €  R# \        V\        4      '       d4   \        V\        4      '       d   \        V\        RV4      VV4      x € EK  V.p
V
P                  VP                  \         4      4       VP	                  4       pV'       d4   \        V\"        4      '       d   \        VR4       V
P                  V4       \        V
4      x € EK—  Vx € EKž  	  R#   \         d    \        hi ; i5i)FNTr*   )r   r�   r*   r®  r®  r·   ÚStopIterationÚAssertionErrorrÜ   rO  r+   rˆ  rA   r   rƒ  r°  r¬  r(   )r±  r²  Útoken_or_elementÚstart_of_fieldre  r´  rK  Ú	separatorro  Úerror_elementsÚerror_tokensÚnls   &           rS   Ú_build_field_with_valuerÃ  Ø  sŸ  é € ô (¨Ó5€OÜ+ÐØˆØˆÜÐ&Ô(<×=Ò=Ø!‰NÜÐ(Ô*>×?Ò?Ø.ˆOØ(×-Ñ-Ó/ˆJÜ'¨
Ô4HÓIˆNßð)Ü'+¨OÓ'<Ð$÷ ˆ>Ø)ˆJÜ˜_¨dÓ3ˆIÜ  °$Ó7ˆMØÒ  MÒ$9÷ #Ø)Ò)Ø", �ØÒ(Ø"×)Ñ)¨)Ô4Ü(¨Ó8Ò8Úä˜)Ô%>×?Ò?Ü" =Ô2D×EÒEÜ/°Ü04Ð5KÈZÓ0XØ09Ø0=ó2õ 2ð !1Ð1�Ø×#Ñ# O×$=Ñ$=Ô>TÓ$UÔVØ$×)Ñ)Ó+�çœ* RÔ)E×FÒFÜ˜¨$Ô/Ø ×'Ñ'¨Ô+Ü(¨Ó6Õ6ð #Õ"óe ,øô %ô )Ü(Ð(ð)üs2   ‚A/GÁ2F2Á=GÂ)GÂ0B3GÅ$AGÆ2GÇGc              #   ó  "  € ^pV  Fz  pVP                   '       d=   VP                  4       P                  RR4      p\        RP	                  VVR7      4      hWP                  4       P                  R4      ,          pVx € K|  	  R# 5i)rå  r  z\nzBSyntax or Parse error on or near line {line_no}: "{error_as_text}")Úerror_as_textÚline_noN)r  r  rä   r1   ra   Úcount)ÚsequencerÆ  r!  rÅ  s   &   rS   Ú_abort_on_error_tokensrÉ    s‚   é € à€GÛˆà�>�>ˆ>Ø!×1Ñ1Ó3×;Ñ;¸DÀ%ÓHˆMÜ$ØT×[Ñ[Ø"/Ø#ð \ó %ó&ð &ð 	×(Ñ(Ó*×0Ñ0°Ó6Õ6ˆØŒó ùs   ‚BBÚaccept_files_with_error_tokensÚ#accept_files_with_duplicated_fieldsÚencodingræ  c               ó¾  € \        V \        \        34      '       d   V P                  R4      p \	        WR7      pV'       g   \        V4      p\        V4      p\        V4      p\        V4      p\        V4      p\        V4      p\        V4      p\        \        V4      4      pV'       g³   \        V4       F£  w  rg\        V\        4      '       g   K  \!        4       pRp	VP#                  4        FE  p
\%        V
4      w  p p\        V\        4      '       g   Q hW¸9   d   Tp	 MVP'                  V4       KG  	  V	f   Kˆ  Rp\)        VP+                  W–R7      4      h	  V# )a;  

:param sequence: An iterable over lines of str or bytes (an open file for
  reading will do).  If line endings are provided in the input, then they
  must be present on every line (except the last) will be preserved as-is.
  If omitted and the content is at least 2 lines, then parser will assume
  implicit newlines.
:param accept_files_with_error_tokens: If True, files with critical syntax
  or parse errors will be returned as "successfully" parsed. Usually,
  working on files with this kind of errors are not desirable as it is
  hard to make sense of such files (and they might in fact not be a deb822
  file at all).  When set to False (the default) a ValueError is raised if
  there is a critical syntax or parse error.
  Note that duplicated fields in a paragraph is not considered a critical
  parse error by this parser as the implementation can gracefully cope
  with these. Use accept_files_with_duplicated_fields to determine if
  such files should be accepted.
:param accept_files_with_duplicated_fields: If True, then
  files containing paragraphs with duplicated fields will be returned as
  "successfully" parsed even though they are invalid according to the
  specification.  The paragraphs will prefer the first appearance of the
  field unless caller explicitly requests otherwise (e.g., via
  Deb822ParagraphElement.configured_view).  If False, then this method
  will raise a ValueError if any duplicated fields are seen inside any
  paragraph.
:param encoding: The encoding to use (this is here to support Deb822-like
   APIs, new code should not use this parameter).
T)rÌ  Nz6Duplicate field "{dup_field}" in paragraph number {no})Ú	dup_fieldÚno)r�   r`   Úbytesr^  r-   rÉ  Ú%_combine_comment_tokens_into_elementsr¹  Ú(_combine_vl_elements_into_value_elementsrÃ  Ú%_combine_kvp_elements_into_paragraphsÚ#_combine_error_tokens_into_elementsrs  r3   r.  r‘  ÚsetÚkeysré  Úaddrâ   ra   )rÈ  rÊ  rË  rÌ  r�  rf  rÏ  rh  Úfield_namesrÎ  r¦  rK  rØ  rË  s   &$$$          rS   r_  r_  !  s4  € ôH �(œS¤%˜L×)Ò)à×&Ñ& tÓ,ˆô " (Ô>€Fß)Ü'¨Ó/ˆÜ2°6Ó:€FÜ˜vÓ&€FÜ5°fÓ=€FÜ$ VÓ,€FÜ2°6Ó:€Fô 1°Ó8€Fä#¤J¨vÓ$6Ó7€Kç.Ü& {Ö3‰MˆBÜ˜)Ô%J×KÔKÜ!›e�Ø �	Ø&Ÿ^™^Ö-�EÜ'2°5Ó'9Ñ$�J  1ä% j´#×6Ò6Ð6Ð6Ø!Ô0Ø$.˜	ÙØ—O‘O JÖ/ñ .ð Ô(ØR�CÜ$ S§Z¡Z¸) ZÓ%KÓLÐLñ 4ð  ÐrV   Ú__main__)é   é	   r“  )„Úcollections.abcÚcollectionsÚ
contextlibÚsysrÇ  rF   Úabcr   Útypesr   Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Údebian._deb822_repro._utilr   r   r   Údebian._deb822_repro.formatterr   r   r   Údebian._deb822_repro.locatabler   r   r   r    Údebian._deb822_repro.tokensr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   Údebian._deb822_repro.typesr0   r1   Údebian._utilr2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   ÚStreamingValueParserr`   ÚStrToValueParserÚKVPNoderC   Úversion_infoÚAbstractContextManagerr‚   r�   r—  r   r—   rÏ  rÙ  rÛ  rã  rì  r>  r³  rO  r]  rˆ  r×  r®  rA   r  ré  rð  rò  rô  r  rK  r_  rh  r  ra  r‘  rs  rÔ  rÑ  rÒ  r”  rÓ  r©  Ú#LIST_SPACE_SEPARATED_INTERPRETATIONÚ#LIST_COMMA_SEPARATED_INTERPRETATIONÚLIST_UPLOADERS_INTERPRETATIONr¬  r¹  rÃ  rÉ  r_  rv   ÚdoctestÚtestmodrr   rV   rS   Ú<module>ró     s5  ðó Û Û 
Û Û Ý Ý ÷÷ ÷ ÷ õ õ "÷*ñ *÷ñ ÷ VÓ U÷÷ ÷ ÷ ñ ÷ X÷÷ õ ÷÷ ó ð   Ð.?ÀÕ.LÐ MÈrÐ QÕRÐ Ø˜S˜E 8¨E°-ÀÐ2CÕ,DÕ#EÐEÕFÐ Ø
Ð4Õ
5€ôP�W˜R•[ô Pðf ×Ñ�vÔ§Ø,6×,MÑ,MÈaÕ,PÑ)ô°¸µ
ô ô_%˜G B¨ F�OØAÐBaÕbô_%ôD"�W˜Q•Zô "ô>1¨°qÕ(9¸7À1ÀbÀ5½>ô >1òB!ôH
Ð:Ð;PÐQSÐUWÐQWÕ;XÐZ\Ð;\Õ]ô 
òD-ò
+ò1ò$-1ô`V�Iô VôrD }ô DôB˜ô ô4X&˜]ô X&ôv˜ô ô<"$˜}ô "$ôJ(˜=ô (ô6G" ô G"òTô"ò6	/ð ×Ñ�vÔ§Ø(Ÿ_™_×4Ñ4°\À1°_ÕEÑô §¡×!8Ñ!8¸'À!½*Àcô ô%"˜ �Ð%;¸AÕ%>ô %"ôVg1Ð'9¸#Õ'>Ø'*ôg1ôT4Ð%7¸Õ%:¸Cô 4ô65Ð)GÈÕ)Jô 5ô* AÐ$BÀ3Õ$GØ$Dô AôFq˜]Ð,LÈcô qôhCJÐ.Dô CJôLb5Ð,Bô b5ôJT˜ô Tñn '?Ð?OÐQcÓ&dÐ #Ù(@ÐASØAUó)WÐ %á+CÐDZØDVó,XÐ (á(@ØØØ&×3Ñ3ô)Ð %ò6ñ '9Ð9SØ9UØ9QØ9`Ù9_Ø9Uó';Ð #ñ '9Ð9NØ9PØ9QØ9IØ9IØ9Uó';Ð #ñ !3Ð3HØ3NØ3KØ3CØ3CØ3Oó!5Ð òFò]+ò@7#òtðMà5:ðMð ;@ðMð  'ô	Mð` ˆzÔÛØ‡OƒOÖñ rV   