3
QfXʧ                 @   sL   d dgZ ddlmZ ddlT G dd deZG dd dZG dd  d Zd	S )
EmitterEmitterError   )	YAMLError)*c               @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r	   r	   U/home/psgendb/BIRCHDEV/pkg/SPAdes-3.15.4/linux-x86_64/share/spades/pyyaml3/emitter.pyr      s   c               @   s   e Zd Zdd ZdS )ScalarAnalysisc	       	      C   s4   || _ || _|| _|| _|| _|| _|| _|| _d S )N)scalarempty	multilineallow_flow_plainallow_block_plainallow_single_quotedallow_double_quotedallow_block)	selfr   r   r   r   r   r   r   r   r	   r	   r
   __init__   s    zScalarAnalysis.__init__N)r   r   r   r   r	   r	   r	   r
   r      s   r   c               @   s(  e Zd ZdddZdddZdd Zd	d
 Zdd Zdd ZdddZ	dd Z
dd Zdd ZdddZdd Zdd ZdddZd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zdd8d9Zd:d; Zd<d= Zdd>d?Z d@dA Z!dBdC Z"dDdE Z#dFdG Z$dHdI Z%dJdK Z&dLdM Z'dNdO Z(dPdQ Z)dRdS Z*dTdU Z+dVdW Z,dXdY Z-dZd[ Z.d\d] Z/d^d_ Z0d`da Z1dbdc Z2ddde Z3ddfdgZ4dhdi Z5ddjdkZ6dldm Z7dndo Z8ddqdrZ9dsdtdudvdwdxdydzd{d|d}d~ddddZ:dddZ;dd Z<dd Z=dd Z>dddZ?dS )r   !z!!)r   ztag:yaml.org,2002:Nc             C   s   || _ d | _g | _| j| _g | _d | _g | _d | _d| _	d| _
d| _d| _d| _d| _d| _d| _d| _d| _|| _|| _d| _|rd|  k odk n  r|| _d| _|r|| jd kr|| _d| _|dkr|| _d | _d | _d | _d | _d | _d S )N    FT   r   
   P   

)r   r   r   )streamencodingstatesexpect_stream_startstateeventseventindentsindent
flow_levelroot_contextsequence_contextmapping_contextsimple_key_contextlinecolumn
whitespace	indention
open_ended	canonicalallow_unicodebest_indent
best_widthbest_line_breaktag_prefixesprepared_anchorprepared_taganalysisstyle)r   r   r1   r&   widthr2   
line_breakr	   r	   r
   r   &   sD    zEmitter.__init__c             C   s   g | _ d | _d S )N)r    r"   )r   r	   r	   r
   disposej   s    zEmitter.disposec             C   s:   | j j| x(| j s4| j jd| _| j  d | _qW d S )Nr   )r#   appendneed_more_eventspopr$   r"   )r   r$   r	   r	   r
   emito   s
    
zEmitter.emitc             C   sX   | j s
dS | j d }t|tr(| jdS t|tr<| jdS t|trP| jdS dS d S )NTr   r   r      F)r#   
isinstanceDocumentStartEventneed_eventsSequenceStartEventMappingStartEvent)r   r$   r	   r	   r
   r?   x   s    






