
    >Tf6                     ,   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	m
Z
 ddlmZmZmZ ddlT  G d	 d
ej                  Z e
e           G d de	ej                              Z e
ed           G d dej                              Z e
ed           G d dej                              Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z e
e            G d dej                              Z! e
e d           G d dej                              Z" e
e d           G d d ej                              Z# G d! d"ej                  Z$ G d# d$ej                  Z% G d% d&ej                  Z& G d' d(ej                  Z' e
e(           G d) d*ej                              Z) e
e(d           G d+ d,ej                              Z* e
e(d           G d- d.ej                              Z+ G d/ d0ej                  Z, G d1 d2ej                  Z- G d3 d4ej                  Z. G d5 d6ej                  Z/ e
e0           G d7 d8ej                              Z1 e
e0d           G d9 d:ej                              Z2 e
e0d           G d; d<ej                              Z3 G d= d>ej                  Z4 G d? d@ej                  Z5 G dA dBej                  Z6 G dC dDej                  Z7 e
e8           G dE dFej                              Z9 e
e8d           G dG dHej                              Z: e
e8d           G dI dJej                              Z; G dK dLej                  Z< G dM dNej                  Z= G dO dPej                  Z> G dQ dRej                  Z? e
e@           G dS dTej                              ZA e
e@d           G dU dVej                              ZB e
e@d           G dW dXej                              ZC G dY dZej                  ZD G d[ d\ej                  ZE G d] d^ej                  ZF G d_ d`ej                  ZG e
eH           G da dbej                              ZI e
eHd           G dc ddej                              ZJ e
eHd           G de dfej                              ZK G dg dhej                  ZL G di djej                  ZM G dk dlej                  ZN G dm dnej                  ZO e
eP           G do dpej                              ZQ e
ePd           G dq drej                              ZR e
ePd           G ds dtej                              ZS G du dvej                  ZT G dw dxej                  ZU G dy dzej                  ZV G d{ d|ej                  ZW e
eX           G d} d~ej                              ZY e
eXd           G d dej                              ZZ e
eXd           G d dej                              Z[ G d dej                  Z\ G d dej                  Z] G d dej                  Z^ e
eXd           G d de                      Z_ G d dej                  Z` e
ea           G d dej                              Zb e
ead           G d dej                              Zc e
ead           G d dej                              Zd G d dej                  Ze G d dej                  Zf G d dej                  ZgdS )    )RouteTargetTable)generic)ObjectContactsView)count_related)GetRelatedModelsMixinregister_model_view   )
filtersetsformstables)*c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )TunnelGroupListViewgrouptunnel_countN)__name__
__module____qualname__TunnelGroupobjectsannotater   Tunnelquerysetr
   TunnelGroupFilterSet	filtersetr   TunnelGroupFilterFormfilterset_formr   TunnelGroupTabletable     ./var/www/html/netbox-4.1.3/netbox/vpn/views.pyr   r      sT        "++"]6733 ,  H /I0N#EEEr"   r   c                   F    e Zd Zej                                        Zd ZdS )TunnelGroupViewc                 2    d|                      ||          iS )Nrelated_models)get_related_models)selfrequestinstances      r#   get_extra_contextz!TunnelGroupView.get_extra_context   s!    d55gxHH
 	
