<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

Yf`                 @   s  d  Z  d d l m Z m Z d d l Z d d d d d d	 d
 d d d d d d d d d d d d d d d g Z d Z e e d   Z	 e e e
     Z e e i  j     Z e e i  j     Z e e i  j     Z e e g    Z e e e g     Z e e e d    Z e e e d:    Z e e e     Z e e d   Z e e f    Z e e e     Z e i  j    Z e i  j    Z e i  j    Z  e e j!  Z" e d d       Z# d! d"   Z$ e$   Z$ e e$  Z% e$ j&   [$ Gd# d   d d$ e Z' Gd% d   d d$ e Z( Gd& d   d e(  Z) e) j* e%  Gd' d   d d$ e Z+ Gd( d   d e+  Z, Gd) d	   d	 d$ e Z- Gd* d
   d
 e-  Z. e. j* e	  e. j* e  e. j* e  e. j* e  e. j* e  e. j* e  e. j* e  e. j* e  e. j* e  e. j* e  e. j* e  e. j* e  e. j* e  Gd+ d   d e.  Z/ e/ j* e#  Gd, d   d d$ e Z0 Gd- d   d d$ e Z1 Gd. d   d d$ e Z2 Gd/ d   d e0 e- e1  Z3 e3 j* e4  Gd0 d   d e3  Z5 e5 j* e  Gd1 d   d e0 e- e1  Z6 e6 j* e"  Gd2 d   d e0  Z7 Gd3 d   d e7 e3  Z8 e8 j* e  Gd4 d   d e7 e3  Z9 e9 j* e   Gd5 d   d e7  Z: e: j* e  Gd6 d   d e6  Z; e; j* e<  Gd7 d   d e0 e- e1  Z= e= j* e>  e= j* e?  e= j* e  e= j* e@  Gd8 d   d e=  ZA eA j* eB  eA j* e
  Gd9 d   d e=  ZC eC j* eD  eC j* e
  d S);zjAbstract Base Classes (ABCs) for collections, according to PEP 3119.

Unit tests are in test_collections.
    )ABCMetaabstractmethodN	Awaitable	CoroutineAsyncIterableAsyncIteratorHashableIterableIterator	GeneratorSized	ContainerCallableSet
MutableSetMappingMutableMappingMappingViewKeysView	ItemsView
ValuesViewSequenceMutableSequence
ByteStringzcollections.abc       i   c               c   s   d  VS)N r   r   r   5/opt/alt/python35/lib64/python3.5/_collections_abc.py<lambda>7   s    r   c                  s   d  S)Nr   r   r   r   r   _coro9   s    r    c               @   s:   e  Z d  Z f  Z e d d    Z e d d    Z d S)r   c             C   s   d S)Nr   r   )selfr   r   r   __hash__F   s    zHashable.__hash__c             C   sE   |  t  k rA x2 | j D]' } d | j k r | j d r< d SPq Wt S)Nr"   T)r   __mro____dict__NotImplemented)clsCBr   r   r   __subclasshook__J   s    zHashable.__subclasshook__N)__name__
__module____qualname__	__slots__r   r"   classmethodr)   r   r   r   r   r   B   s   	metaclassc               @   s:   e  Z d  Z f  Z e d d    Z e d d    Z d S)r   c             c   s	   d  Vd  S)Nr   )r!   r   r   r   	__await__Y   s    zAwaitable.__await__c             C   sE   |  t  k rA x2 | j D]' } d | j k r | j d r< d SPq Wt S)Nr0   T)r   r#   r$   r%   )r&   r'   r(   r   r   r   r)   ]   s    zAwaitable.__subclasshook__N)r*   r+   r,   r-   r   r0   r.   r)   r   r   r   r   r   U   s   c               @   s^   e  Z d  Z f  Z e d d    Z e d d d d   Z d d   Z e d d	    Z	 d S)
r   c             C   s
   t   d S)zcSend a value into the coroutine.
        Return next yielded value or raise StopIteration.
        N)StopIteration)r!   valuer   r   r   sendl   s    zCoroutine.sendNc             C   sL   | d k r' | d k r |  |   } | d k	 rB | j  |  } |  d S)zgRaise an exception in the coroutine.
        Return next yielded value or raise StopIteration.
        N)with_traceback)r!   typvaltbr   r   r   throws   s    	zCoroutine.throwc             C   s<   y |  j  t  Wn t t f k
 r+ Yn Xt d   d S)z.Raise GeneratorExit inside coroutine.
        zcoroutine ignored GeneratorExitN)r8   GeneratorExitr1   RuntimeError)r!   r   r   r   close   s
    zCoroutine.closec             C   sS   |  t  k rO | j } x3 d D]+ } x" | D] } | | j k r) Pq) Wt Sq Wd St S)Nr0   r3   r8   r;   T)r0   r3   r8   r;   )r   r#   r$   r%   )r&   r'   mromethodbaser   r   r   r)      s    	zCoroutine.__subclasshook__)
r*   r+   r,   r-   r   r3   r8   r;   r.   r)   r   r   r   r   r   h   s   
c               @   s:   e  Z d  Z f  Z e d d    Z e d d    Z d S)r   c             C   s   t    S)N)r   )r!   r   r   r   	__aiter__   s    zAsyncIterable.__aiter__c             C   s0   |  t  k r, t d d   | j D  r, d St S)Nc             s   s   |  ] } d  | j  k Vq d S)r?   N)r$   ).0r(   r   r   r   	<genexpr>   s    z1AsyncIterable.__subclasshook__.<locals>.<genexpr>T)r   anyr#   r%   )r&   r'   r   r   r   r)      s    zAsyncIterable.__subclasshook__N)r*   r+   r,   r-   r   r?   r.   r)   r   r   r   r   r      s   c               @   sF   e  Z d  Z f  Z e d d    Z d d   Z e d d    Z d S)r   c                s
   t   d S)z@Return the next item or raise StopAsyncIteration when exhausted.N)StopAsyncIteration)r!   r   r   r   	__anext__   s    zAsyncIterator.__anext__c             C   s   |  S)Nr   )r!   r   r   r   r?      s    zAsyncIterator.__aiter__c             C   sL   |  t  k rH t d d   | j D  rH t d d   | j D  rH d St S)Nc             s   s   |  ] } d  | j  k Vq d S)rD   N)r$   )r@   r(   r   r   r   rA      s    z1AsyncIterator.__subclasshook__.<locals>.<genexpr>c             s   s   |  ] } d  | j  k Vq d S)r?   N)r$   )r@   r(   r   r   r   rA      s    T)r   rB   r#   r%   )r&   r'   r   r   r   r)      s
    zAsyncIterator.__subclasshook__N)	r*   r+   r,   r-   r   rD   r?   r.   r)   r   r   r   r   r      s   c               @   s:   e  Z d  Z f  Z e d d    Z e d d    Z d S)r	   c             c   s   d  S)Nr   )r!   r   r   r   __iter__   s    zIterable.__iter__c             C   s0   |  t  k r, t d d   | j D  r, d St S)Nc             s   s   |  ] } d  | j  k Vq d S)rE   N)r$   )r@   r(   r   r   r   rA      s    z,Iterable.__subclasshook__.<locals>.<genexpr>T)r	   rB   r#   r%   )r&   r'   r   r   r   r)      s    zIterable.__subclasshook__N)r*   r+   r,   r-   r   rE   r.   r)   r   r   r   r   r	      s   c               @   sF   e  Z d  Z f  Z e d d    Z d d   Z e d d    Z d S)r
   c             C   s
   t   d S)zKReturn the next item from the iterator. When exhausted, raise StopIterationN)r1   )r!   r   r   r   __next__   s    zIterator.__next__c             C   s   |  S)Nr   )r!   r   r   r   rE      s    zIterator.__iter__c             C   sL   |  t  k rH t d d   | j D  rH t d d   | j D  rH d St S)Nc             s   s   |  ] } d  | j  k Vq d S)rF   N)r$   )r@   r(   r   r   r   rA      s    z,Iterator.__subclasshook__.<locals>.<genexpr>c             s   s   |  ] } d  | j  k Vq d S)rE   N)r$   )r@   r(   r   r   r   rA      s    T)r
   rB   r#   r%   )r&   r'   r   r   r   r)      s
    zIterator.__subclasshook__N)	r*   r+   r,   r-   r   rF   rE   r.   r)   r   r   r   r   r
      s   c               @   sj   e  Z d  Z f  Z d d   Z e d d    Z e d d d d   Z d d	   Z e	 d
 d    Z
 d S)r   c             C   s   |  j  d  S)z^Return the next item from the generator.
        When exhausted, raise StopIteration.
        N)r3   )r!   r   r   r   rF      s    zGenerator.__next__c             C   s
   t   d S)zcSend a value into the generator.
        Return next yielded value or raise StopIteration.
        N)r1   )r!   r2   r   r   r   r3      s    zGenerator.sendNc             C   sL   | d k r' | d k r |  |   } | d k	 rB | j  |  } |  d S)zgRaise an exception in the generator.
        Return next yielded value or raise StopIteration.
        N)r4   )r!   r5   r6   r7   r   r   r   r8     s    	zGenerator.throwc             C   s<   y |  j  t  Wn t t f k
 r+ Yn Xt d   d S)z.Raise GeneratorExit inside generator.
        zgenerator ignored GeneratorExitN)r8   r9   r1   r:   )r!   r   r   r   r;     s
    zGenerator.closec             C   sS   |  t  k rO | j } x3 d D]+ } x" | D] } | | j k r) Pq) Wt Sq Wd St S)NrE   rF   r3   r8   r;   T)rE   rF   r3   r8   r;   )r   r#   r$   r%   )r&   r'   r<   r=   r>   r   r   r   r)     s    	zGenerator.__subclasshook__)r*   r+   r,   r-   rF   r   r3   r8   r;   r.   r)   r   r   r   r   r      s   
c               @   s:   e  Z d  Z f  Z e d d    Z e d d    Z d S)r   c             C   s   d S)Nr   r   )r!   r   r   r   __len__2  s    zSized.__len__c             C   s0   |  t  k r, t d d   | j D  r, d St S)Nc             s   s   |  ] } d  | j  k Vq d S)rG   N)r$   )r@   r(   r   r   r   rA   9  s    z)Sized.__subclasshook__.<locals>.<genexpr>T)r   rB   r#   r%   )r&   r'   r   r   r   r)   6  s    zSized.__subclasshook__N)r*   r+   r,   r-   r   rG   r.   r)   r   r   r   r   r   .  s   c               @   s:   e  Z d  Z f  Z e d d    Z e d d    Z d S)r   c             C   s   d S)NFr   )r!   xr   r   r   __contains__B  s    zContainer.__contains__c             C   s0   |  t  k r, t d d   | j D  r, d St S)Nc             s   s   |  ] } d  | j  k Vq d S)rI   N)r$   )r@   r(   r   r   r   rA   I  s    z-Container.__subclasshook__.<locals>.<genexpr>T)r   rB   r#   r%   )r&   r'   r   r   r   r)   F  s    zContainer.__subclasshook__N)r*   r+   r,   r-   r   rI   r.   r)   r   r   r   r   r   >  s   c               @   s:   e  Z d  Z f  Z e d d    Z e d d    Z d S)r   c             O   s   d S)NFr   )r!   argskwdsr   r   r   __call__R  s    zCallable.__call__c             C   s0   |  t  k r, t d d   | j D  r, d St S)Nc             s   s   |  ] } d  | j  k Vq d S)rL   N)r$   )r@   r(   r   r   r   rA   Y  s    z,Callable.__subclasshook__.<locals>.<genexpr>T)r   rB   r#   r%   )r&   r'   r   r   r   r)   V  s    zCallable.__subclasshook__N)r*   r+   r,   r-   r   rL   r.   r)   r   r   r   r   r   N  s   c               @   s   e  Z d  Z d Z f  Z d d   Z d d   Z d d   Z d d	   Z d
 d   Z	 e
 d d    Z d d   Z e Z d d   Z d d   Z e Z d d   Z d d   Z d d   Z e Z d d   Z d S)r   aZ  A 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.
    c             C   sT   t  | t  s t St |   t |  k r/ d Sx |  D] } | | k r6 d Sq6 Wd S)NFT)
isinstancer   r%   len)r!   otherelemr   r   r   __le__o  s    z
Set.__le__c             C   s8   t  | t  s t St |   t |  k  o7 |  j |  S)N)rM   r   r%   rN   rQ   )r!   rO   r   r   r   __lt__y  s    z
Set.__lt__c             C   s8   t  | t  s t St |   t |  k o7 |  j |  S)N)rM   r   r%   rN   __ge__)r!   rO   r   r   r   __gt__~  s    z
Set.__gt__c             C   sT   t  | t  s t St |   t |  k  r/ d Sx | D] } | |  k r6 d Sq6 Wd S)NFT)rM   r   r%   rN   )r!   rO   rP   r   r   r   rS     s    z
Set.__ge__c             C   s8   t  | t  s t St |   t |  k o7 |  j |  S)N)rM   r   r%   rN   rQ   )r!   rO   r   r   r   __eq__  s    z
Set.__eq__c             C   s
   |  |  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&   itr   r   r   _from_iterable  s    zSet._from_iterablec                s3   t  | t  s t S  j   f d d   | D  S)Nc             3   s!   |  ] } |   k r | Vq d  S)Nr   )r@   r2   )r!   r   r   rA     s    zSet.__and__.<locals>.<genexpr>)rM   r	   r%   rW   )r!   rO   r   )r!   r   __and__  s    zSet.__and__c             C   s%   x | D] } | |  k r d Sq Wd S)z1Return True if two sets have a null intersection.FTr   )r!   rO   r2   r   r   r   
isdisjoint  s    zSet.isdisjointc             C   s9   t  | t  s t Sd d   |  | f D } |  j |  S)Nc             s   s"   |  ] } | D] } | Vq q d  S)Nr   )r@   ser   r   r   rA     s    zSet.__or__.<locals>.<genexpr>)rM   r	   r%   rW   )r!   rO   chainr   r   r   __or__  s    z
Set.__or__c                sQ   t    t  s1 t    t  s" t S|  j      |  j   f d d   |  D  S)Nc             3   s!   |  ] } |   k r | Vq d  S)Nr   )r@   r2   )rO   r   r   rA     s    zSet.__sub__.<locals>.<genexpr>)rM   r   r	   r%   rW   )r!   rO   r   )rO   r   __sub__  s
    zSet.__sub__c                sQ   t  | t  s1 t  | t  s" t S  j |  }   j   f d d   | D  S)Nc             3   s!   |  ] } |   k r | Vq d  S)Nr   )r@   r2   )r!   r   r   rA     s    zSet.__rsub__.<locals>.<genexpr>)rM   r   r	   r%   rW   )r!   rO   r   )r!   r   __rsub__  s
    zSet.__rsub__c             C   sA   t  | t  s1 t  | t  s" t S|  j |  } |  | | |  BS)N)rM   r   r	   r%   rW   )r!   rO   r   r   r   __xor__  s
    zSet.__xor__c             C   s   t  j } d | d } t |   } d | d } | | M} x> |  D]6 } t |  } | | | d >Ad Ad N} | | M} qB W| d d } | | M} | | k r | | d 8} | d
 k r d	 } | 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.
           r   iMr   iM[l   4~2 i i6i8#)sysmaxsizerN   hash)r!   MAXMASKnhrH   hxr   r   r   _hash  s     	

z	Set._hashN)r*   r+   r,   __doc__r-   rQ   rR   rT   rS   rU   r.   rW   rX   __rand__rY   r]   __ror__r^   r_   r`   __rxor__rl   r   r   r   r   r   a  s$   


	c               @   s   e  Z d  Z d Z f  Z e d d    Z e d d    Z d d   Z d d	   Z	 d
 d   Z
 d d   Z d d   Z d d   Z d d   Z d S)r   a  A 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.
    c             C   s
   t   d S)zAdd an element.N)NotImplementedError)r!   r2   r   r   r   add  s    zMutableSet.addc             C   s
   t   d S)z8Remove an element.  Do not raise an exception if absent.N)rq   )r!   r2   r   r   r   discard   s    zMutableSet.discardc             C   s)   | |  k r t  |   |  j |  d S)z5Remove an element. If not a member, raise a KeyError.N)KeyErrorrs   )r!   r2   r   r   r   remove  s    zMutableSet.removec             C   sH   t  |   } y t |  } Wn t k
 r6 t  Yn X|  j |  | S)z2Return the popped value.  Raise KeyError if empty.)iternextr1   rt   rs   )r!   rV   r2   r   r   r   pop  s    zMutableSet.popc             C   s.   y x |  j    q WWn t k
 r) Yn Xd S)z6This is slow (creates N new iterators!) but effective.N)rx   rt   )r!   r   r   r   clear  s
    zMutableSet.clearc             C   s"   x | D] } |  j  |  q W|  S)N)rr   )r!   rV   r2   r   r   r   __ior__  s    zMutableSet.__ior__c             C   s&   x |  | D] } |  j  |  q W|  S)N)rs   )r!   rV   r2   r   r   r   __iand__"  s    zMutableSet.__iand__c             C   su   | |  k r |  j    nX t | t  s7 |  j |  } x7 | D]/ } | |  k r` |  j |  q> |  j |  q> W|  S)N)ry   rM   r   rW   rs   rr   )r!   rV   r2   r   r   r   __ixor__'  s    zMutableSet.__ixor__c             C   s;   | |  k r |  j    n x | D] } |  j |  q  W|  S)N)ry   rs   )r!   rV   r2   r   r   r   __isub__4  s
    zMutableSet.__isub__N)r*   r+   r,   rm   r-   r   rr   rs   ru   rx   ry   rz   r{   r|   r}   r   r   r   r   r     s   

c               @   ss   e  Z d  Z f  Z e d d    Z d d d  Z d d   Z d d	   Z d
 d   Z	 d d   Z
 d d   Z d S)r   c             C   s
   t   d  S)N)rt   )r!   keyr   r   r   __getitem__N  s    zMapping.__getitem__Nc             C   s)   y |  | SWn t  k
 r$ | SYn Xd S)z<D.get(k[,d]) -> D[k] if k in D, else d.  d defaults to None.N)rt   )r!   r~   defaultr   r   r   getR  s    zMapping.getc             C   s-   y |  | Wn t  k
 r$ d SYn Xd Sd  S)NFT)rt   )r!   r~   r   r   r   rI   Y  s
    	zMapping.__contains__c             C   s
   t  |   S)z:D.keys() -> a set-like object providing a view on D's keys)r   )r!   r   r   r   keysa  s    zMapping.keysc             C   s
   t  |   S)z<D.items() -> a set-like object providing a view on D's items)r   )r!   r   r   r   itemse  s    zMapping.itemsc             C   s
   t  |   S)z6D.values() -> an object providing a view on D's values)r   )r!   r   r   r   valuesi  s    zMapping.valuesc             C   s5   t  | t  s t St |  j    t | j    k S)N)rM   r   r%   dictr   )r!   rO   r   r   r   rU   m  s    zMapping.__eq__)r*   r+   r,   r-   r   r   r   rI   r   r   r   rU   r   r   r   r   r   B  s   
c               @   s:   e  Z d  Z d	 Z d d   Z d d   Z d d   Z d S)
r   _mappingc             C   s   | |  _  d  S)N)r   )r!   mappingr   r   r   __init__y  s    zMappingView.__init__c             C   s   t  |  j  S)N)rN   r   )r!   r   r   r   rG   |  s    zMappingView.__len__c             C   s   d j  |   S)Nz&{0.__class__.__name__}({0._mapping!r}))format)r!   r   r   r   __repr__  s    zMappingView.__repr__N)r   )r*   r+   r,   r-   r   rG   r   r   r   r   r   r   u  s   c               @   s@   e  Z d  Z f  Z e d d    Z d d   Z d d   Z d S)r   c             C   s
   t  |  S)N)set)r!   rV   r   r   r   rW     s    zKeysView._from_iterablec             C   s   | |  j  k S)N)r   )r!   r~   r   r   r   rI     s    zKeysView.__contains__c             c   s   |  j  Ed  Hd  S)N)r   )r!   r   r   r   rE     s    zKeysView.__iter__N)r*   r+   r,   r-   r.   rW   rI   rE   r   r   r   r   r     s   c               @   s@   e  Z d  Z f  Z e d d    Z d d   Z d d   Z d S)r   c             C   s
   t  |  S)N)r   )r!   rV   r   r   r   rW     s    zItemsView._from_iterablec             C   sD   | \ } } y |  j  | } Wn t k
 r5 d SYn X| | k Sd  S)NF)r   rt   )r!   itemr~   r2   vr   r   r   rI     s    	zItemsView.__contains__c             c   s*   x# |  j  D] } | |  j  | f Vq
 Wd  S)N)r   )r!   r~   r   r   r   rE     s    zItemsView.__iter__N)r*   r+   r,   r-   r.   rW   rI   rE   r   r   r   r   r     s   	c               @   s.   e  Z d  Z f  Z d d   Z d d   Z d S)r   c             C   s/   x( |  j  D] } | |  j  | k r
 d Sq
 Wd S)NTF)r   )r!   r2   r~   r   r   r   rI     s    zValuesView.__contains__c             c   s$   x |  j  D] } |  j  | Vq
 Wd  S)N)r   )r!   r~   r   r   r   rE     s    zValuesView.__iter__N)r*   r+   r,   r-   rI   rE   r   r   r   r   r     s   c               @   s   e  Z d  Z f  Z e d d    Z e d d    Z e   Z e d d  Z	 d d   Z
 d	 d
   Z d d   Z d d d  Z d S)r   c             C   s
   t   d  S)N)rt   )r!   r~   r2   r   r   r   __setitem__  s    zMutableMapping.__setitem__c             C   s
   t   d  S)N)rt   )r!   r~   r   r   r   __delitem__  s    zMutableMapping.__delitem__c             C   sH   y |  | } Wn( t  k
 r8 | |  j k r0   | SYn X|  | =| Sd S)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~   r   r2   r   r   r   rx     s    	zMutableMapping.popc             C   sL   y t  t |    } Wn t k
 r0 t  Yn X|  | } |  | =| | f S)zD.popitem() -> (k, v), remove and return some (key, value) pair
           as a 2-tuple; but raise KeyError if D is empty.
        )rw   rv   r1   rt   )r!   r~   r2   r   r   r   popitem  s    
zMutableMapping.popitemc             C   s.   y x |  j    q WWn t k
 r) Yn Xd S)z,D.clear() -> None.  Remove all items from D.N)r   rt   )r!   r   r   r   ry     s
    zMutableMapping.clearc              O   s
  |  s t  d   |  ^ } }  t |   d k rF t  d t |     |  r |  d } t | t  r xw | D] } | | | | <ql WnX t | d  r xF | j   D] } | | | | <q Wn! x | D] \ } } | | | <q Wx$ | j   D] \ } } | | | <q Wd S)aK   D.update([E, ]**F) -> 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 argumentr   z+update expected at most 1 arguments, got %dr   r   N)	TypeErrorrN   rM   r   hasattrr   r   )rJ   rK   r!   rO   r~   r2   r   r   r   update  s$    
zMutableMapping.updateNc             C   s/   y |  | SWn t  k
 r* | |  | <Yn X| S)z@D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D)rt   )r!   r~   r   r   r   r   
setdefault  s
    zMutableMapping.setdefault)r*   r+   r,   r-   r   r   r   objectr   rx   r   ry   r   r   r   r   r   r   r     s   	c               @   sp   e  Z d  Z d Z f  Z e d d    Z d d   Z d d   Z d d	   Z	 d
 d d d  Z
 d d   Z d S)r   zAll the operations on a read-only sequence.

    Concrete subclasses must override __new__ or __init__,
    __getitem__, and __len__.
    c             C   s
   t   d  S)N)
IndexError)r!   indexr   r   r   r   )  s    zSequence.__getitem__c             c   sG   d } y$ x |  | } | V| d 7} q WWn t  k
 rB d  SYn Xd  S)Nr   r   )r   )r!   ir   r   r   r   rE   -  s    
zSequence.__iter__c             C   s%   x |  D] } | | k r d Sq Wd S)NTFr   )r!   r2   r   r   r   r   rI   7  s    zSequence.__contains__c             c   s0   x) t  t t |     D] } |  | Vq Wd  S)N)reversedrangerN   )r!   r   r   r   r   __reversed__=  s    zSequence.__reversed__r   Nc             C   s   | d k	 r1 | d k  r1 t  t |   | d  } | d k	 rY | d k  rY | t |   7} | } xT | d k sz | | k  r y |  | | k r | SWn t k
 r PYn X| d 7} qb Wt  d S)zS.index(value, [start, [stop]]) -> integer -- return first index of value.
           Raises ValueError if the value is not present.
        Nr   r   )maxrN   r   
ValueError)r!   r2   startstopr   r   r   r   r   A  s    zSequence.indexc                s   t    f d d   |  D  S)zBS.count(value) -> integer -- return number of occurrences of valuec             3   s!   |  ] } |   k r d  Vq d S)r   Nr   )r@   r   )r2   r   r   rA   V  s    z!Sequence.count.<locals>.<genexpr>)sum)r!   r2   r   )r2   r   countT  s    zSequence.count)r*   r+   r,   rm   r-   r   r   rE   rI   r   r   r   r   r   r   r   r     s   
c               @   s   e  Z d  Z d Z f  Z d S)r   zMThis unifies bytes and bytearray.

    XXX Should add all their methods.
    N)r*   r+   r,   rm   r-   r   r   r   r   r   ^  s   c               @   s   e  Z d  Z f  Z e d d    Z e d d    Z e d d    Z d d   Z d	 d
   Z	 d d   Z
 d d   Z d d d  Z d d   Z d d   Z d S)r   c             C   s
   t   d  S)N)r   )r!   r   r2   r   r   r   r   v  s    zMutableSequence.__setitem__c             C   s
   t   d  S)N)r   )r!   r   r   r   r   r   z  s    zMutableSequence.__delitem__c             C   s
   t   d S)z3S.insert(index, value) -- insert value before indexN)r   )r!   r   r2   r   r   r   insert~  s    zMutableSequence.insertc             C   s   |  j  t |   |  d S)z:S.append(value) -- append value to the end of the sequenceN)r   rN   )r!   r2   r   r   r   append  s    zMutableSequence.appendc             C   s.   y x |  j    q WWn t k
 r) Yn Xd S)z,S.clear() -> None -- remove all items from SN)rx   r   )r!   r   r   r   ry     s
    zMutableSequence.clearc             C   sX   t  |   } xE t | d  D]3 } |  | | d |  | |  | <|  | | d <q Wd S)z!S.reverse() -- reverse *IN PLACE*ra   r   N)rN   r   )r!   ri   r   r   r   r   reverse  s    zMutableSequence.reversec             C   s"   x | D] } |  j  |  q Wd S)zMS.extend(iterable) -- extend sequence by appending elements from the iterableN)r   )r!   r   r   r   r   r   extend  s    zMutableSequence.extendr   c             C   s   |  | } |  | =| S)zS.pop([index]) -> item -- remove and return item at index (default last).
           Raise IndexError if list is empty or index is out of range.
        r   )r!   r   r   r   r   r   rx     s    
zMutableSequence.popc             C   s   |  |  j  |  =d S)zvS.remove(value) -- remove first occurrence of value.
           Raise ValueError if the value is not present.
        N)r   )r!   r2   r   r   r   ru     s    zMutableSequence.removec             C   s   |  j  |  |  S)N)r   )r!   r   r   r   r   __iadd__  s    zMutableSequence.__iadd__Nrc   )r*   r+   r,   r-   r   r   r   r   r   ry   r   r   rx   ru   r   r   r   r   r   r   k  s   	lC                                                                                                                                        )Erm   abcr   r   rd   __all__r*   typerv   bytes_iterator	bytearraybytearray_iteratorr   dict_keyiteratorr   dict_valueiteratorr   dict_itemiteratorlist_iteratorr   list_reverseiteratorr   range_iteratorlongrange_iteratorr   set_iteratorstr_iteratortuple_iteratorzipzip_iterator	dict_keysdict_values
dict_itemsr$   mappingproxy	generatorr    	coroutiner;   r   r   r   registerr   r   r	   r
   r   r   r   r   r   	frozensetr   r   r   r   r   r   r   r   r   tuplestr
memoryviewr   bytesr   listr   r   r   r   <module>   s   				
06O0\9	A