zEmitter.need_more_eventsc             C   sx   d}x`| j dd  D ]N}t|ttfr0|d7 }n&t|ttfrH|d8 }nt|trVd}|dk rdS qW t| j |d k S )Nr   r   F)r#   rC   rD   CollectionStartEventDocumentEndEventCollectionEndEventStreamEndEventlen)r   countlevelr$   r	   r	   r
   rE      s    


zEmitter.need_eventsFc             C   sF   | j j| j | jd kr.|r&| j| _qBd| _n|sB|  j| j7  _d S )Nr   )r%   r>   r&   r3   )r   flow
indentlessr	   r	   r
   increase_indent   s    

zEmitter.increase_indentc             C   sP   t | jtr>| jjr,t| jd r,| jj| _| j  | j| _nt	d| j d S )Nr   z%expected StreamStartEvent, but got %s)
rC   r$   StreamStartEventr   hasattrr   write_stream_startexpect_first_document_startr"   r   )r   r	   r	   r
   r!      s    

zEmitter.expect_stream_startc             C   s   t d| j d S )Nzexpected nothing, but got %s)r   r$   )r   r	   r	   r
   expect_nothing   s    zEmitter.expect_nothingc             C   s   | j ddS )NT)first)expect_document_start)r   r	   r	   r
   rV      s    z#Emitter.expect_first_document_startc       	      C   sv  t | jtr(| jjs| jjr8| jr8| jdd | j  | jjrX| j| jj}| j	| | j
j | _| jjrt| jjj }xB|D ]:}| jj| }|| j|< | j|}| j|}| j|| qW |o| jj o| j o| jj o| jj o| j  }|s| j  | jdd | jr| j  | j| _nJt | jtrd| jrR| jdd | j  | j  | j| _ntd| j d S )Nz...Tz---z'expected DocumentStartEvent, but got %s)rC   r$   rD   versiontagsr0   write_indicatorwrite_indentprepare_versionwrite_version_directiveDEFAULT_TAG_PREFIXEScopyr6   sortedkeysprepare_tag_handleprepare_tag_prefixwrite_tag_directiveexplicitr1   check_empty_documentexpect_document_rootr"   rL   write_stream_endrW   r   )	r   rX   version_textZhandleshandleprefixhandle_textprefix_textimplicitr	   r	   r
   rY      sB    







zEmitter.expect_document_startc             C   sT   t | jtrB| j  | jjr0| jdd | j  | j  | j| _nt	d| j d S )Nz...Tz%expected DocumentEndEvent, but got %s)
rC   r$   rJ   r]   rg   r\   flush_streamrY   r"   r   )r   r	   r	   r
   expect_document_end   s    
zEmitter.expect_document_endc             C   s   | j j| j | jdd d S )NT)root)r    r>   rr   expect_node)r   r	   r	   r
   ri      s    zEmitter.expect_document_rootc             C   s   || _ || _|| _|| _t| jtr.| j  nt| jtt	fr| j
d | j  t| jtrf| j  qt| jtr| js| js| jjs| j r| j  q| j  qt| jtr| js| js| jjs| j r| j  q| j  ntd| j d S )N&zexpected NodeEvent, but got %s)r(   r)   r*   r+   rC   r$   
AliasEventexpect_aliasScalarEventrI   process_anchorprocess_tagexpect_scalarrF   r'   r1   
flow_stylecheck_empty_sequenceexpect_flow_sequenceexpect_block_sequencerG   check_empty_mappingexpect_flow_mappingexpect_block_mappingr   )r   rs   sequencemapping
simple_keyr	   r	   r
   rt      s,    






zEmitter.expect_nodec             C   s.   | j jd krtd| jd | jj | _d S )Nz!anchor is not specified for aliasr   )r$   anchorr   ry   r    r@   r"   )r   r	   r	   r
   rw     s    
zEmitter.expect_aliasc             C   s0   | j dd | j  | jj | _| jj | _d S )NT)rP   )rR   process_scalarr%   r@   r&   r    r"   )r   r	   r	   r
   r{   
  s    zEmitter.expect_scalarc             C   s6   | j dddd |  jd7  _| jdd | j| _d S )N[T)r.   r   )rP   )r\   r'   rR   expect_first_flow_sequence_itemr"   )r   r	   r	   r
   r~     s    zEmitter.expect_flow_sequencec             C   sx   t | jtr@| jj | _|  jd8  _| jdd | jj | _	n4| j
sR| j| jkrZ| j  | jj| j | jdd d S )Nr   ]FT)r   )rC   r$   SequenceEndEventr%   r@   r&   r'   r\   r    r"   r1   r-   r4   r]   r>   expect_flow_sequence_itemrt   )r   r	   r	   r
   r     s    z'Emitter.expect_first_flow_sequence_itemc             C   s   t | jtrZ| jj | _|  jd8  _| jr@| jdd | j	  | jdd | j
j | _n@| jdd | jsx| j| jkr| j	  | j
j| j | jdd d S )Nr   ,Fr   T)r   )rC   r$   r   r%   r@   r&   r'   r1   r\   r]   r    r"   r-   r4   r>   r   rt   )r   r	   r	   r
   r   $  s    z!Emitter.expect_flow_sequence_itemc             C   s6   | j dddd |  jd7  _| jdd | j| _d S )N{T)r.   r   )rP   )r\   r'   rR   expect_first_flow_mapping_keyr"   )r   r	   r	   r
   r   6  s    zEmitter.expect_flow_mappingc             C   s   t | jtr@| jj | _|  jd8  _| jdd | jj | _	nn| j
sR| j| jkrZ| j  | j
 r| j r| jj| j | jddd n&| jdd | jj| j | jdd d S )Nr   }FT)r   r   ?)r   )rC   r$   MappingEndEventr%   r@   r&   r'   r\   r    r"   r1   r-   r4   r]   check_simple_keyr>    expect_flow_mapping_simple_valuert   expect_flow_mapping_value)r   r	   r	   r
   r   <  s    z%Emitter.expect_first_flow_mapping_keyc             C   s   t | jtrZ| jj | _|  jd8  _| jr@| jdd | j	  | jdd | j
j | _nz| jdd | jsx| j| jkr| j	  | j r| j r| j
j| j | jddd n&| jdd | j
j| j | jdd d S )	Nr   r   Fr   T)r   r   r   )r   )rC   r$   r   r%   r@   r&   r'   r1   r\   r]   r    r"   r-   r4   r   r>   r   rt   r   )r   r	   r	   r
   expect_flow_mapping_keyM  s"    zEmitter.expect_flow_mapping_keyc             C   s*   | j dd | jj| j | jdd d S )N:FT)r   )r\   r    r>   r   rt   )r   r	   r	   r
   r   b  s    z(Emitter.expect_flow_mapping_simple_valuec             C   sD   | j s| j| jkr| j  | jdd | jj| j | jdd d S )Nr   T)r   )	r1   r-   r4   r]   r\   r    r>   r   rt   )r   r	   r	   r
   r   g  s
    z!Emitter.expect_flow_mapping_valuec             C   s(   | j o| j }| jd|d | j| _d S )NF)rP   rQ   )r*   r/   rR    expect_first_block_sequence_itemr"   )r   rQ   r	   r	   r
   r   p  s    zEmitter.expect_block_sequencec             C   s   | j ddS )NT)rX   )expect_block_sequence_item)r   r	   r	   r
   r   u  s    z(Emitter.expect_first_block_sequence_itemc             C   sb   | r,t | jtr,| jj | _| jj | _n2| j  | j	dddd | jj
| j | jdd d S )N-T)r/   )r   )rC   r$   r   r%   r@   r&   r    r"   r]   r\   r>   r   rt   )r   rX   r	   r	   r
   r   x  s    z"Emitter.expect_block_sequence_itemc             C   s   | j dd | j| _d S )NF)rP   )rR   expect_first_block_mapping_keyr"   )r   r	   r	   r
   r     s    zEmitter.expect_block_mappingc             C   s   | j ddS )NT)rX   )expect_block_mapping_key)r   r	   r	   r
   r     s    z&Emitter.expect_first_block_mapping_keyc             C   s   | r,t | jtr,| jj | _| jj | _nX| j  | j	 rZ| jj
| j | jddd n*| jdddd | jj
| j | jdd d S )NT)r   r   r   )r/   )r   )rC   r$   r   r%   r@   r&   r    r"   r]   r   r>   !expect_block_mapping_simple_valuert   r\   expect_block_mapping_value)r   rX   r	   r	   r
   r     s    z Emitter.expect_block_mapping_keyc             C   s*   | j dd | jj| j | jdd d S )Nr   FT)r   )r\   r    r>   r   rt   )r   r	   r	   r
   r     s    z)Emitter.expect_block_mapping_simple_valuec             C   s6   | j   | jdddd | jj| j | jdd d S )Nr   T)r/   )r   )r]   r\   r    r>   r   rt   )r   r	   r	   r
   r     s    z"Emitter.expect_block_mapping_valuec             C   s"   t | jto | jo t | jd tS )Nr   )rC   r$   rF   r#   r   )r   r	   r	   r
   r}     s    zEmitter.check_empty_sequencec             C   s"   t | jto | jo t | jd tS )Nr   )rC   r$   rG   r#   r   )r   r	   r	   r
   r     s    zEmitter.check_empty_mappingc             C   sR   t | jt s| j rdS | jd }t |toP|jd koP|jd koP|joP|jdkS )NFr    )	rC   r$   rD   r#   rx   r   tagrp   value)r   r$   r	   r	   r
   rh     s
    
zEmitter.check_empty_documentc             C   s
  d}t | jtrD| jjd k	rD| jd kr6| j| jj| _|t| j7 }t | jttfr| jj	d k	r| j
d krz| j| jj	| _
|t| j
7 }t | jtr| jd kr| j| jj| _|t| jj7 }|dk ot | jtpt | jtr| jj r| jj p| j p| j S )Nr      )rC   r$   	NodeEventr   r7   prepare_anchorrM   rx   rI   r   r8   prepare_tagr9   analyze_scalarr   r   rv   r   r   r}   r   )r   lengthr	   r	   r
   r     s$    


zEmitter.check_simple_keyc             C   sR   | j jd krd | _d S | jd kr0| j| j j| _| jrH| j|| j d d | _d S )NT)r$   r   r7   r   r\   )r   	indicatorr	   r	   r
   ry     s    
zEmitter.process_anchorc             C   s   | j j}t| j tr| jd kr(| j | _| j s8|d krn| jdkrN| j jd sd| jdkrn| j jd rnd | _d S | j jd r|d krd}d | _n"| j s|d kr| j jrd | _d S |d krt	d| jd kr| j
|| _| jr| j| jd d | _d S )Nr   r   r   r   ztag is not specifiedT)r$   r   rC   rx   r:   choose_scalar_styler1   rp   r8   r   r   r\   )r   r   r	   r	   r
   rz     s,    


zEmitter.process_tagc             C   s   | j d kr| j| jj| _ | jjdks,| jr0dS | jj r| jjd r| joZ| j jpZ| j j	 r| j
rl| j js|| j
 r| j jrdS | jjr| jjdkr| j
 r| j r| j jr| jjS | jj s| jjdkr| j jr| jo| j j	 rdS dS )N"r   r   z|>')r9   r   r$   r   r:   r1   rp   r+   r   r   r'   r   r   r   r   )r   r	   r	   r
   r     s&    
zEmitter.choose_scalar_stylec             C   s   | j d kr| j| jj| _ | jd kr.| j | _| j }| jdkrR| j| j j| n`| jdkrn| j	| j j| nD| jdkr| j
| j j n*| jdkr| j| j j n| j| j j| d | _ d | _d S )Nr   r   >|)r9   r   r$   r   r:   r   r+   write_double_quotedr   write_single_quotedwrite_foldedwrite_literalwrite_plain)r   splitr	   r	   r
   r     s     