r"   N)r   r   r   r   r   allr   r,   r!   r"   r#   r%   r%      s7        "&&((H
 
 
 
 
r"   r%   editc                   N    e Zd Zej                                        Zej        Z	dS )TunnelGroupEditViewN)
r   r   r   r   r   r-   r   r   TunnelGroupFormformr!   r"   r#   r0   r0   !   *        "&&((H DDDr"   r0   deletec                   @    e Zd Zej                                        ZdS )TunnelGroupDeleteViewN)r   r   r   r   r   r-   r   r!   r"   r#   r6   r6   '   "        "&&((HHHr"   r6   c                   N    e Zd Zej                                        Zej        Z	dS )TunnelGroupBulkImportViewN)
r   r   r   r   r   r-   r   r   TunnelGroupImportForm
model_formr!   r"   r#   r9   r9   ,   *        "&&((H,JJJr"   r9   c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )TunnelGroupBulkEditViewr   r   N)r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r    r   TunnelGroupBulkEditFormr2   r!   r"   r#   r>   r>   1   sT        "++"]6733 ,  H /I#E(DDDr"   r>   c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )TunnelGroupBulkDeleteViewr   r   N)r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r    r!   r"   r#   rA   rA   :   sL        "++"]6733 ,  H /I#EEEr"   rA   c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )TunnelListViewtunnelcount_terminationsN)r   r   r   r   r   r   r   TunnelTerminationr   r
   TunnelFilterSetr   r   TunnelFilterFormr   r   TunnelTabler    r!   r"   r#   rC   rC   F   sT        ~&&(=):HEE '  H *I+NEEEr"   rC   c                   @    e Zd Zej                                        ZdS )
TunnelViewNr   r   r   r   r   r-   r   r!   r"   r#   rL   rL   O   !        ~!!##HHHr"   rL   c                   ^     e Zd Zej                                        Zej        Z	 fdZ
 xZS )TunnelEditViewc                 h    d|vrt           j        | _         t                      j        |g|R i |S )Npk)r   TunnelCreateFormr2   superdispatch)r)   r*   argskwargs	__class__s       r#   rU   zTunnelEditView.dispatchY   sA     v.DIuww9$999&999r"   )r   r   r   r   r   r-   r   r   
