ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ „ 	 ( %!1!%)+//.383,7(-.+



-%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ               ÿÄ J  	     ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ              ÿÄ *        !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú
"SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5
ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍÑ¶¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e
ríV
..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     3
bW                  @   s@   d Z dZG dd deZG dd deZi Zdd Zdd	 Zd
S )zEDNS Options   c               @   sd   e Zd ZdZdd Z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 )Optionz*Base class for all EDNS option types.
    c             C   s
   || _ dS )z\Initialize an option.
        @param otype: The rdata type
        @type otype: int
        N)otype)selfr    r   /usr/lib/python3.6/edns.py__init__   s    zOption.__init__c             C   s   t dS )z*Convert an option to wire format.
        N)NotImplementedError)r   filer   r   r   to_wire!   s    zOption.to_wirec             C   s   t dS )a  Build an EDNS option object from wire format

        @param otype: The option type
        @type otype: int
        @param wire: The wire-format message
        @type wire: string
        @param current: The offset in wire of the beginning of the rdata.
        @type current: int
        @param olen: The length of the wire-format option data
        @type olen: int
        @rtype: dns.edns.Option instanceN)r   )clsr   wirecurrentolenr   r   r   	from_wire&   s    zOption.from_wirec             C   s   t dS )zCompare an EDNS option with another option of the same type.
        Return < 0 if self < other, 0 if self == other,
        and > 0 if self > other.
        N)r   )r   otherr   r   r   _cmp5   s    zOption._cmpc             C   s,   t |tsdS | j|jkrdS | j|dkS )NF    )
isinstancer   r   r   )r   r   r   r   r   __eq__<   s
    
zOption.__eq__c             C   s,   t |tsdS | j|jkrdS | j|dkS )NFr   )r   r   r   r   )r   r   r   r   r   __ne__C   s
    
zOption.__ne__c             C   s*   t |t s| j|jkrtS | j|dk S )Nr   )r   r   r   NotImplementedr   )r   r   r   r   r   __lt__J   s    zOption.__lt__c             C   s*   t |t s| j|jkrtS | j|dkS )Nr   )r   r   r   r   r   )r   r   r   r   r   __le__P   s    zOption.__le__c             C   s*   t |t s| j|jkrtS | j|dkS )Nr   )r   r   r   r   r   )r   r   r   r   r   __ge__V   s    zOption.__ge__c             C   s*   t |t s| j|jkrtS | j|dkS )Nr   )r   r   r   r   r   )r   r   r   r   r   __gt__\   s    zOption.__gt__N)__name__
__module____qualname____doc__r   r
   classmethodr   r   r   r   r   r   r   r   r   r   r   r   r      s   r   c                   s<   e Zd ZdZ fddZdd Zedd Zdd	 Z  Z	S )
GenericOptionzwGenerate Rdata Class

    This class is used for EDNS option types for which we have no better
    implementation.
    c                s   t t| j| || _d S )N)superr    r   data)r   r   r"   )	__class__r   r   r   k   s    zGenericOption.__init__c             C   s   |j | j d S )N)writer"   )r   r	   r   r   r   r
   o   s    zGenericOption.to_wirec             C   s   | |||||  S )Nr   )r   r   r   r   r   r   r   r   r   r   s    zGenericOption.from_wirec             C   s$   | j |j krdS | j |j kr dS dS )Nr      )r"   )r   r   r   r   r   r   v   s
    zGenericOption._cmp)
r   r   r   r   r   r
   r   r   r   __classcell__r   r   )r#   r   r    c   s
   r    c             C   s   t j| }|d krt}|S )N)_type_to_classgetr    )r   r   r   r   r   get_option_class   s    
r*   c             C   s   t | }|j| |||S )au  Build an EDNS option object from wire format

    @param otype: The option type
    @type otype: int
    @param wire: The wire-format message
    @type wire: string
    @param current: The offset in wire of the beginning of the rdata.
    @type current: int
    @param olen: The length of the wire-format option data
    @type olen: int
    @rtype: dns.edns.Option instance)r*   r   )r   r   r   r   r   r   r   r   option_from_wire   s    r+   N)r   ZNSIDobjectr   r    r(   r*   r+   r   r   r   r   <module>   s   N