zEmitter.process_scalarc             C   s,   |\}}|dkr t d||f d||f S )Nr   zunsupported YAML version: %d.%dz%d.%d)r   )r   rZ   majorminorr	   r	   r
   r^     s    zEmitter.prepare_versionc             C   s   |st d|d dks$|d dkr0t d| xt|dd D ]d}d|  koTdkn  pd|  kold	kn  pd
|  kodkn  p|dks>t d||f q>W |S )Nztag handle must not be emptyr   r   r   z*tag handle must start and end with '!': %r09AZazz-_z*invalid character %r in the tag handle: %rrH   rH   )r   )r   rl   chr	   r	   r
   rd   !  s    HzEmitter.prepare_tag_handlec             C   s  |st dg }d }}|d dkr(d}x|t|k r|| }d|  koPdkn  sd|  kohdkn  sd	|  kod
kn  s|dkr|d7 }q*||k r|j|||  |d  }}|jd}x|D ]}|jdt|  qW q*W ||k r|j|||  dj|S )Nztag prefix must not be emptyr   r   r   r   r   r   r   r   r   z-;/?!:@&=+$,_.~*'()[]zutf-8z%%%02Xr   )r   rM   r>   encodeordjoin)r   rm   chunksstartendr   datar	   r	   r
   re   -  s(    H



zEmitter.prepare_tag_prefixc             C   s  |st d|dkr|S d }|}t| jj }xH|D ]@}|j|r4|dksZt|t|k r4| j| }|t|d  }q4W g }d }}x|t|k r^|| }	d|	  kodkn  pd|	  kodkn  pd|	  kod	kn  p|	d
kp|	dko|dkr|d7 }q||k r$|j|||  |d  }}|	jd}
x |
D ]}	|jdt|	  q@W qW ||k r||j|||  dj	|}|rd||f S d| S d S )Nztag must not be emptyr   r   r   r   r   r   r   r   z-;/?:@&=+$,_.~*'()[]r   zutf-8z%%%02Xr   z%s%sz!<%s>)
r   rb   r6   rc   
startswithrM   r>   r   r   r   )r   r   rl   suffixprefixesrm   r   r   r   r   r   Zsuffix_textr	   r	   r
   r   D  s@    