TunnelFormr2   rU   __classcell__)rX   s   @r#   rP   rP   T   sS        ~!!##HD: : : : : : : : :r"   rP   c                   @    e Zd Zej                                        ZdS )TunnelDeleteViewNrM   r!   r"   r#   r\   r\   b   rN   r"   r\   c                   N    e Zd Zej                                        Zej        Z	dS )TunnelBulkImportViewN)
r   r   r   r   r   r-   r   r   TunnelImportFormr;   r!   r"   r#   r^   r^   g   s)        ~!!##H'JJJr"   r^   c                       e Zd Zej                             eed                    Ze	j
        Zej        Zej        ZdS )TunnelBulkEditViewrD   rE   N)r   r   r   r   r   r   r   rG   r   r
   rH   r   r   rJ   r    r   TunnelBulkEditFormr2   r!   r"   r#   ra   ra   l   sT        ~&&(=):HEE '  H *IE#DDDr"   ra   c                   t    e Zd Zej                             eed                    Ze	j
        Zej        ZdS )TunnelBulkDeleteViewrD   rE   N)r   r   r   r   r   r   r   rG   r   r
   rH   r   r   rJ   r    r!   r"   r#   rd   rd   u   sL        ~&&(=):HEE '  H *IEEEr"   rd   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )TunnelTerminationListViewN)r   r   r   rG   r   r-   r   r
   TunnelTerminationFilterSetr   r   TunnelTerminationFilterFormr   r   TunnelTerminationTabler    r!   r"   r#   rf   rf      s:         (,,..H5I6N)EEEr"   rf   c                   @    e Zd Zej                                        ZdS )TunnelTerminationViewNr   r   r   rG   r   r-   r   r!   r"   r#   rk   rk      "         (,,..HHHr"   rk   c                   N    e Zd Zej                                        Zej        Z	dS )TunnelTerminationEditViewN)
r   r   r   rG   r   r-   r   r   TunnelTerminationFormr2   r!   r"   r#   ro   ro      s*         (,,..H&DDDr"   ro   c                   @    e Zd Zej                                        ZdS )TunnelTerminationDeleteViewNrl   r!   r"   r#   rr   rr      rm   r"   rr   c                   N    e Zd Zej                                        Zej        Z	dS )TunnelTerminationBulkImportViewN)
r   r   r   rG   r   r-   r   r   TunnelTerminationImportFormr;   r!   r"   r#   rt   rt      s*         (,,..H2JJJr"   rt   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )TunnelTerminationBulkEditViewN)r   r   r   rG   r   r-   r   r
   rg   r   r   ri   r    r   TunnelTerminationBulkEditFormr2   r!   r"   r#   rw   rw      s:         (,,..H5I)E.DDDr"   rw   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )TunnelTerminationBulkDeleteViewN)r   r   r   rG   r   r-   r   r
   rg   r   r   ri   r    r!   r"   r#   rz   rz      s2         (,,..H5I)EEEr"   rz   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )IKEProposalListViewN)r   r   r   IKEProposalr   r-   r   r
   IKEProposalFilterSetr   r   IKEProposalFilterFormr   r   IKEProposalTabler    r!   r"   r#   r|   r|      :        "&&((H/I0N#EEEr"   r|   c                   @    e Zd Zej                                        ZdS )IKEProposalViewNr   r   r   r}   r   r-   r   r!   r"   r#   r   r      r7   r"   r   c                   N    e Zd Zej                                        Zej        Z	dS )IKEProposalEditViewN)
r   r   r   r}   r   r-   r   r   IKEProposalFormr2   r!   r"   r#   r   r      r3   r"   r   c                   @    e Zd Zej                                        ZdS )IKEProposalDeleteViewNr   r!   r"   r#   r   r      r7   r"   r   c                   N    e Zd Zej                                        Zej        Z	dS )IKEProposalBulkImportViewN)
r   r   r   r}   r   r-   r   r   IKEProposalImportFormr;   r!   r"   r#   r   r      r<   r"   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )IKEProposalBulkEditViewN)r   r   r   r}   r   r-   r   r
   r~   r   r   r   r    r   IKEProposalBulkEditFormr2   r!   r"   r#   r   r      :        "&&((H/I#E(DDDr"   r   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )IKEProposalBulkDeleteViewN)r   r   r   r}   r   r-   r   r
   r~   r   r   r   r    r!   r"   r#   r   r      2        "&&((H/I#EEEr"   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )IKEPolicyListViewN)r   r   r   	IKEPolicyr   r-   r   r
   IKEPolicyFilterSetr   r   IKEPolicyFilterFormr   r   IKEPolicyTabler    r!   r"   r#   r   r      s:         $$&&H-I.N!EEEr"   r   c                   @    e Zd Zej                                        ZdS )IKEPolicyViewNr   r   r   r   r   r-   r   r!   r"   r#   r   r      "         $$&&HHHr"   r   c                   N    e Zd Zej                                        Zej        Z	dS )IKEPolicyEditViewN)
r   r   r   r   r   r-   r   r   IKEPolicyFormr2   r!   r"   r#   r   r      s*         $$&&HDDDr"   r   c                   @    e Zd Zej                                        ZdS )IKEPolicyDeleteViewNr   r!   r"   r#   r   r      r   r"   r   c                   N    e Zd Zej                                        Zej        Z	dS )IKEPolicyBulkImportViewN)
r   r   r   r   r   r-   r   r   IKEPolicyImportFormr;   r!   r"   r#   r   r      s*         $$&&H*JJJr"   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )IKEPolicyBulkEditViewN)r   r   r   r   r   r-   r   r
   r   r   r   r   r    r   IKEPolicyBulkEditFormr2   r!   r"   r#   r   r      s:         $$&&H-I!E&DDDr"   r   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )IKEPolicyBulkDeleteViewN)r   r   r   r   r   r-   r   r
   r   r   r   r   r    r!   r"   r#   r   r      s2         $$&&H-I!EEEr"   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )IPSecProposalListViewN)r   r   r   IPSecProposalr   r-   r   r
   IPSecProposalFilterSetr   r   IPSecProposalFilterFormr   r   IPSecProposalTabler    r!   r"   r#   r   r     s:        $((**H1I2N%EEEr"   r   c                   @    e Zd Zej                                        ZdS )IPSecProposalViewNr   r   r   r   r   r-   r   r!   r"   r#   r   r     "        $((**HHHr"   r   c                   N    e Zd Zej                                        Zej        Z	dS )IPSecProposalEditViewN)
r   r   r   r   r   r-   r   r   IPSecProposalFormr2   r!   r"   r#   r   r     s*        $((**H"DDDr"   r   c                   @    e Zd Zej                                        ZdS )IPSecProposalDeleteViewNr   r!   r"   r#   r   r     r   r"   r   c                   N    e Zd Zej                                        Zej        Z	dS )IPSecProposalBulkImportViewN)
r   r   r   r   r   r-   r   r   IPSecProposalImportFormr;   r!   r"   r#   r   r     s*        $((**H.JJJr"   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )IPSecProposalBulkEditViewN)r   r   r   r   r   r-   r   r
   r   r   r   r   r    r   IPSecProposalBulkEditFormr2   r!   r"   r#   r   r   $  s:        $((**H1I%E*DDDr"   r   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )IPSecProposalBulkDeleteViewN)r   r   r   r   r   r-   r   r
   r   r   r   r   r    r!   r"   r#   r   r   +  s2        $((**H1I%EEEr"   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )IPSecPolicyListViewN)r   r   r   IPSecPolicyr   r-   r   r
   IPSecPolicyFilterSetr   r   IPSecPolicyFilterFormr   r   IPSecPolicyTabler    r!   r"   r#   r   r   5  r   r"   r   c                   @    e Zd Zej                                        ZdS )IPSecPolicyViewNr   r   r   r   r   r-   r   r!   r"   r#   r   r   <  r7   r"   r   c                   N    e Zd Zej                                        Zej        Z	dS )IPSecPolicyEditViewN)
