
    	^c
                     ^    d dl Z d dlZe j        Z G d de          Zd Zd Zd Zd Z	d Z
dS )	    Nc                       e Zd ZdZdS )mpatchErrorz+error raised when a delta cannot be decodedN)__name__
__module____qualname____doc__     7/usr/lib/python3/dist-packages/mercurial/pure/mpatch.pyr   r      s        5555r
   r   c                 "   |r|                                 }|d         |k    rH|                    |d         |z
  |d         |z   f           |                     ||d         f           d S |                     |           ||d         z  }|d S d S )Nr      )popappend)dstsrclfs       r   _pullr      s    
 GGIIQ4!88JJ!q!A$(+,,,JJ1Q4y!!!F

1	QqT	      r
   c                     |                      |           |                     |          }|                      |           |                     |           dS )zXmove count bytes from src to dest

    The file pointer is left at the end of dest.
    N)seekreadwrite)mdestr   countbufs        r   _mover   *   sD    
 FF3KKK
&&--CFF4LLLGGCLLLLLr
   c                 l    |}t          |          D ]\  }}t          | |||           ||z  }||z
  |fS )N)reversedr   )r   r   liststartr   ps         r   _collectr#   5   sN    E  1aaq%Kr
   c                    |s| S d |D             }t          |          }t          |           |z   }||z   |z   }d|}}|s| S t                      }|                    |            t          |           |fg}	||z   }
|                    |
           |D ]}|                    |           |D ]}t          |	          dk    r||}}t          |||	          g}	g }|
|z   }d}|
|k     r|                    |
           	 t          j        d|                    d                    \  }}}n"# t          j	        $ r t          d          w xY wt          ||	||z
             t          g |	||z
             |                    ||
dz   f           |
|dz   z  }
|}|
|k     |	                    t          |                     t          |||	          }|                    |d                    |                    |d                   S )Nc                 ,    g | ]}t          |          S r	   )len).0xs     r   
<listcomp>zpatches.<locals>.<listcomp>A   s    """SVV"""r
   r         >lll      patch cannot be decodedr   )sumr&   stringior   r   r#   structunpackr   errorr   r   r   extendr   )abinsplensplbltlb1b2r   fragsposr"   plennewendlastp1p2r   ts                       r   patchesrE   =   s8    ""T"""E	UB	Q"B	b2BB 

A GGAJJJ!ffb\NE r'CFF3KKK  	



 $ $u::BaU++,EDjCiiFF3KKK>"M'166"::>>	B< > > >!"<===>#ub4i((("eR"W%%%JJ38}%%%1r6MCD Cii 	Xc]]####BAFF1Q4LLL66!A$<<s   >,D++E
c                    d\  }}}t          |          }d}||k    rL|||dz            }t          j        d|          \  }}	}
||	k    rn||
z   }|dz   }|||z
  z  }|	}||
z  }||k    L||k    rt          d          || |z
  z  }|S )N)r   r   r   r,   r+   r-   )r&   r0   r1   r   )origdeltaoutlenrA   binbinenddatadecoder!   r@   lengths              r   patchedsizerO   r   s    FD#ZZFD
&..sS2X~&#]7F;;sF3;;VmRx%$,& &.. f}}4555
dTkFMr
   )ior0   BytesIOr/   	Exceptionr   r   r   r#   rE   rO   r	   r
   r   <module>rS      s    
			  :6 6 6 6 6) 6 6 6         2 2 2j    r
   