H





zEmitter.prepare_tagc             C   s~   |st dxl|D ]d}d|  ko(dkn  pdd|  ko@dkn  pdd|  koXdkn  pd|dkst d	||f qW |S )
Nzanchor must not be emptyr   r   r   r   r   r   z-_z&invalid character %r in the anchor: %r)r   )r   r   r   r	   r	   r
   r   h  s    
HzEmitter.prepare_anchorc          
   C   s  |st |ddddddddS d}d}d}d}d}d}d}d}	d}
d}|jdsX|jdr`d}d}d}t|dkpz|d dk}d}d}d}x|t|k rv|| }|dkr|d	krd}d}|d
krd}|rd}|dkr|rd}d}n<|dkrd}|dkrd}|rd}|dkr |r d}d}|dkr.d}|dkpPd|  koLdkn  s|dksd|  kordkn  sd|  kodkn  r|dkrd}| jsd}nd}|dkr|dkrd}|t|d krd}|rd}
d}d}nJ|dkr:|dkrd}|t|d kr&d}	|r0d}d}d}nd}d}|d7 }|dk}|d t|kpr||d  dk}qW d}d}d}d}d}|s|s|s|	rd }}|rd}|
rd } }}|s|rd } } }}|rd }}|rd}|rd}t |d||||||dS )NTF)r   r   r   r   r   r   r   r   z---z...r   u     	
  r   z#,[]{}&*!|>'"%@`z?:r   z,?[]{}r   #u	   
  r    ~       u   ퟿u   u   �u   ﻿)r   r   rM   r2   )r   r   Zblock_indicatorsZflow_indicatorsZline_breaksZspecial_charactersleading_spaceZleading_breakZtrailing_spaceZtrailing_breakZbreak_spaceZspace_breakZpreceeded_by_whitespaceZfollowed_by_whitespaceZprevious_spaceZprevious_breakindexr   Zunicode_charactersr   r   r   r   r   r	   r	   r
   r   r  s    