r   r   r   r   r   r-   r   r   IPSecPolicyFormr2   r!   r"   r#   r   r   A  r3   r"   r   c                   @    e Zd Zej                                        ZdS )IPSecPolicyDeleteViewNr   r!   r"   r#   r   r   G  r7   r"   r   c                   N    e Zd Zej                                        Zej        Z	dS )IPSecPolicyBulkImportViewN)
r   r   r   r   r   r-   r   r   IPSecPolicyImportFormr;   r!   r"   r#   r   r   L  r<   r"   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )IPSecPolicyBulkEditViewN)r   r   r   r   r   r-   r   r
   r   r   r   r   r    r   IPSecPolicyBulkEditFormr2   r!   r"   r#   r   r   Q  r   r"   r   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )IPSecPolicyBulkDeleteViewN)r   r   r   r   r   r-   r   r
   r   r   r   r   r    r!   r"   r#   r   r   X  r   r"   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )IPSecProfileListViewN)r   r   r   IPSecProfiler   r-   r   r
   IPSecProfileFilterSetr   r   IPSecProfileFilterFormr   r   IPSecProfileTabler    r!   r"   r#   r   r   b  s:        #''))H0I1N$EEEr"   r   c                   @    e Zd Zej                                        ZdS )IPSecProfileViewNr   r   r   r   r   r-   r   r!   r"   r#   r   r   i  "        #''))HHHr"   r   c                   N    e Zd Zej                                        Zej        Z	dS )IPSecProfileEditViewN)
r   r   r   r   r   r-   r   r   IPSecProfileFormr2   r!   r"   r#   r   r   n  s*        #''))H!DDDr"   r   c                   @    e Zd Zej                                        ZdS )IPSecProfileDeleteViewNr   r!   r"   r#   r   r   t  r   r"   r   c                   N    e Zd Zej                                        Zej        Z	dS )IPSecProfileBulkImportViewN)
r   r   r   r   r   r-   r   r   IPSecProfileImportFormr;   r!   r"   r#   r   r   y  s*        #''))H-JJJr"   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )IPSecProfileBulkEditViewN)r   r   r   r   r   r-   r   r
   r   r   r   r   r    r   IPSecProfileBulkEditFormr2   r!   r"   r#   r   r   ~  s:        #''))H0I$E)DDDr"   r   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )IPSecProfileBulkDeleteViewN)r   r   r   r   r   r-   r   r
   r   r   r   r   r    r!   r"   r#   r   r     s2        #''))H0I$EEEr"   r   c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )L2VPNListViewN)r   r   r   L2VPNr   r-   r   r   
