U b£`MÈã@sLddgZddlmZddlTGdd„deƒZGdd„dƒZGdd„dƒZd S) ÚScannerÚ ScannerErroré)ÚMarkedYAMLError)Ú*c@s eZdZdS)rN)Ú__name__Ú __module__Ú __qualname__©r r ú?/opt/alt/python38/lib64/python3.8/site-packages/yaml/scanner.pyr sc@seZdZdd„ZdS)Ú SimpleKeycCs(||_||_||_||_||_||_dS©N)Ú token_numberÚrequiredÚindexÚlineÚcolumnÚmark)Úselfr rrrrrr r r Ú__init__&s zSimpleKey.__init__N)rrrrr r r r r #sr c@szeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?d@„Z"dAdB„Z#dCdD„Z$dEdF„Z%dGdH„Z&dIdJ„Z'dKdL„Z(dMdN„Z)dOdP„Z*dQdR„Z+dSdT„Z,dUdV„Z-dWdX„Z.dYdZ„Z/d[d\„Z0d]d^„Z1d_d`„Z2dadb„Z3dcdd„Z4dedf„Z5dgdh„Z6didj„Z7dkdl„Z8dmdn„Z9dodp„Z:dqdr„Z;dsdt„Zdydz„Z?d{d|„Z@d}d~dd€d€dd‚dƒd„d…d†d‡dˆd‰dŠd‹dŒddŽœZAddd‘d’œZBd“d”„ZCd•d–„ZDd—d˜„ZEd™dš„ZFd›dœ„ZGddž„ZHdŸd „ZId¡d¢„ZJd£d¤„ZKd¥S)¦rcCs<d|_d|_g|_| ¡d|_d|_g|_d|_i|_dS)zInitialize the scanner.FééÿÿÿÿTN) ÚdoneÚ flow_levelÚtokensÚfetch_stream_startÚ tokens_takenÚindentÚindentsÚallow_simple_keyÚpossible_simple_keys©rr r r r0s zScanner.__init__cGsD| ¡r| ¡q|jr@|s dS|D]}t|jd|ƒr$dSq$dS)NTrF)Úneed_more_tokensÚfetch_more_tokensrÚ isinstance)rÚchoicesZchoicer r r Ú check_tokenqs zScanner.check_tokencCs*| ¡r| ¡q|jr"|jdSdSdS)Nr)r!r"rr r r r Ú peek_token}s   zScanner.peek_tokencCs6| ¡r| ¡q|jr2|jd7_|j d¡SdS)Nrr)r!r"rrÚpopr r r r Ú get_token‡s  zScanner.get_tokencCs2|jr dS|jsdS| ¡| ¡|jkr.dSdS)NFT)rrÚstale_possible_simple_keysÚnext_possible_simple_keyrr r r r r!‘szScanner.need_more_tokenscCsÒ| ¡| ¡| |j¡| ¡}|dkr4| ¡S|dkrL| ¡rL| ¡S|dkrd| ¡rd|  ¡S|dkr||  ¡r||  ¡S|dkrŒ|  ¡S|dkrœ|  ¡S|dkr¬| ¡S|dkr¼| ¡S|d krÌ| ¡S|dkrä| ¡rä| ¡S|d krü| ¡rü| ¡S|d kr| ¡r| ¡S|d kr*| ¡S|d kr<| ¡S|dkrN| ¡S|dkrh|jsh| ¡S|dkr‚|js‚| ¡S|dkr”| ¡S|dkr¦| ¡S| ¡r¸|  ¡St!ddd|| "¡ƒ‚dS)Núú%ú-Ú.ú[Ú{ú]Ú}ú,ú?ú:rú&ú!ú|ú>ú'ú"z!while scanning for the next tokenz.found character %r that cannot start any token)#Úscan_to_next_tokenr)Ú unwind_indentrÚpeekÚfetch_stream_endÚcheck_directiveÚfetch_directiveÚcheck_document_startÚfetch_document_startÚcheck_document_endÚfetch_document_endÚfetch_flow_sequence_startÚfetch_flow_mapping_startÚfetch_flow_sequence_endÚfetch_flow_mapping_endÚfetch_flow_entryÚcheck_block_entryÚfetch_block_entryÚ check_keyÚ fetch_keyÚ check_valueÚ fetch_valueÚ fetch_aliasÚ fetch_anchorÚ fetch_tagrÚ fetch_literalÚ fetch_foldedÚ fetch_singleÚ fetch_doubleÚ check_plainÚ fetch_plainrÚget_mark©rÚchr r r r"œs`        þzScanner.fetch_more_tokenscCs6d}|jD]&}|j|}|dks*|j|kr |j}q |Sr )rr )rZmin_token_numberÚlevelÚkeyr r r r*s   z Scanner.next_possible_simple_keycCs\t|jƒD]L}|j|}|j|jks4|j|jdkr |jrNtd|jd| ¡ƒ‚|j|=q dS)Niúwhile scanning a simple keyúcould not find expected ':')ÚlistrrrrrrrZ)rr]r^r r r r)s  ÿÿz"Scanner.stale_possible_simple_keyscCs^|j o|j|jk}|jrZ| ¡|jt|jƒ}t|||j |j |j|  ¡ƒ}||j |j<dSr ) rrrrÚremove_possible_simple_keyrÚlenrr rrrZr)rrr r^r r r Úsave_possible_simple_key'sÿz Scanner.save_possible_simple_keycCs@|j|jkr<|j|j}|jr2td|jd| ¡ƒ‚|j|j=dS)Nr_r`)rrrrrrZ)rr^r r r rb8s  ÿz"Scanner.remove_possible_simple_keycCs@|jr dS|j|kr<| ¡}|j ¡|_|j t||ƒ¡q dSr )rrrZrr'rÚappendZ BlockEndToken)rrrr r r r=Es   zScanner.unwind_indentcCs&|j|kr"|j |j¡||_dSdS)NTF)rrre)rrr r r Ú add_indent]s  zScanner.add_indentcCs$| ¡}|j t|||jd¡dS)N)Úencoding)rZrreZStreamStartTokenrg©rrr r r rgs ÿzScanner.fetch_stream_startcCsB| d¡| ¡d|_i|_| ¡}|j t||ƒ¡d|_dS)NrFT) r=rbrrrZrreZStreamEndTokenrrhr r r r?ss zScanner.fetch_stream_endcCs,| d¡| ¡d|_|j | ¡¡dS)NrF)r=rbrrreÚscan_directiver r r r rA†s zScanner.fetch_directivecCs| t¡dSr )Úfetch_document_indicatorZDocumentStartTokenr r r r rC’szScanner.fetch_document_startcCs| t¡dSr )rjZDocumentEndTokenr r r r rE•szScanner.fetch_document_endcCsH| d¡| ¡d|_| ¡}| d¡| ¡}|j |||ƒ¡dS)NrFé)r=rbrrZÚforwardrre©rÚ TokenClassÚ start_markÚend_markr r r rj˜s  z Scanner.fetch_document_indicatorcCs| t¡dSr )Úfetch_flow_collection_startZFlowSequenceStartTokenr r r r rF¨sz!Scanner.fetch_flow_sequence_startcCs| t¡dSr )rqZFlowMappingStartTokenr r r r rG«sz Scanner.fetch_flow_mapping_startcCsJ| ¡|jd7_d|_| ¡}| ¡| ¡}|j |||ƒ¡dS)NrT)rdrrrZrlrrermr r r rq®sz#Scanner.fetch_flow_collection_startcCs| t¡dSr )Úfetch_flow_collection_endZFlowSequenceEndTokenr r r r rH¿szScanner.fetch_flow_sequence_endcCs| t¡dSr )rrZFlowMappingEndTokenr r r r rIÂszScanner.fetch_flow_mapping_endcCsJ| ¡|jd8_d|_| ¡}| ¡| ¡}|j |||ƒ¡dS)NrF)rbrrrZrlrrermr r r rrÅsz!Scanner.fetch_flow_collection_endcCs<d|_| ¡| ¡}| ¡| ¡}|j t||ƒ¡dS©NT)rrbrZrlrreZFlowEntryToken)rrorpr r r rJÖs zScanner.fetch_flow_entrycCs‚|jsF|jstddd| ¡ƒ‚| |j¡rF| ¡}|j t||ƒ¡nd|_|  ¡| ¡}|  ¡| ¡}|j t ||ƒ¡dS)Nz%sequence entries are not allowed hereT) rrrrZrfrrreZBlockSequenceStartTokenrbrlZBlockEntryToken©rrrorpr r r rLäsþ zScanner.fetch_block_entrycCs„|jsD|jstddd| ¡ƒ‚| |j¡rD| ¡}|j t||ƒ¡|j |_|  ¡| ¡}|  ¡| ¡}|j t ||ƒ¡dS)Nz!mapping keys are not allowed here) rrrrZrfrrreÚBlockMappingStartTokenrbrlÚKeyTokenrtr r r rNsþ  zScanner.fetch_keycCs|j|jkr||j|j}|j|j=|j |j|jt|j|jƒ¡|jst| |j ¡rt|j |j|jt |j|jƒ¡d|_ n\|jsš|j sšt ddd|  ¡ƒ‚|jsÆ| |j ¡rÆ|  ¡}|j t ||ƒ¡|j |_ | ¡|  ¡}| ¡|  ¡}|j t||ƒ¡dS)NFz#mapping values are not allowed here)rrrÚinsertr rrvrrfrrurrrZrerbrlZ ValueToken)rr^rrorpr r r rP!s8    ÿ  ÿþ  zScanner.fetch_valuecCs$| ¡d|_|j | t¡¡dS©NF)rdrrreÚ scan_anchorZ AliasTokenr r r r rQYszScanner.fetch_aliascCs$| ¡d|_|j | t¡¡dSrx)rdrrreryZ AnchorTokenr r r r rRdszScanner.fetch_anchorcCs"| ¡d|_|j | ¡¡dSrx)rdrrreÚscan_tagr r r r rSoszScanner.fetch_tagcCs|jdddS)Nr8©Ústyle©Úfetch_block_scalarr r r r rTzszScanner.fetch_literalcCs|jdddS)Nr9r{r}r r r r rU}szScanner.fetch_foldedcCs$d|_| ¡|j | |¡¡dSrs)rrbrreÚscan_block_scalar©rr|r r r r~€szScanner.fetch_block_scalarcCs|jdddS)Nr:r{©Úfetch_flow_scalarr r r r rV‹szScanner.fetch_singlecCs|jdddS)Nr;r{rr r r r rWŽszScanner.fetch_doublecCs$| ¡d|_|j | |¡¡dSrx)rdrrreÚscan_flow_scalarr€r r r r‚‘szScanner.fetch_flow_scalarcCs"| ¡d|_|j | ¡¡dSrx)rdrrreÚ scan_plainr r r r rYœszScanner.fetch_plaincCs|jdkrdSdS)NrT)rr r r r r@«s zScanner.check_directivecCs.|jdkr*| d¡dkr*| d¡dkr*dSdS)Nrrkú---õ …

T©rÚprefixr>r r r r rB²s   ÿzScanner.check_document_startcCs.|jdkr*| d¡dkr*| d¡dkr*dSdS)Nrrkú...r†Tr‡r r r r rDºs   ÿzScanner.check_document_endcCs| d¡dkS)Nrr†)r>r r r r rKÂszScanner.check_block_entrycCs|jr dS| d¡dkSdS©NTrr†©rr>r r r r rMÇszScanner.check_keycCs|jr dS| d¡dkSdSrŠr‹r r r r rOÑszScanner.check_valuecCs6| ¡}|dkp4| d¡dko4|dkp4|j o4|dkS)Nu …

-?:,[]{}#&*!|>'"%@`rr†r-z?:)r>rr[r r r rXÛs þzScanner.check_plaincCs~|jdkr| ¡dkr| ¡d}|sz| ¡dkr<| ¡q&| ¡dkr^| ¡dkr^| ¡qH| ¡rt|jsxd|_q"d}q"dS)NruFú ú#õ …