&&&



zEmitter.analyze_scalarc             C   s   t | jdr| jj  d S )Nflush)rT   r   r   )r   r	   r	   r
   rq     s    zEmitter.flush_streamc             C   s*   | j r&| j jdr&| jjdj| j  d S )Nzutf-16u   ﻿)r   r   r   writer   )r   r	   r	   r
   rU     s    zEmitter.write_stream_startc             C   s   | j   d S )N)rq   )r   r	   r	   r
   rj     s    zEmitter.write_stream_endc             C   sf   | j s| r|}nd| }|| _ | jo(|| _|  jt|7  _d| _| jrV|j| j}| jj| d S )Nr   F)	r.   r/   r-   rM   r0   r   r   r   r   )r   r   Zneed_whitespacer.   r/   r   r	   r	   r
   r\     s    zEmitter.write_indicatorc             C   s|   | j pd}| j s.| j|ks.| j|kr6| j r6| j  | j|k rxd| _d|| j  }|| _| jrl|j| j}| jj| d S )Nr   Tr   )	r&   r/   r-   r.   write_line_breakr   r   r   r   )r   r&   r   r	   r	   r
   r]   -  s    

zEmitter.write_indentc             C   sP   |d kr| j }d| _d| _|  jd7  _d| _| jr@|j| j}| jj| d S )NTr   r   )	r5   r.   r/   r,   r-   r   r   r   r   )r   r   r	   r	   r
   r   :  s    zEmitter.write_line_breakc             C   s2   d| }| j r|j| j }| jj| | j  d S )Nz	%%YAML %s)r   r   r   r   r   )r   rk   r   r	   r	   r
   r_   E  s
    zEmitter.write_version_directivec             C   s6   d||f }| j r|j| j }| jj| | j  d S )Nz%%TAG %s %s)r   r   r   r   r   )r   rn   ro   r   r	   r	   r
   rf   L  s
    zEmitter.write_tag_directiveTc       
      C   s,  | j dd d}d}d }}x|t|krd }|t|k rF|| }|r|d ksZ|dkr|d |kr| j| jkr|r|dkr|t|kr| j  n<||| }|  jt|7  _| jr|j| j}| jj| |}n|rH|d ks|dkr|| dkr| j	  x4||| D ]$}	|	dkr*| j	  n
| j	|	 qW | j  |}nj|d ksf|d	ksf|dkr||k r||| }|  jt|7  _| jr|j| j}| jj| |}|dkrd
}|  jd7  _| jr|j| j}| jj| |d }|d k	r|dk}|dk}|d7 }q W | j dd d S )Nr   TFr   r   r   u	   
  r   u
    
  z''r   )
r\   rM   r-   r4   r]   r   r   r   r   r   )
r   textr   spacesbreaksr   r   r   r   brr	   r	   r
   r   U  sb    