L2VPNTabler    r
   L2VPNFilterSetr   r   L2VPNFilterFormr   r!   r"   r#   r   r     s9        }  ""HE)I*NNNr"   r   c                   F    e Zd Zej                                        Zd ZdS )	L2VPNViewc                     t          |j                            d          d          }t          |j                            d          d          }||dS )NtenantF)	orderable)import_targets_tableexport_targets_table)r   import_targetsprefetch_relatedexport_targets)r)   r*   r+   r   r   s        r#   r,   zL2VPNView.get_extra_context  ss    /#44X>> 
  
  
  0#44X>> 
  
  
 %9$8
 
 	
r"   N)r   r   r   r   r   r-   r   r,   r!   r"   r#   r   r     s6        }  ""H
 
 
 
 
r"   r   c                   N    e Zd Zej                                        Zej        Z	dS )L2VPNEditViewN)
r   r   r   r   r   r-   r   r   	L2VPNFormr2   r!   r"   r#   r   r     s(        }  ""H?DDDr"   r   c                   @    e Zd Zej                                        ZdS )L2VPNDeleteViewNr   r   r   r   r   r-   r   r!   r"   r#   r  r    !        }  ""HHHr"   r  c                   N    e Zd Zej                                        Zej        Z	dS )L2VPNBulkImportViewN)
r   r   r   r   r   r-   r   r   L2VPNImportFormr;   r!   r"   r#   r  r    s)        }  ""H&JJJr"   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )L2VPNBulkEditViewN)r   r   r   r   r   r-   r   r
   r   r   r   r   r    r   L2VPNBulkEditFormr2   r!   r"   r#   r
  r
    s9        }  ""H)IE"DDDr"   r
  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )L2VPNBulkDeleteViewN)r   r   r   r   r   r-   r   r
   r   r   r   r   r    r!   r"   r#   r  r    s1        }  ""H)IEEEr"   r  contactsc                   @    e Zd Zej                                        ZdS )L2VPNContactsViewNr  r!   r"   r#   r  r    r  r"   r  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )L2VPNTerminationListViewN)r   r   r   L2VPNTerminationr   r-   r   r   L2VPNTerminationTabler    r
   L2VPNTerminationFilterSetr   r   L2VPNTerminationFilterFormr   r!   r"   r#   r  r    s:        '++--H(E4I5NNNr"   r  c                   @    e Zd Zej                                        ZdS )L2VPNTerminationViewNr   r   r   r  r   r-   r   r!   r"   r#   r  r    "        '++--HHHr"   r  c                   N    e Zd Zej                                        Zej        Z	dS )L2VPNTerminationEditViewN)
r   r   r   r  r   r-   r   r   L2VPNTerminationFormr2   r!   r"   r#   r  r    s*        '++--H%DDDr"   r  c                   @    e Zd Zej                                        ZdS )L2VPNTerminationDeleteViewNr  r!   r"   r#   r  r    r  r"   r  c                   N    e Zd Zej                                        Zej        Z	dS )L2VPNTerminationBulkImportViewN)
r   r   r   r  r   r-   r   r   L2VPNTerminationImportFormr;   r!   r"   r#   r!  r!    s*        '++--H1JJJr"   r!  c                   j    e Zd Zej                                        Zej        Z	e
j        Zej        ZdS )L2VPNTerminationBulkEditViewN)r   r   r   r  r   r-   r   r
   r  r   r   r  r    r   L2VPNTerminationBulkEditFormr2   r!   r"   r#   r$  r$    s:        '++--H4I(E-DDDr"   r$  c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )L2VPNTerminationBulkDeleteViewN)r   r   r   r  r   r-   r   r
   r  r   r   r  r    r!   r"   r#   r'  r'    s2        '++--H4I(EEEr"   r'  N)hipam.tablesr   netbox.viewsr   tenancy.viewsr   utilities.queryr   utilities.viewsr   r    r
   r   r   modelsObjectListViewr   r   