T)rr>rlÚscan_line_breakrr)rÚfoundr r r r<ðs     zScanner.scan_to_next_tokencCsŒ| ¡}| ¡| |¡}d}|dkr:| |¡}| ¡}n:|dkrV| |¡}| ¡}n| ¡}| ¡dkrt| ¡q^| |¡t||||ƒS)NZYAMLZTAGrŽ)rZrlÚscan_directive_nameÚscan_yaml_directive_valueÚscan_tag_directive_valuer>Úscan_directive_ignored_lineZDirectiveToken)rroÚnameÚvaluerpr r r ris        zScanner.scan_directivecCsÄd}| |¡}d|kr"dksXnd|kr8dksXnd|krNdksXn|dkrl|d 7}| |¡}q|s†td |d || ¡ƒ‚| |¡}| |¡| ¡}|d krÀtd |d || ¡ƒ‚|S) NrÚ0Ú9ÚAÚZÚaÚzú-_rúwhile scanning a directiveú6expected alphabetic or numeric character, but found %rõ …

)r>rrZrˆrl)rroÚlengthr\r–r r r r‘&s2 Bÿ ÿþ  ÿþzScanner.scan_directive_namecCs†| ¡dkr| ¡q| |¡}| ¡dkrFtd|d| ¡| ¡ƒ‚| ¡| |¡}| ¡dkr~td|d| ¡| ¡ƒ‚||fS)NrŒr.ržz%expected a digit or '.', but found %rr z%expected a digit or ' ', but found %r)r>rlÚscan_yaml_directive_numberrrZ)rroÚmajorÚminorr r r r’;s      þ   þz!Scanner.scan_yaml_directive_valuecCs|| ¡}d|krdks4ntd|d|| ¡ƒ‚d}d| |¡krRdkr`nn |d7}q8t| |¡ƒ}| |¡|S)Nr—r˜ržzexpected a digit, but found %rrr)r>rrZÚintrˆrl)rror\r¡r–r r r r¢Lsÿ  z"Scanner.scan_yaml_directive_numbercCsH| ¡dkr| ¡q| |¡}| ¡dkr6| ¡q | |¡}||fS)NrŒ)r>rlÚscan_tag_directive_handleÚscan_tag_directive_prefix)rroÚhandlerˆr r r r“Ys      z Scanner.scan_tag_directive_valuecCs6| d|¡}| ¡}|dkr2td|d|| ¡ƒ‚|S)NÚ directiverŒržúexpected ' ', but found %r)Úscan_tag_handler>rrZ©rror–r\r r r r¦cs ÿz!Scanner.scan_tag_directive_handlecCs6| d|¡}| ¡}|dkr2td|d|| ¡ƒ‚|S)Nr©r ržrª)Ú scan_tag_urir>rrZr¬r r r r§ls ÿz!Scanner.scan_tag_directive_prefixcCsj| ¡dkr| ¡q| ¡dkr8| ¡dkr8| ¡q"| ¡}|dkr^td|d|| ¡ƒ‚| ¡dS)NrŒrrŽržú0expected a comment or a line break, but found %r©r>rlrrZr©rror\r r r r”us     ÿþz#Scanner.scan_directive_ignored_linec Cs| ¡}| ¡}|dkrd}nd}| ¡d}| |¡}d|krLdks‚nd|krbdks‚nd |krxd ks‚n|d kr–|d 7}| |¡}q8|s´td ||d|| ¡ƒ‚| |¡}| |¡| ¡}|dkròtd ||d|| ¡ƒ‚| ¡}||||ƒS)NrÚaliasZanchorrr—r˜r™ršr›rœrrzwhile scanning an %srŸu …

?:,]}%@`)rZr>rlrrˆ) rrnroZ indicatorr•r¡r\r–rpr r r ryƒs@  Bÿ  ÿþ   ÿþzScanner.scan_anchorc Cs"| ¡}| d¡}|dkrdd}| d¡| d|¡}| ¡dkrZtd|d| ¡| ¡ƒ‚| ¡nz|dkr~d}d }| ¡n`d}d }|d kr°|d krœd }q°|d7}| |¡}q†d }|rÆ| d|¡}n d }| ¡| d|¡}| ¡}|d krtd |d|| ¡ƒ‚||f}| ¡}t|||ƒS)Nrú<éÚtagr9zwhile parsing a tagzexpected '>', but found %rr†r7Fr Tzwhile scanning a tagrª)rZr>rlr­rr«ZTagToken) rror\r¨Úsuffixr¡Z use_handler–rpr r r rz§sN     þ     ÿzScanner.scan_tagcCs°|dkrd}nd}g}| ¡}| ¡| |¡\}}| |¡|jd}|dkrTd}|dkrv| ¡\}} } t|| ƒ} n||d} | | ¡\}} d} |j| krr|  ¡dkrr|  |¡|  ¡dk} d}|  |¡d krà|d7}qÈ|  |  |¡¡| |¡|  ¡} | | ¡\}} |j| krr|  ¡dkrr|r`| d kr`| r`|  ¡dkr`|sj|  d ¡n |  | ¡q”qrq”|dk r†|  | ¡|dkrš|  |¡td |¡d|| |ƒS) Nr9TFrÚr+ú rrŽÚ rŒ)rZrlÚscan_block_scalar_indicatorsÚscan_block_scalar_ignored_linerÚscan_block_scalar_indentationÚmaxÚscan_block_scalar_breaksrr>ÚextendrerˆrÚ ScalarTokenÚjoin)rr|ZfoldedÚchunksroÚchompingÚ incrementZ min_indentÚbreaksÚ max_indentrprÚ line_breakZleading_non_spacer¡r r r rÐsX        ÿ ÿ      ÿzScanner.scan_block_scalarcCsød}d}| ¡}|dkrn|dkr&d}nd}| ¡| ¡}|dkrÊt|ƒ}|dkrdtd|d| ¡ƒ‚| ¡n\|dkrÊt|ƒ}|dkr˜td|d| ¡ƒ‚| ¡| ¡}|dkrÊ|dkr¾d}nd}| ¡| ¡}|d krðtd|d || ¡ƒ‚||fS) Nz+-ú+TFÚ 0123456789rúwhile scanning a block scalarzrlr¥rrZ)rrorÂrÃr\r r r r¹sPþ þÿþz$Scanner.scan_block_scalar_indicatorscCsj| ¡dkr| ¡q| ¡dkr8| ¡dkr8| ¡q"| ¡}|dkr^td|d|| ¡ƒ‚| ¡dS)NrŒrrŽrÉr®r¯r°r r r rºDs     þz&Scanner.scan_block_scalar_ignored_linecCsdg}d}| ¡}| ¡dkrZ| ¡dkr@| | ¡¡| ¡}q| ¡|j|kr|j}q|||fS)Nrõ …

