³ò ÷$•Jc@seddklZddkZddkZd„Zd„Zd„Zd„Zd„Ze d„Z dS( iÿÿÿÿ(t_NcCsCtg}|D]+}||jo||jo ||qq~ƒS(s-Return list of elements in d1 not in d2 or d3(tsorted(td1td2td3t_[1]td((s#/sys/lib/python/mercurial/copies.pyt _nonoverlap scCs,|idƒ}|djodSn|| S(Nt/iÿÿÿÿt(trfind(tfts((s#/sys/lib/python/mercurial/copies.pyt_dirnames cCsXtƒ}xH|D]@}t|ƒ}x+||jo|i|ƒt|ƒ}q%WqW|S(N(tsetR tadd(tfilesRR ((s#/sys/lib/python/mercurial/copies.pyt_dirss   c CsOh}tƒ}|iƒ}|dfg}xó|oë|iƒ\}}t|ƒ}||joq-n|i|ƒ|iƒ|jo3|iƒ|jo ||iƒf||iƒ %s %s s! checking for directory renames Rs dir %s -> %s s file %s -> %s N(tnodeRR*RtcopiesR5Rtmanifesttutilt lrucachefunctuitdebugRRtjoinRtitemsR&tupdateRt iteritemsR Rt startswith(R-R:R9RCt checkdirsR@RAR;RItu1tu2R tdiverge2RBtfltnoteRRtinvalidtdirmovetdsttsrctdsrctddsttiRtdf(( RFRHR9R:RGR-RDRERs#/sys/lib/python/mercurial/copies.pyRMds¨3      )     (    (( ti18nRROR'RR RR$R5tFalseRM(((s#/sys/lib/python/mercurial/copies.pyss      0