ObjectViewr%   ObjectEditViewr0   ObjectDeleteViewr6   BulkImportViewr9   BulkEditViewr>   BulkDeleteViewrA   rC   r   rL   rP   r\   r^   ra   rd   rf   rG   rk   ro   rr   rt   rw   rz   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r  r!  r$  r'  r!   r"   r#   <module>r6     s-   ( ( ( ( ( (             , , , , , , ) ) ) ) ) ) F F F F F F F F ' ' ' ' ' ' ' ' ' '    $ $ $ $ $'0 $ $ $ [!!
 
 
 
 
+W-? 
 
 "!
 [&))! ! ! ! !'0 ! ! *)!
 [(++) ) ) ) )G4 ) ) ,+)- - - - - 6 - - -
) ) ) ) )g2 ) ) )$ $ $ $ $ 6 $ $ $    W+    V$ $ $ $ $# $ $ $ VV$$
: 
: 
: 
: 
:W+ 
: 
: %$
: VX&&$ $ $ $ $w/ $ $ '&$( ( ( ( (71 ( ( (
$ $ $ $ $- $ $ $    71   * * * * * 6 * * * &''/ / / / /G. / / ('/ &//' ' ' ' ' 6 ' ' 0/'
 &11/ / / / /'": / / 21/3 3 3 3 3g&< 3 3 3
/ / / / /G$8 / / /* * * * *g&< * * *$ $ $ $ $'0 $ $ $ [!!) ) ) ) )g( ) ) "!) [&))! ! ! ! !'0 ! ! *)!
 [(++) ) ) ) )G4 ) ) ,+)- - - - - 6 - - -
) ) ) ) )g2 ) ) )$ $ $ $ $ 6 $ $ $" " " " ". " " " Y' ' ' ' 'G& ' '  ' Y''    .   ('
 Y))' ' ' ' ''2 ' ' *)'+ + + + +g4 + + +
' ' ' ' 'G0 ' ' '" " " " "g4 " " "& & & & &G2 & & & ]##+ + + + +* + + $#+ ]F++# # # # #G2 # # ,+#
 ]H--+ + + + +g6 + + .-+/ / / / /'"8 / / /
+ + + + + 4 + + +& & & & &'"8 & & &$ $ $ $ $'0 $ $ $ [!!) ) ) ) )g( ) ) "!) [&))! ! ! ! !'0 ! ! *)!
 [(++) ) ) ) )G4 ) ) ,+)- - - - - 6 - - -
) ) ) ) )g2 ) ) )$ $ $ $ $ 6 $ $ $% % % % %71 % % % \""* * * * *w) * * #"* \6**" " " " "71 " " +*"
 \8,,* * * * *W5 * * -,*. . . . .!7 . . .
* * * * *w3 * * *% % % % %!7 % % %+ + + + +G* + + + U
 
 
 
 
" 
 
 
& UF##    G*   $#
 UH%%# # # # #g. # # &%#' ' ' ' ''0 ' ' '
# # # # #, # # #    '0    UJ''# # # # #* # # ('#6 6 6 6 6w5 6 6 6 %&&. . . . .7- . . '&. %v..& & & & &w5 & & /.&
 %x00. . . . .!9 . . 10.2 2 2 2 2W%; 2 2 2
. . . . .7#7 . . .) ) ) ) )W%; ) ) ) ) )r"   