<!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>
U
    .e                     @   s   d dl mZmZmZ d dlmZ d dlmZ ddlm	Z	 ddl
mZ ddl
mZ d	d
 ZG dd deZG dd deZG dd deZG dd deZG dd dejZdS )    )absolute_importdivisionunicode_literals)	text_type)etree   )
tag_regexp   )base)	_ihatexmlc                 C   s*   | d krd S t | tr| S | ddS d S )Nasciistrict)
isinstancer   decode)s r   O/usr/lib/python3.8/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py
ensure_str   s
    
r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Rootc                 C   s   || _ g | _z:|jjrD| jt| t|jjt|jjt|jj	 W n t
k
rZ   Y nX z| }W n t
k
r   |}Y nX | d k	r| }q|d k	r| j| | }qd | _d | _d S N)ZelementtreechildrenZdocinfoZinternalDTDappendDoctyper   Z	root_name	public_idZ
system_urlAttributeErrorZgetrootZgetpreviousgetnexttexttail)selfZetnoder   r   r   __init__   s,    







zRoot.__init__c                 C   s
   | j | S r   )r   r   keyr   r   r   __getitem__1   s    zRoot.__getitem__c                 C   s   d S r   r   r   r   r   r   r   4   s    zRoot.getnextc                 C   s   dS Nr	   r   r$   r   r   r   __len__7   s    zRoot.__len__N)__name__
__module____qualname__r    r#   r   r&   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd Zdd ZdS )r   c                 C   s(   || _ || _|| _|| _d | _d | _d S r   )	root_nodenamer   	system_idr   r   )r   r*   r+   r   r,   r   r   r   r    <   s    zDoctype.__init__c                 C   s   | j jd S r%   )r*   r   r$   r   r   r   r   E   s    zDoctype.getnextNr'   r(   r)   r    r   r   r   r   r   r   ;   s   	r   c                   @   s   e Zd Zdd Zdd ZdS )FragmentRootc                    s$    fdd|D  _ d   _ _d S )Nc                    s   g | ]}t  |qS r   )FragmentWrapper).0Zchildr$   r   r   
<listcomp>K   s     z)FragmentRoot.__init__.<locals>.<listcomp>)r   r   r   )r   r   r   r$   r   r    J   s    zFragmentRoot.__init__c                 C   s   d S r   r   r$   r   r   r   r   N   s    zFragmentRoot.getnextNr-   r   r   r   r   r.   I   s   r.   c                   @   sT   e Zd Z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d ZdS )r/   c                 C   sT   || _ || _t| jdr(t| jj| _nd | _t| jdrJt| jj| _nd | _d S )Nr   r   )r*   objhasattrr   r   r   )r   Zfragment_rootr2   r   r   r   r    S   s    zFragmentWrapper.__init__c                 C   s   t | j|S r   )getattrr2   )r   r+   r   r   r   __getattr___   s    zFragmentWrapper.__getattr__c                 C   s6   | j j}|| }|t|d k r.||d  S d S d S r%   )r*   r   indexlen)r   Zsiblingsidxr   r   r   r   b   s
    
zFragmentWrapper.getnextc                 C   s
   | j | S r   )r2   r!   r   r   r   r#   j   s    zFragmentWrapper.__getitem__c                 C   s
   t | jS r   )boolr2   r$   r   r   r   __bool__m   s    zFragmentWrapper.__bool__c                 C   s   d S r   r   r$   r   r   r   	getparentp   s    zFragmentWrapper.getparentc                 C   s
   t | jS r   strr2   r$   r   r   r   __str__s   s    zFragmentWrapper.__str__c                 C   s
   t | jS r   r<   r$   r   r   r   __unicode__v   s    zFragmentWrapper.__unicode__c                 C   s
   t | jS r   )r7   r2   r$   r   r   r   r&   y   s    zFragmentWrapper.__len__N)r'   r(   r)   r    r5   r   r#   r:   r;   r>   r?   r&   r   r   r   r   r/   R   s   r/   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TreeWalkerc                 C   sJ   t |trt|| _t|}nt | _t|}tj| | t	
 | _d S r   )r   listsetfragmentChildrenr.   r   r
   NonRecursiveTreeWalkerr    r   ZInfosetFilterfilter)r   Ztreer   r   r   r    ~   s    


zTreeWalker.__init__c           	      C   sz  t |tr&|\}}tjtt||fS t |tr8tjfS t |trVtj	|j
|j|jfS t |trzt|dsztjt|jfS |jtjkrtjt|jfS |jtjkrtjt|jdd fS tt|j}|r| \}}nd }t|j}i }t|j D ]P\}}t|}t|}t|}|r>|||d|df< n||d |f<  qtj|| j ||t!|dkpr|jfS d S )Ntagr	   r   r   )"r   tupler
   ZTEXTr   r4   r   ZDOCUMENTr   ZDOCTYPEr+   r   r,   r/   r3   r2   rF   r   CommentCOMMENTr   ZEntityZENTITYr   matchgroupsrA   ZattribitemsgroupZELEMENTrE   ZfromXmlNamer7   )	r   r   r"   rK   	namespacerF   Zattrsr+   valuer   r   r   getNodeDetails   s<    




 zTreeWalker.getNodeDetailsc                 C   s   |j r|dfS |d S d S )Nr   r   )r   )r   r   r   r   r   getFirstChild   s    zTreeWalker.getFirstChildc                 C   sN   t |tr8|\}}|dkr0t|r*|d S d S n| S |jrF|dfS | S )Nr   r   r   )r   rH   r7   r   r   r   r   r"   r   r   r   getNextSibling   s    
zTreeWalker.getNextSiblingc                 C   s6   t |tr |\}}|dkr.|S n|| jkr.d S | S )Nr   )r   rH   rC   r;   rS   r   r   r   getParentNode   s    

zTreeWalker.getParentNodeN)r'   r(   r)   r    rQ   rR   rT   rU   r   r   r   r   r@   }   s
   )	r@   N)Z
__future__r   r   r   Zpip._vendor.sixr   Zlxmlr   Ztreebuilders.etreer    r
   r   r   objectr   r   r.   r/   rD   r@   r   r   r   r   <module>   s   	&	+