rŒ)rZr>rerrlr)rrÁrÅrpr r r r»Rs    z%Scanner.scan_block_scalar_indentationcCsxg}| ¡}|j|kr,| ¡dkr,| ¡q | ¡dkrp| | ¡¡| ¡}|j|kr,| ¡dkr,| ¡qNq,||fS)NrŒõ …

)rZrr>rlrer)rrrÁrpr r r r½as   z Scanner.scan_block_scalar_breakscCs˜|dkrd}nd}g}| ¡}| ¡}| ¡| | ||¡¡| ¡|krr| | ||¡¡| | ||¡¡q@| ¡| ¡}td |¡d|||ƒS)Nr;TFr¶)rZr>rlr¾Úscan_flow_scalar_non_spacesÚscan_flow_scalar_spacesr¿rÀ)rr|ÚdoublerÁroZquoterpr r r rƒns  ÿzScanner.scan_flow_scalarr+úúú r¸ú ú ú úrŒr;ú\ú/õÂ…õ u
u
)r—r›ÚbÚtrÑÚnÚvÚfÚrÚerŒr;rÖr×ÚNÚ_ÚLÚPr³éé)ÚxÚuÚUc Cs¶g}d}| |¡dkr |d7}q|r>| | |¡¡| |¡| ¡}|sv|dkrv| d¡dkrv| d¡| d¡q|r‚|dksŽ|s¢|dkr¢| |¡| ¡q|r¬|dkr¬| ¡| ¡}||jkræ| |j|¡| ¡nÄ||jkrn|j|}| ¡t|ƒD]6}| |¡dkr td |d || |¡f| ¡ƒ‚q t | |¡d ƒ}| t |ƒ¡| |¡n<|d kr”|  ¡|  |  ||¡¡ntd |d || ¡ƒ‚q|SqdS)Nru'"\ …