zEmitter.write_single_quotedr   r   btnvfrer   \N_LP) 	r   r   r   r   r   r   u    u    c             C   s  | j dd d }}xt|t|krd }|t|k r>|| }|d ks|dksd|  ko`dkn  p| jod|  ko~dkn  pd	|  kod
kn   r||k r||| }|  jt|7  _| jr|j| j}| jj| |}|d k	r|| jkrd| j|  }n<|dkr&dt	| }n$|dkr>dt	| }ndt	| }|  jt|7  _| jrp|j| j}| jj| |d }d|  k ot|d k n  r|dks||kr| j||  | j
kr|r||| d }||k r|}|  jt|7  _| jr|j| j}| jj| | j  d| _d| _|| dkrd}|  jt|7  _| jrt|j| j}| jj| |d7 }qW | j dd d S )Nr   Tr   u   "\  ﻿r   r   r   u   ퟿u   u   �r      ÿz\x%02Xu   ￿z\u%04Xz\U%08Xr   F)r\   rM   r2   r-   r   r   r   r   ESCAPE_REPLACEMENTSr   r4   r]   r.   r/   )r   r   r   r   r   r   r   r	   r	   r
   r     sf    


8
zEmitter.write_double_quotedc             C   s\   d}|rX|d dkr"|t | j7 }|d	 dkr8|d7 }n t|dksP|d
 dkrX|d7 }|S )Nr   r   u
    
  r   u	   
  r   r   +rH   )strr3   rM   )r   r   hintsr	   r	   r
   determine_block_hints  s    
zEmitter.determine_block_hintsc             C   s  | j |}| jd| d |dd  dkr0d| _| j  d}d}d}d }}x|t|krd }|t|k rv|| }|r
|d ks|dkr| r|d k	r|dkr|| d	kr| j  |dk}x0||| D ] }	|	d	kr| j  q| j|	 qW |d k	r| j  |}n|r|dkr|d |kr@| j| jkr@| j  n>||| }
|  jt|
7  _| jrr|
j	| j}
| j
j|
 |}nh|d ks|d
kr||| }
|  jt|
7  _| jr|
j	| j}
| j
j|
 |d kr| j  |}|d k	r|dk}|dk}|d7 }qPW d S )Nr   Tr   r   Fr   u	   
  r   r   u
    
  rH   )r   r\   r0   r   rM   r]   r-   r4   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r	   r	   r
   r     sb    






zEmitter.write_foldedc       	      C   s<  | j |}| jd| d |dd  dkr0d| _| j  d}d }}x|t|kr6d }|t|k rl|| }|r|d ks|dkrx0||| D ] }|dkr| j  q| j| qW |d k	r| j  |}nR|d ks|dkr||| }| jr|j| j}| jj	| |d kr| j  |}|d k	r,|dk}|d7 }qFW d S )	Nr   Tr   r   r   u	   
  r   rH   )
r   r\   r0   r   rM   r]   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r	   r	   r
   r     s>    



zEmitter.write_literalc       
      C   s  | j rd| _|sd S | jsNd}|  jt|7  _| jrB|j| j}| jj| d| _d| _	d}d}d }}x|t|kr
d }|t|k r|| }|r|dkr|d |kr| j| j
kr|r| j  d| _d| _	n>||| }|  jt|7  _| jr|j| j}| jj| |}n|r|dkr|| dkr@| j  x4||| D ]$}	|	dkrf| j  n
| j|	 qNW | j  d| _d| _	|}nV|d ks|dkr||| }|  jt|7  _| jr|j| j}| jj| |}|d k	r |dk}|dk}|d7 }qnW d S )	NTr   Fr   r   u	   
  r   u
    
  )r(   r0   r.   r-   rM   r   r   r   r   r/   r4   r]   r   )
r   r   r   r   r   r   r   r   r   r   r	   r	   r
   r   7  sl    




zEmitter.write_plain)NNNNN)FF)F)FFFF)F)F)FF)N)T)T)T)@r   r   r   r`   r   r=   rA   r?   rE   rR   r!   rW   rV   rY   rr   ri   rt   rw   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r}   r   rh   r   ry   rz   r   r   r^   rd   re   r   r   r   rq   rU   rj   r\   r]   r   r_   rf   r   r   r   r   r   r   r   r	   r	   r	   r
   r      s    
C	


$ 
	


$
 "

	
7
66#N)__all__errorr   r#   r   r   r   r	   r	   r	   r
   <module>	   s
   