PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  lY`@sdZddlmZmZddlZdddddd d d d d ddddddddddddgZdZeedZ eee Z eeij Z eeijZeeijZeegZeeegZeeedZeeed:ZeeeZeedZeefZeeeZeij ZeijZeijZ eej!Z"edd Z#d!d"Z$e$Z$ee$Z%e$j&[$Gd#ddd$eZ'Gd%ddd$eZ(Gd&dde(Z)e)j*e%Gd'ddd$eZ+Gd(dde+Z,Gd)d d d$eZ-Gd*d d e-Z.e.j*e e.j*e e.j*e e.j*ee.j*ee.j*ee.j*ee.j*ee.j*ee.j*ee.j*ee.j*ee.j*eGd+d d e.Z/e/j*e#Gd,d d d$eZ0Gd-d d d$eZ1Gd.ddd$eZ2Gd/dde0e-e1Z3e3j*e4Gd0dde3Z5e5j*eGd1dde0e-e1Z6e6j*e"Gd2dde0Z7Gd3dde7e3Z8e8j*eGd4dde7e3Z9e9j*e Gd5dde7Z:e:j*eGd6dde6Z;e;j*e<Gd7dde0e-e1Z=e=j*e>e=j*e?e=j*ee=j*e@Gd8dde=ZAeAj*eBeAj*e Gd9dde=ZCeCj*eDeCj*e dS);zjAbstract Base Classes (ABCs) for collections, according to PEP 3119. Unit tests are in test_collections. )ABCMetaabstractmethodN Awaitable Coroutine AsyncIterable AsyncIteratorHashableIterableIterator GeneratorSized ContainerCallableSet MutableSetMappingMutableMapping MappingViewKeysView ItemsView ValuesViewSequenceMutableSequence ByteStringzcollections.abciccsdVS)Nrrr//opt/python35/lib/python3.5/_collections_abc.py7srcsdS)Nrrrrr_coro9sr c@s:eZdZfZeddZeddZdS)rcCsdS)Nrr)selfrrr__hash__FszHashable.__hash__cCsE|tkrAx2|jD]'}d|jkr|jdr<dSPqWtS)Nr"T)r__mro____dict__NotImplemented)clsCBrrr__subclasshook__Js  zHashable.__subclasshook__N)__name__ __module__ __qualname__ __slots__rr" classmethodr)rrrrrBs  metaclassc@s:eZdZfZeddZeddZdS)rccs dVdS)Nr)r!rrr __await__YszAwaitable.__await__cCsE|tkrAx2|jD]'}d|jkr|jdr<dSPqWtS)Nr0T)rr#r$r%)r&r'r(rrrr)]s  zAwaitable.__subclasshook__N)r*r+r,r-rr0r.r)rrrrrUs c@s^eZdZfZeddZeddddZddZedd Z dS) rcCs tdS)zcSend a value into the coroutine. Return next yielded value or raise StopIteration. N) StopIteration)r!valuerrrsendlszCoroutine.sendNcCsL|dkr'|dkr||}|dk rB|j|}|dS)zgRaise an exception in the coroutine. Return next yielded value or raise StopIteration. N)with_traceback)r!typvaltbrrrthrowss    zCoroutine.throwc Cs<y|jtWnttfk r+Yn XtddS)z.Raise GeneratorExit inside coroutine. zcoroutine ignored GeneratorExitN)r8 GeneratorExitr1 RuntimeError)r!rrrcloses zCoroutine.closecCsS|tkrO|j}x3dD]+}x"|D]}||jkr)Pq)WtSqWdStS)Nr0r3r8r;T)r0r3r8r;)rr#r$r%)r&r'mromethodbaserrrr)s    zCoroutine.__subclasshook__) r*r+r,r-rr3r8r;r.r)rrrrrhs  c@s:eZdZfZeddZeddZdS)rcCstS)N)r)r!rrr __aiter__szAsyncIterable.__aiter__cCs0|tkr,tdd|jDr,dStS)Ncss|]}d|jkVqdS)r?N)r$).0r(rrr sz1AsyncIterable.__subclasshook__..T)ranyr#r%)r&r'rrrr)s zAsyncIterable.__subclasshook__N)r*r+r,r-rr?r.r)rrrrrs c@sFeZdZfZeddZddZeddZdS)rcs tdS)z@Return the next item or raise StopAsyncIteration when exhausted.N)StopAsyncIteration)r!rrr __anext__szAsyncIterator.__anext__cCs|S)Nr)r!rrrr?szAsyncIterator.__aiter__cCsL|tkrHtdd|jDrHtdd|jDrHdStS)Ncss|]}d|jkVqdS)rDN)r$)r@r(rrrrAsz1AsyncIterator.__subclasshook__..css|]}d|jkVqdS)r?N)r$)r@r(rrrrAsT)rrBr#r%)r&r'rrrr)s  zAsyncIterator.__subclasshook__N) r*r+r,r-rrDr?r.r)rrrrrs  c@s:eZdZfZeddZeddZdS)r ccsdS)Nr)r!rrr__iter__szIterable.__iter__cCs0|tkr,tdd|jDr,dStS)Ncss|]}d|jkVqdS)rEN)r$)r@r(rrrrAsz,Iterable.__subclasshook__..T)r rBr#r%)r&r'rrrr)s zIterable.__subclasshook__N)r*r+r,r-rrEr.r)rrrrr s c@sFeZdZfZeddZddZeddZdS)r cCs tdS)zKReturn the next item from the iterator. When exhausted, raise StopIterationN)r1)r!rrr__next__szIterator.__next__cCs|S)Nr)r!rrrrEszIterator.__iter__cCsL|tkrHtdd|jDrHtdd|jDrHdStS)Ncss|]}d|jkVqdS)rFN)r$)r@r(rrrrAsz,Iterator.__subclasshook__..css|]}d|jkVqdS)rEN)r$)r@r(rrrrAsT)r rBr#r%)r&r'rrrr)s  zIterator.__subclasshook__N) r*r+r,r-rrFrEr.r)rrrrr s  c@sjeZdZfZddZeddZeddddZdd Ze d d Z dS) r cCs |jdS)z^Return the next item from the generator. When exhausted, raise StopIteration. N)r3)r!rrrrFszGenerator.__next__cCs tdS)zcSend a value into the generator. Return next yielded value or raise StopIteration. N)r1)r!r2rrrr3szGenerator.sendNcCsL|dkr'|dkr||}|dk rB|j|}|dS)zgRaise an exception in the generator. Return next yielded value or raise StopIteration. N)r4)r!r5r6r7rrrr8s    zGenerator.throwc Cs<y|jtWnttfk r+Yn XtddS)z.Raise GeneratorExit inside generator. zgenerator ignored GeneratorExitN)r8r9r1r:)r!rrrr;s zGenerator.closecCsS|tkrO|j}x3dD]+}x"|D]}||jkr)Pq)WtSqWdStS)NrErFr3r8r;T)rErFr3r8r;)r r#r$r%)r&r'r<r=r>rrrr)s    zGenerator.__subclasshook__) r*r+r,r-rFrr3r8r;r.r)rrrrr s   c@s:eZdZfZeddZeddZdS)r cCsdS)Nrr)r!rrr__len__2sz Sized.__len__cCs0|tkr,tdd|jDr,dStS)Ncss|]}d|jkVqdS)rGN)r$)r@r(rrrrA9sz)Sized.__subclasshook__..T)r rBr#r%)r&r'rrrr)6s zSized.__subclasshook__N)r*r+r,r-rrGr.r)rrrrr .s c@s:eZdZfZeddZeddZdS)r cCsdS)NFr)r!xrrr __contains__BszContainer.__contains__cCs0|tkr,tdd|jDr,dStS)Ncss|]}d|jkVqdS)rIN)r$)r@r(rrrrAIsz-Container.__subclasshook__..T)r rBr#r%)r&r'rrrr)Fs zContainer.__subclasshook__N)r*r+r,r-rrIr.r)rrrrr >s c@s:eZdZfZeddZeddZdS)rcOsdS)NFr)r!argskwdsrrr__call__RszCallable.__call__cCs0|tkr,tdd|jDr,dStS)Ncss|]}d|jkVqdS)rLN)r$)r@r(rrrrAYsz,Callable.__subclasshook__..T)rrBr#r%)r&r'rrrr)Vs zCallable.__subclasshook__N)r*r+r,r-rrLr.r)rrrrrNs c@seZdZdZfZddZddZddZdd Zd d Z e d d Z ddZ e Z ddZddZeZddZddZddZeZddZdS)raZA set is a finite, iterable container. This class provides concrete generic implementations of all methods except for __contains__, __iter__ and __len__. To override the comparisons (presumably for speed, as the semantics are fixed), redefine __le__ and __ge__, then the other operations will automatically follow suit. cCsTt|tstSt|t|kr/dSx|D]}||kr6dSq6WdS)NFT) isinstancerr%len)r!otherelemrrr__le__os  z Set.__le__cCs8t|tstSt|t|ko7|j|S)N)rMrr%rNrQ)r!rOrrr__lt__ysz Set.__lt__cCs8t|tstSt|t|ko7|j|S)N)rMrr%rN__ge__)r!rOrrr__gt__~sz Set.__gt__cCsTt|tstSt|t|kr/dSx|D]}||kr6dSq6WdS)NFT)rMrr%rN)r!rOrPrrrrSs  z Set.__ge__cCs8t|tstSt|t|ko7|j|S)N)rMrr%rNrQ)r!rOrrr__eq__sz Set.__eq__cCs ||S)zConstruct an instance of the class from any iterable input. Must override this method if the class constructor signature does not accept an iterable for an input. r)r&itrrr_from_iterableszSet._from_iterablecs3t|tstSjfdd|DS)Nc3s!|]}|kr|VqdS)Nr)r@r2)r!rrrAszSet.__and__..)rMr r%rW)r!rOr)r!r__and__sz Set.__and__cCs%x|D]}||krdSqWdS)z1Return True if two sets have a null intersection.FTr)r!rOr2rrr isdisjoints  zSet.isdisjointcCs9t|tstSdd||fD}|j|S)Ncss"|]}|D] }|Vq qdS)Nr)r@serrrrAszSet.__or__..)rMr r%rW)r!rOchainrrr__or__sz Set.__or__csQtts1tts"tS|j|jfdd|DS)Nc3s!|]}|kr|VqdS)Nr)r@r2)rOrrrAszSet.__sub__..)rMrr r%rW)r!rOr)rOr__sub__s z Set.__sub__csQt|ts1t|ts"tSj|}jfdd|DS)Nc3s!|]}|kr|VqdS)Nr)r@r2)r!rrrAszSet.__rsub__..)rMrr r%rW)r!rOr)r!r__rsub__s z Set.__rsub__cCsAt|ts1t|ts"tS|j|}||||BS)N)rMrr r%rW)r!rOrrr__xor__s z Set.__xor__cCstj}d|d}t|}d|d}||M}x>|D]6}t|}|||d>AdAdN}||M}qBW|dd}||M}||kr||d8}|d krd }|S) a+Compute the hash value of a set. Note that we don't define __hash__: not all sets are hashable. But if you define a hashable set type, its __hash__ should call this function. This must be compatible __eq__. All sets ought to compare equal if they contain the same elements, regardless of how they are implemented, and regardless of the order of the elements; so there's not much freedom for __eq__ or __hash__. We match the algorithm used by the built-in frozenset type. riMriM[l4~2i i6i8#)sysmaxsizerNhash)r!MAXMASKnhrHhxrrr_hashs         z Set._hashN)r*r+r,__doc__r-rQrRrTrSrUr.rWrX__rand__rYr]__ror__r^r_r`__rxor__rlrrrrras$          c@seZdZdZfZeddZeddZddZdd Z d d Z d d Z ddZ ddZ ddZdS)raA mutable set is a finite, iterable container. This class provides concrete generic implementations of all methods except for __contains__, __iter__, __len__, add(), and discard(). To override the comparisons (presumably for speed, as the semantics are fixed), all you have to do is redefine __le__ and then the other operations will automatically follow suit. cCs tdS)zAdd an element.N)NotImplementedError)r!r2rrraddszMutableSet.addcCs tdS)z8Remove an element. Do not raise an exception if absent.N)rq)r!r2rrrdiscardszMutableSet.discardcCs)||krt||j|dS)z5Remove an element. If not a member, raise a KeyError.N)KeyErrorrs)r!r2rrrremoves  zMutableSet.removec CsHt|}yt|}Wntk r6tYnX|j||S)z2Return the popped value. Raise KeyError if empty.)iternextr1rtrs)r!rVr2rrrpop s    zMutableSet.popc Cs.yx|jqWWntk r)YnXdS)z6This is slow (creates N new iterators!) but effective.N)rxrt)r!rrrclears  zMutableSet.clearcCs"x|D]}|j|qW|S)N)rr)r!rVr2rrr__ior__s zMutableSet.__ior__cCs&x||D]}|j|q W|S)N)rs)r!rVr2rrr__iand__"szMutableSet.__iand__cCsu||kr|jnXt|ts7|j|}x7|D]/}||kr`|j|q>|j|q>W|S)N)ryrMrrWrsrr)r!rVr2rrr__ixor__'s    zMutableSet.__ixor__cCs;||kr|jnx|D]}|j|q W|S)N)ryrs)r!rVr2rrr__isub__4s    zMutableSet.__isub__N)r*r+r,rmr-rrrrsrurxryrzr{r|r}rrrrrs      c@sseZdZfZeddZdddZddZdd Zd d Z d d Z ddZ dS)rcCs tdS)N)rt)r!keyrrr __getitem__NszMapping.__getitem__Nc Cs)y ||SWntk r$|SYnXdS)z D[k] if k in D, else d. d defaults to None.N)rt)r!r~defaultrrrgetRs  z Mapping.getc Cs-y ||Wntk r$dSYnXdSdS)NFT)rt)r!r~rrrrIYs    zMapping.__contains__cCs t|S)z:D.keys() -> a set-like object providing a view on D's keys)r)r!rrrkeysasz Mapping.keyscCs t|S)z a set-like object providing a view on D's items)r)r!rrritemsesz Mapping.itemscCs t|S)z6D.values() -> an object providing a view on D's values)r)r!rrrvaluesiszMapping.valuescCs5t|tstSt|jt|jkS)N)rMrr%dictr)r!rOrrrrUmszMapping.__eq__) r*r+r,r-rrrrIrrrrUrrrrrBs      c@s:eZdZd ZddZddZddZdS) r_mappingcCs ||_dS)N)r)r!mappingrrr__init__yszMappingView.__init__cCs t|jS)N)rNr)r!rrrrG|szMappingView.__len__cCs dj|S)Nz&{0.__class__.__name__}({0._mapping!r}))format)r!rrr__repr__szMappingView.__repr__N)r)r*r+r,r-rrGrrrrrrus   c@s@eZdZfZeddZddZddZdS)rcCs t|S)N)set)r!rVrrrrWszKeysView._from_iterablecCs ||jkS)N)r)r!r~rrrrIszKeysView.__contains__ccs|jEdHdS)N)r)r!rrrrEszKeysView.__iter__N)r*r+r,r-r.rWrIrErrrrrs  c@s@eZdZfZeddZddZddZdS)rcCs t|S)N)r)r!rVrrrrWszItemsView._from_iterablec CsD|\}}y|j|}Wntk r5dSYn X||kSdS)NF)rrt)r!itemr~r2vrrrrIs    zItemsView.__contains__ccs*x#|jD]}||j|fVq WdS)N)r)r!r~rrrrEszItemsView.__iter__N)r*r+r,r-r.rWrIrErrrrrs  c@s.eZdZfZddZddZdS)rcCs/x(|jD]}||j|kr dSq WdS)NTF)r)r!r2r~rrrrIszValuesView.__contains__ccs$x|jD]}|j|Vq WdS)N)r)r!r~rrrrEszValuesView.__iter__N)r*r+r,r-rIrErrrrrs  c@seZdZfZeddZeddZeZeddZ ddZ d d Z d d Z d ddZ d S)rcCs tdS)N)rt)r!r~r2rrr __setitem__szMutableMapping.__setitem__cCs tdS)N)rt)r!r~rrr __delitem__szMutableMapping.__delitem__c CsHy||}Wn(tk r8||jkr0|SYn X||=|SdS)zD.pop(k[,d]) -> v, remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised. N)rt_MutableMapping__marker)r!r~rr2rrrrxs  zMutableMapping.popc CsLytt|}Wntk r0tYnX||}||=||fS)zD.popitem() -> (k, v), remove and return some (key, value) pair as a 2-tuple; but raise KeyError if D is empty. )rwrvr1rt)r!r~r2rrrpopitems   zMutableMapping.popitemc Cs.yx|jqWWntk r)YnXdS)z,D.clear() -> None. Remove all items from D.N)rrt)r!rrrrys  zMutableMapping.clearcOs |std|^}}t|dkrFtdt||r|d}t|trxw|D]}|||| None. Update D from mapping/iterable E and F. If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v z@descriptor 'update' of 'MutableMapping' object needs an argumentrz+update expected at most 1 arguments, got %drrN) TypeErrorrNrMrhasattrrr)rJrKr!rOr~r2rrrupdates$    zMutableMapping.updateNc Cs/y ||SWntk r*||| D.get(k,d), also set D[k]=d if k not in D)rt)r!r~rrrr setdefaults   zMutableMapping.setdefault)r*r+r,r-rrrobjectrrxrryrrrrrrrs     c@speZdZdZfZeddZddZddZdd Z d d d d Z ddZ d S)rzAll the operations on a read-only sequence. Concrete subclasses must override __new__ or __init__, __getitem__, and __len__. cCs tdS)N) IndexError)r!indexrrrr)szSequence.__getitem__c csGd}y$x||}|V|d7}q WWntk rBdSYnXdS)Nrr)r)r!irrrrrE-s  zSequence.__iter__cCs%x|D]}||krdSqWdS)NTFr)r!r2rrrrrI7s  zSequence.__contains__ccs0x)ttt|D]}||VqWdS)N)reversedrangerN)r!rrrr __reversed__=szSequence.__reversed__rNc Cs|dk r1|dkr1tt||d}|dk rY|dkrY|t|7}|}xT|dksz||kry|||kr|SWntk rPYnX|d7}qbWtdS)zS.index(value, [start, [stop]]) -> integer -- return first index of value. Raises ValueError if the value is not present. Nrr)maxrNr ValueError)r!r2startstoprrrrrAs zSequence.indexcstfdd|DS)zBS.count(value) -> integer -- return number of occurrences of valuec3s!|]}|krdVqdS)rNr)r@r)r2rrrAVsz!Sequence.count..)sum)r!r2r)r2rcountTszSequence.count) r*r+r,rmr-rrrErIrrrrrrrrs   c@seZdZdZfZdS)rzMThis unifies bytes and bytearray. XXX Should add all their methods. N)r*r+r,rmr-rrrrr^s c@seZdZfZeddZeddZeddZddZd d Z d d Z d dZ dddZ ddZ ddZdS)rcCs tdS)N)r)r!rr2rrrrvszMutableSequence.__setitem__cCs tdS)N)r)r!rrrrrzszMutableSequence.__delitem__cCs tdS)z3S.insert(index, value) -- insert value before indexN)r)r!rr2rrrinsert~szMutableSequence.insertcCs|jt||dS)z:S.append(value) -- append value to the end of the sequenceN)rrN)r!r2rrrappendszMutableSequence.appendc Cs.yx|jqWWntk r)YnXdS)z,S.clear() -> None -- remove all items from SN)rxr)r!rrrrys  zMutableSequence.clearcCsXt|}xEt|dD]3}|||d||||<|||d item -- remove and return item at index (default last). Raise IndexError if list is empty or index is out of range. r)r!rrrrrrxs zMutableSequence.popcCs||j|=dS)zvS.remove(value) -- remove first occurrence of value. Raise ValueError if the value is not present. N)r)r!r2rrrruszMutableSequence.removecCs|j||S)N)r)r!rrrr__iadd__s zMutableSequence.__iadd__Nrc)r*r+r,r-rrrrrryrrrxrurrrrrrks       lC)Ermabcrrrd__all__r*typervbytes_iterator bytearraybytearray_iteratorrdict_keyiteratorrdict_valueiteratorrdict_itemiterator list_iteratorrlist_reverseiteratorrrange_iteratorlongrange_iteratorr set_iterator str_iteratortuple_iteratorzip zip_iterator dict_keys dict_values dict_itemsr$ mappingproxy generatorr coroutiner;rrrregisterrrr r r r r rr frozensetrrrrrrrrrtuplestr memoryviewrbytesrlistrrrrs           0              6  O 0    \ 9      A