rr:r³z"\rÖÚ0123456789ABCDEFabcdefz%while scanning a double-quoted scalarz?expected escape sequence of %d hexdecimal numbers, but found %rérËz!found unknown escape character %r)r>rerˆrlÚESCAPE_REPLACEMENTSÚ ESCAPE_CODESÚrangerrZr¥Úchrrr¾Úscan_flow_scalar_breaks)rrÎrorÁr¡r\ÚkÚcoder r r rÌ¡sT            ÿþ  ÿz#Scanner.scan_flow_scalar_non_spacesc Cs°g}d}| |¡dkr |d7}q| |¡}| |¡| ¡}|dkrXtd|d| ¡ƒ‚nT|dkr¢| ¡}| ||¡}|dkrˆ| |¡n|s–| d ¡| |¡n | |¡|S) Nrr·rr+úwhile scanning a quoted scalarzfound unexpected end of streamrËr¸rŒ) r>rˆrlrrZrrðrer¾) rrÎrorÁr¡Ú whitespacesr\rÆrÄr r r rÍÌs,   ÿ     zScanner.scan_flow_scalar_spacescCszg}| d¡}|dks|dkr>| d¡dkr>td|d| ¡ƒ‚| ¡dkrT| ¡q>| ¡dkrp| | ¡¡q|SqdS) Nrkr…r‰r†róz#found unexpected document separatorr·rË)rˆr>rrZrlrer)rrÎrorÁrˆr r r rðäs  ÿÿ   zScanner.scan_flow_scalar_breakscCsg}| ¡}|}|jd}g}d}| ¡dkr0qð| |¡}|dks„|dkrj| |d¡d|jrbdndks„|jrz|dkrzq„|d7}q0|dkrŽqðd |_| |¡| | |¡¡| |¡| ¡}|  ||¡}|rð| ¡dksð|js|j |krqðqt d  |¡d ||ƒS) Nrrrr†r5z,[]{}r¶z,?[]{}FT) rZrr>rrr¾rerˆrlÚscan_plain_spacesrr¿rÀ)rrÁrorprZspacesr¡r\r r r r„ösJ   ÿ ÿþüü    ÿÿzScanner.scan_plainc Cs&g}d}| |¡dkr |d7}q| |¡}| |¡| ¡}|dkr| ¡}d|_| d¡}|dksn|dkr€| d¡d kr€dSg} | ¡d krâ| ¡dkr¦| ¡q„|  | ¡¡| d¡}|dksÎ|dkr„| d¡d kr„dSq„|d krö| |¡n| s| d¡| | ¡n|r"| |¡|S) NrrŒrrËTrkr…r‰r†rÊr¸)r>rˆrlrrrer¾) rrrorÁr¡rôr\rÆrˆrÄr r r rõsB      ÿ     ÿ    zScanner.scan_plain_spacescCsê| ¡}|dkr*td||d|| ¡ƒ‚d}| |¡}|dkrÒd|krTdksŠnd|krjd ksŠnd |kr€d ksŠn|d krž|d7}| |¡}q@|dkrÊ| |¡td||d|| ¡ƒ‚|d7}| |¡}| |¡|S) Nr7úwhile scanning a %szexpected '!', but found %rrrŒr—r˜r™ršr›rœr)r>rrZrlrˆ)rr•ror\r¡r–r r r r«Ds0 ÿ Bÿ   ÿ  zScanner.scan_tag_handlecCsôg}d}| |¡}d|kr&dks\nd|krrerˆrlÚscan_uri_escapesrrZrÀ)rr•rorÁr¡r\r r r r­\s. Bÿ    ÿzScanner.scan_tag_uric CsÎg}| ¡}| ¡dkr~| ¡tdƒD]2}| |¡dkr(td||d| |¡| ¡ƒ‚q(| t| d¡dƒ¡| d¡q zt|ƒ  d¡}Wn8t k rÈ}ztd||t |ƒ|ƒ‚W5d}~XYnX|S)Nr,r³rêrözBexpected URI escape sequence of 2 hexdecimal numbers, but found %rrëzutf-8) rZr>rlrîrrer¥rˆÚbytesÚdecodeÚUnicodeDecodeErrorÚstr)rr•roZcodesrrñr–Úexcr r r r÷us&   ÿþ (zScanner.scan_uri_escapescCsN| ¡}|dkr6| d¡dkr*| d¡n| ¡dS|dkrJ| ¡|SdS)Nu Â…r³z r¸u

r¶)r>rˆrlr[r r r rˆs  zScanner.scan_line_breakN)Lrrrrr%r&r(r!r"r*r)rdrbr=rfrr?rArCrErjrFrGrqrHrIrrrJrLrNrPrQrRrSrTrUr~rVrWr‚rYr@rBrDrKrMrOrXr<rir‘r’r¢r“r¦r§r”ryrzrr¹rºr»r½rƒrìrírÌrÍrðr„rõr«r­r÷rr r r r r.s¼A    l    !8       #    $)L( îý+)%N)Ú__all__Úerrorrrrr rr r r r Ús