\x89\x50\x4E\x47\x0D\x0A\x1A\x0A PNG  \x89\x50\x4E\x47\x0D\x0A\x1A\x0A  13\c@@s-ddlmZddlmZmZmZmZddlmZdZ de fdYZ de fd YZ d e fd YZ d Zd e fdYZde fdYZdefdYZdefdYZdddZde fdYZdefdYZdS(i(tabsolute_importi(tencodingterrortpycompattutil(t stringutilcC@stjt|jjdS(Nt_(Rtsysbytesttypet__name__tlstrip(to((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt _typenamestabstractsmartsetcB@seZdZeZdZdZdZdZdZ dZ dZ dZ dZ dZd Zd Zd Zed Zd ZdZdZdedZdZdZRS(cC@s tdS(s!True if the smartset is not emptyN(tNotImplementedError(tself((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt __nonzero__scC@s tdS(sprovide fast membership testingN(R(Rtrev((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt __contains__scC@s tdS(s:iterate the set in the order it is supposed to be iteratedN(R(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt__iter__#scC@s tdS(s/True if the set will iterate in ascending orderN(R(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt isascending/scC@s tdS(s0True if the set will iterate in descending orderN(R(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt isdescending3scC@s tdS(s3True if the set will iterate in topographical orderN(R(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pytistopo7sc@sX|jdkrt|n$x!|jD]Pq+Wtdfd|_S(s%return the minimum element in the setsarg is an empty sequencec@sS(N(((tv(s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pytDsN(tfastasctNonetmint ValueError(R((Rs8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR;s c@sS|jdkrt|Sx!|jD]Pq&Wtdfd|_S(s%return the maximum element in the setsarg is an empty sequencec@sS(N(((R(s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRPsN(tfastdescRtmaxR(R((Rs8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRGs  cC@s tdS(sireturn the first element in the set (user iteration perspective) Return None if the set is emptyN(R(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pytfirstSscC@s tdS(shreturn the last element in the set (user iteration perspective) Return None if the set is emptyN(R(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pytlastYscC@s tdS(skreturn the length of the smartsets This can be expensive on smartset that could be lazy otherwise.N(R(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt__len___scC@s tdS(s$reverse the expected iteration orderN(R(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pytreverseescC@s tdS(s:get the set to iterate in an ascending or descending orderN(R(RR"((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pytsortiscC@s/t|tr|S|j|jd|dtS(s{Returns a new object with the intersection of the two collections. This is part of the mandatory API for smartset.tcondreprtcache(t isinstancet fullreposettfilterRtFalse(Rtother((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt__and__mscC@s t||S(stReturns a new object with the union of the two collections. This is part of the mandatory API for smartset.(taddset(RR*((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt__add__usc@s1|j|jfddd|fdtS(s{Returns a new object with the substraction of the two collections. This is part of the mandatory API for smartset.c@s | S(N((tr(tc(s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRsR$sR%(RR(R)(RR*((R/s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt__sub__{s !cC@s:|r*tj|dr*tj|}nt|||S(s1Returns this smartset filtered by condition as a new smartset. `condition` is a callable which takes a revision number and returns a boolean. Optional `condrepr` provides a printable representation of the given `condition`. This is part of the mandatory API for smartset.t__code__(Rt safehasattrt cachefunct filteredset(Rt conditionR$R%((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR(s cC@s:|dks|dkr*tjdn|j||S(sAReturn new smartset that contains selected elements from this setisnegative index not allowed(RtProgrammingErrort_slice(Rtstarttstop((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pytslicescC@sg}t|}x6tj|D]%}t|d}|dkr"Pq"q"WxGtj||D]2}t|d}|dkrPn|j|q_Wt|dd|||fS(Ntdatareprsslice=%d:%d %r(titerRtxrangetnextRtappendtbaseset(RR8R9tystittxty((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR7s   N(R t __module__Rt__bool__RRRRRRRRRRRR R!R"R)R#R+R-R0tTrueR(R:R7(((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR s,               R@cB@seZdZddedZejdZejdZ ejdZ dZ dZ dZ ejdZd ZeZed Zd Zd Zd ZdZdZdZdZdZdZdZdZejdZRS(sBasic data structure that represents a revset and contains the basic operation that it should be able to perform. Every method in this class should be implemented by any smartset class. This class could be constructed by an (unordered) set, or an (ordered) list-like object. If a set is provided, it'll be sorted lazily. >>> x = [4, 0, 7, 6] >>> y = [5, 6, 7, 3] Construct by a set: >>> xs = baseset(set(x)) >>> ys = baseset(set(y)) >>> [list(i) for i in [xs + ys, xs & ys, xs - ys]] [[0, 4, 6, 7, 3, 5], [6, 7], [0, 4]] >>> [type(i).__name__ for i in [xs + ys, xs & ys, xs - ys]] ['addset', 'baseset', 'baseset'] Construct by a list-like: >>> xs = baseset(x) >>> ys = baseset(i for i in y) >>> [list(i) for i in [xs + ys, xs & ys, xs - ys]] [[4, 0, 7, 6, 5, 3], [7, 6], [4, 0]] >>> [type(i).__name__ for i in [xs + ys, xs & ys, xs - ys]] ['addset', 'filteredset', 'filteredset'] Populate "_set" fields in the lists so set optimization may be used: >>> [1 in xs, 3 in ys] [False, True] Without sort(), results won't be changed: >>> [list(i) for i in [xs + ys, xs & ys, xs - ys]] [[4, 0, 7, 6, 5, 3], [7, 6], [4, 0]] >>> [type(i).__name__ for i in [xs + ys, xs & ys, xs - ys]] ['addset', 'filteredset', 'filteredset'] With sort(), set optimization could be used: >>> xs.sort(reverse=True) >>> [list(i) for i in [xs + ys, xs & ys, xs - ys]] [[7, 6, 4, 0, 5, 3], [7, 6], [4, 0]] >>> [type(i).__name__ for i in [xs + ys, xs & ys, xs - ys]] ['addset', 'baseset', 'baseset'] >>> ys.sort() >>> [list(i) for i in [xs + ys, xs & ys, xs - ys]] [[7, 6, 4, 0, 3, 5], [7, 6], [4, 0]] >>> [type(i).__name__ for i in [xs + ys, xs & ys, xs - ys]] ['addset', 'baseset', 'baseset'] istopo is preserved across set operations >>> xs = baseset(set(x), istopo=True) >>> rs = xs & ys >>> type(rs).__name__ 'baseset' >>> rs._istopo True cC@sjd|_||_t|tr6||_t|_n't|tsTt|}n||_||_ dS(s datarepr: a tuple of (format, obj, ...), a function or an object that provides a printable representation of the given data. N( Rt _ascendingt_istopoR&tsett_setRGtlistt_listt _datarepr(RtdataR;R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt__init__s     cC@s t|jS(N(RJRM(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRKscC@s|j}|j|S(N(RMR#(Rtasclist((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt_asclists  cC@s"d|jkstt|jS(NRK(t__dict__tAssertionErrorRLRK(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRMscC@sC|jdkrt|jS|jr2t|jSt|jSdS(N(RHRR<RMRRtreversed(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs    cC@s t|jS(N(R<RR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR scC@s t|jS(N(RURR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@s |jjS(N(RKR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@stt|S(N(tbooltlen(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@st| |_t|_dS(N(RVRHR)RI(RR"((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR#scC@s9|jdkr|jjn |j |_t|_dS(N(RHRRMR"R)RI(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR"s cC@s-d|jkrt|jSt|jSdS(NRM(RSRWRMRK(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR!%s cC@s,t|dkrtS|jdk o+|jS(syReturns True if the collection is ascending order, False if not. This is part of the mandatory API for smartset.iN(RWRGRHR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR+scC@s-t|dkrtS|jdk o,|j S(szReturns True if the collection is descending order, False if not. This is part of the mandatory API for smartset.iN(RWRGRHR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR3scC@st|dkrtS|jS(slIs the collection is in topographical order or not. This is part of the mandatory API for smartset.i(RWRGRI(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR;scC@sF|rB|jdkr |jdS|jr4|jdS|jdSndS(Nii(RHRRMRR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRCs   cC@sF|rB|jdkr |jdS|jr4|jdS|jdSndS(Nii(RHRRMRR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR Ms   cC@st|tkr{d|jkr{d|jkr{|jdk r{tdt|j||jd|j}|j|_nttt|||}|S(NRKROR( RR@RSRHRtgetattrRKRItsuper(RR*topts((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt _fastsetopWs$! cC@s|j|dS(NR+(R\(RR*((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR+bscC@s|j|dS(NR0(R\(RR*((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR0escC@s|jdkr,t|j||!d|jS|j}|jsttt||dtt||d}}nt|||!d|j}|j|_|S(NRi(RHRR@RMRIRRRRW(RR8R9ROR[((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR7hs  6 cC@sidd6dt6dt6|j}tj|j}|sp|j}|jdk r^|j}nt j |}ndt |||fS(Ntt-t+s <%s%s %s>( RR)RGRHRt buildreprRNRMRRRtbytereprR (RtdR[tl((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt__repr__ts"  (N( R REt__doc__RR)RPRt propertycacheRKRRRMRRRRRRFR#R"R!RRRRR R\R+R0R7Rt strmethodRd(((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR@s0:             R4cB@seZdZdddZdZdZdZedZ edZ dZ e Z d Z ed Zd Zd Zd ZdZdZdZejdZRS(sDuck type for baseset class which iterates lazily over the revisions in the subset and contains a function which tests for membership in the revset cC@stS(N(RG(RC((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@s||_||_||_dS(s! condition: a function that decide whether a revision in the subset belongs to the revset or not. condrepr: a tuple of (format, obj, ...), a function or an object that provides a printable representation of the given condition. N(t_subsett _conditiont _condrepr(RtsubsetR5R$((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRPs  cC@s||jko|j|S(N(RhRi(RRC((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@s|j|jS(N(t _iterfilterRh(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscc@s2|j}x"|D]}||r|VqqWdS(N(Ri(RRBtcondRC((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRls   c@s,jjdkrdSfdS(Nc@sjS(N(Rl((RBR(s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs(RhRR(R((RBRs8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs  c@s,jjdkrdSfdS(Nc@sjS(N(Rl((RBR(s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs(RhRR(R((RBRs8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs  cC@sd}|jr|jnd|jr3|jnd|j|jg}x$|D]}|dk rO|}PqOqOW|dk r|}n|}x|D]}tSWtS(N(RRRRRRGR)(Rtfastt candidatest candidateRBR.((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs      cC@s td|D}t|S(Ncs@s|] }|VqdS(N((t.0R.((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pys s(R@RW(RRc((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR!scC@s|jjd|dS(NR"(RhR#(RR"((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR#scC@s|jjdS(N(RhR"(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR"scC@s |jjS(N(RhR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@s |jjS(N(RhR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@s |jjS(N(RhR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@sx|D]}|SWdS(N(R(RRC((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs cC@szd}|jr|j}n|jr6|j}n|dk r[x|D]}|SWdSd}x|D]}qhW|SdS(N(RRRRR(RRBRC((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR s      cC@sZtj|jg}tj|j}|r=|j|ndt|dj|fS(Ns<%s %s>s, ( RRaRhRR`RjR?R tjoin(RtxsR[((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRds N(R REReRRPRRRltpropertyRRRRFR!R)R#R"RRRRR RRgRd(((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR4s$            c c@st}|rt}nd}d}yx~tr|dkrHt|}n|dkrct|}n|||}|V||krd}n||kr'd}q'q'WWn[tk r|}|dk r|V|}n|dk r|Vnx|D] }|VqWnXdS(sproduce an ordered iteration from two iterators with the same order The ascending is used to indicated the iteration direction. N(RRRRGR>t StopIteration( t ascendingtiter1titer2tchoicetval1tval2tnRBtval((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt _iterordereds4            R,cB@seZdZddZdZdZeZej dZ dZ dZ e dZe dZd Zed Zd Zd Zd ZdZdZdZejdZRS(s Represent the addition of two sets Wrapper structure for lazily adding two structures without losing much performance on the __contains__ method If the ascending attribute is set, that means the two structures are ordered in either an ascending or descending way. Therefore, we can add them maintaining the order by iterating over both at the same time >>> xs = baseset([0, 3, 2]) >>> ys = baseset([5, 2, 4]) >>> rs = addset(xs, ys) >>> bool(rs), 0 in rs, 1 in rs, 5 in rs, rs.first(), rs.last() (True, True, False, True, 0, 4) >>> rs = addset(xs, baseset([])) >>> bool(rs), 0 in rs, 1 in rs, rs.first(), rs.last() (True, True, False, 0, 2) >>> rs = addset(baseset([]), baseset([])) >>> bool(rs), 0 in rs, rs.first(), rs.last() (False, False, None, None) iterate unsorted: >>> rs = addset(xs, ys) >>> # (use generator because pypy could call len()) >>> list(x for x in rs) # without _genlist [0, 3, 2, 5, 4] >>> assert not rs._genlist >>> len(rs) 5 >>> [x for x in rs] # with _genlist [0, 3, 2, 5, 4] >>> assert rs._genlist iterate ascending: >>> rs = addset(xs, ys, ascending=True) >>> # (use generator because pypy could call len()) >>> list(x for x in rs), list(x for x in rs.fastasc()) # without _asclist ([0, 2, 3, 4, 5], [0, 2, 3, 4, 5]) >>> assert not rs._asclist >>> len(rs) 5 >>> [x for x in rs], [x for x in rs.fastasc()] ([0, 2, 3, 4, 5], [0, 2, 3, 4, 5]) >>> assert rs._asclist iterate descending: >>> rs = addset(xs, ys, ascending=False) >>> # (use generator because pypy could call len()) >>> list(x for x in rs), list(x for x in rs.fastdesc()) # without _asclist ([5, 4, 3, 2, 0], [5, 4, 3, 2, 0]) >>> assert not rs._asclist >>> len(rs) 5 >>> [x for x in rs], [x for x in rs.fastdesc()] ([5, 4, 3, 2, 0], [5, 4, 3, 2, 0]) >>> assert rs._asclist iterate ascending without fastasc: >>> rs = addset(xs, generatorset(ys), ascending=True) >>> assert rs.fastasc is None >>> [x for x in rs] [0, 2, 3, 4, 5] iterate descending without fastdesc: >>> rs = addset(generatorset(xs), ys, ascending=False) >>> assert rs.fastdesc is None >>> [x for x in rs] [5, 4, 3, 2, 0] cC@s:||_||_d|_||_d|_d|_dS(N(t_r1t_r2Rt_iterRHt_genlistRR(Rtrevs1trevs2Rv((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRPas      cC@s t|jS(N(RWRM(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR!iscC@st|jpt|jS(N(RVRR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRlscC@s(|js!tt||_n|jS(N(RR@R<(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRMqs c@s$jdkr;jr%tjSfd}|SjjrWd}nd}t|}|dk r|Stj|}|dkrttjdj }n |}tj|}|dkrttjdj }n |}t j||S(sIterate over both collections without repeating elements If the ascending attribute is not set, iterate over the first one and then over the second one checking for membership on the first one so we dont yield any duplicates. If the ascending attribute is set, iterate over both collections at the same time, yielding only one value at a time in the given order. c3@sQxjD] }|Vq Wjj}x%jD]}||s/|Vq/q/WdS(N(RRR(R.tinr1(R(s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pytarbitraryordergens    RRR"N( RHRRR<t_trysetasclistRXRtsortedRR~(RRtattrRBRwRx((Rs8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRws*        "  " cC@s7|jdk r3|jdkr3t|j|_ndS(s9populate the _asclist attribute if possible and necessaryN(RRRRR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRsc@sa|j|jdk r#|jjS|jj|jjdfkrQdSfdS(Nc@sttS(N(R~RG((RwRx(s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs(RRRRRRRR(R((RwRxs8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs    c@sa|j|jdk r#|jjS|jj|jjdfkrQdSfdS(Nc@sttS(N(R~R)((RwRx(s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs(RRRRt __reversed__RRR(R((RwRxs8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs    cC@s||jkp||jkS(N(RR(RRC((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@s| |_dS(sSort the added set For this we use the cached list with all the generated values and if we know they are ascending or descending we can sort them in a smart way. N(RH(RR"((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR#scC@s|jdk o|jS(N(RHR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@s|jdk o|j S(N(RHR(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@stS(N(R)(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRscC@s0|jdkr|jjn |j |_dS(N(RHRRMR"(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR"scC@sx|D]}|SWdS(N(R(RRC((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs cC@s$|j|j}|j|S(N(R"R(RR}((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR s   cC@sBidd6dt6dt6|j}dt|||j|jfS(NR]R^R_s <%s%s %r, %r>(RR)RGRHR RR(RRb((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRds"N(R REReRRPR!RRFRRfRMRRRtRRRR)R#RRRR"RR RRgRd(((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR,s&F    /          t generatorsetcB@seZdZddZddZdZeZdZdZ dZ dZ dZ e d Zd Zd Zd Zd ZdZdZejdZRS(sWrap a generator for lazy iteration Wrapper structure for generators that provides lazy membership and can be iterated more than once. When asked for membership it generates values until either it finds the requested one or has gone through all the elements in the generator >>> xs = generatorset([0, 1, 4], iterasc=True) >>> assert xs.last() == xs.last() >>> xs.last() # cached 4 cC@s@|dkr|}n|r$t}nt}tt|j|S(N(Rt_generatorsetasct_generatorsetdescRYRt__new__(tclstgentiterascttyp((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs    cC@s:||_d|_i|_g|_t|_t|_dS(sM gen: a generator producing the values for the generatorset. N( t_genRRRt_cacheRR)t _finishedRGRH(RRR((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRPs      cC@s)|jr tSx|jD]}tSWtS(N(RRGt _consumegenR)(RR.((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs  cC@sR||jkr|j|Sx$|jD]}||kr'tSq'Wt|j|Wt|S(N(RHRRRRR<(RRBRC((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR(s    c@sW|jrt|jS|j|jttfd}|S(Nc3@scd}xVtr^|kr-|Vn$yVWntk rPdSX|d7}q WdS(Nii(RGRu(ti(t_lent_nexttgenlisttnextgen(s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRBs   (RR<RRRWR>(RR((RRRRs8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyt _iterator5s      cc@s|j}|jj}x*|jD]}t||<|||VqW|jst|_|j}|j||_|j|_ |j |_ ndS(N( RRR?RRGRR#RRRRRR(RR%Rtitemtasc((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyROs           cC@s$x|jD]}q Wt|jS(N(RRWR(RRC((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR!^scC@s| |_dS(N(RH(RR"((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR#cscC@s|j |_dS(N(RH(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR"fscC@s|jS(N(RH(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRiscC@s|j S(N(RH(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRlscC@stS(N(R)(R((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRoscC@s[|jr|j}n |j}|dkrKx|jD]}q7W|jSt|dS(N(RHRRRRRR>(RRBRC((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRus     cC@s[|jr|j}n |j}|dkrKx|jD]}q7W|jSt|dS(N(RHRRRRR R>(RRBRC((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR s     cC@s/idt6dt6|j}dt||fS(NR^R_s<%s%s>(R)RGRHR (RRb((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRdsN(R REReRRRPRRFRRRRR!R)R#R"RRRRR RRgRd(((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs$           RcB@s eZdZejZdZRS(s@Special case of generatorset optimized for ascending generators.cC@sb||jkr|j|Sx4|jD]&}||kr=tS||kr'Pq'q'Wt|j|(R)RGRHR RR(RRb((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRd7s(R REReRPR)R#R"RRlRRRRRRFR!RRRR R7RRgRd(((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRs&              R'cB@s eZdZdZdZRS(sa set containing all revisions in the repo This class exists to host special optimization and magic to handle virtual revisions such as "null". cC@s/tt|jdt|t|jjdS(Ni(RYR'RPRWRGRR(RR((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyRPCscC@sBtj|ds(t||j}n|jd|j|S(sAs self contains the whole repo, all of the other set should also be in self. Therefore `self & other = other`. This boldly assumes the other contains valid revs only. RR"(RR2R@RR#R(RR*((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR+Gs(R REReRPR+(((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyR'<s N(t __future__RR]RRRRtutilsRR tobjectR R@R4R~R,RRRRRRR'(((s8/usr/lib64/python2.7/site-packages/mercurial/smartset.pyts" t $u