§
    Ètºfÿ‰  ã                   ó$  — d Z ddlmZmZ ddlmZmZmZ ddl	m
Z
mZ  G d„ de¦  «        Z ee¦  «         G d„ d¦  «        ¦   «         Z G d	„ d
ej        ¦  «        ZdZddiZ G d„ d¦  «        Z G d„ d¦  «        ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ! G d„ d ¦  «        Z"d!„ Z#d"Z$d#„ e$D ¦   «         Z% ee¦  «         G d$„ d%ej&        ¦  «        ¦   «         Z' e(e$e%¦  «        D ]\  Z)Z* e+e'e)e*¦  «         Œ G d&„ d'ej&        ¦  «        Z,g d(¢Z-d)S )*z?
VT102 and VT220 terminal manipulation.

@author: Jp Calderone
é    )Ú	InterfaceÚimplementer)ÚdeferÚ
interfacesÚprotocol)Ú	iterbytesÚnetworkStringc                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚITerminalProtocolc                 ó   — dS )zX
        Called with an L{ITerminalTransport} when a connection is established.
        N© )Ú	transports    ú\/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/conch/insults/insults.pyÚmakeConnectionz ITerminalProtocol.makeConnection   ó   € € € ó    c                 ó   — dS )a`  
        A keystroke was received.

        Each keystroke corresponds to one invocation of this method.
        keyID is a string identifier for that key.  Printable characters
        are represented by themselves.  Control keys, such as arrows and
        function keys, are represented with symbolic constants on
        L{ServerProtocol}.
        Nr   )ÚkeyIDÚmodifiers     r   ÚkeystrokeReceivedz#ITerminalProtocol.keystrokeReceived   r   r   c                 ó   — dS )zÈ
        Called to indicate the size of the terminal.

        A terminal of 80x24 should be assumed if this method is not
        called.  This method might not be called for real terminals.
        Nr   )ÚwidthÚheights     r   ÚterminalSizezITerminalProtocol.terminalSize"   r   r   c                 ó   — dS ©z´
        Called when an unsupported control sequence is received.

        @type seq: L{str}
        @param seq: The whole control sequence which could not be interpreted.
        Nr   ©Úseqs    r   ÚunhandledControlSequencez*ITerminalProtocol.unhandledControlSequence*   r   r   c                 ó   — dS )zh
        Called when the connection has been lost.

        reason is a Failure describing why.
        Nr   )Úreasons    r   ÚconnectionLostz ITerminalProtocol.connectionLost2   r   r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r"   r   r   r   r   r      s_   € € € € € ðð ð ð
	ð 	ð 	ðð ð ðð ð ðð ð ð ð r   r   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTerminalProtocolc                 ó<   — || _         |                      ¦   «          d S ©N)ÚterminalÚconnectionMade)Úselfr*   s     r   r   zTerminalProtocol.makeConnection<   s!   € à ˆŒØ×ÒÑÔÐÐÐr   c                 ó   — dS )zA
        Called after a connection has been established.
        Nr   ©r,   s    r   r+   zTerminalProtocol.connectionMadeA   r   r   c                 ó   — d S r)   r   )r,   r   r   s      r   r   z"TerminalProtocol.keystrokeReceivedF   ó   € Øˆr   c                 ó   — d S r)   r   )r,   r   r   s      r   r   zTerminalProtocol.terminalSizeI   r0   r   c                 ó   — d S r)   r   )r,   r   s     r   r   z)TerminalProtocol.unhandledControlSequenceL   r0   r   c                 ó   — d S r)   r   ©r,   r!   s     r   r"   zTerminalProtocol.connectionLostO   r0   r   N)	r#   r$   r%   r   r+   r   r   r   r"   r   r   r   r'   r'   :   sn   € € € € € ðð ð ð
ð ð ð
ð ð ðð ð ðð ð ðð ð ð ð r   r'   c                   ó  — e Zd Zd-d„Zd-d„Zd-d„Zd-d„Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd.d„Zd„ Zd„ Zd „ Z d!„ Z!d"„ Z"d#„ Z#d$„ Z$d%„ Z%d-d&„Z&d-d'„Z'd-d(„Z(d)„ Z)d*„ Z*d+„ Z+d,S )/ÚITerminalTransporté   c                 ó   — dS )z-
        Move the cursor up n lines.
        Nr   ©Úns    r   ÚcursorUpzITerminalTransport.cursorUpT   r   r   c                 ó   — dS )z/
        Move the cursor down n lines.
        Nr   r9   s    r   Ú
cursorDownzITerminalTransport.cursorDownY   r   r   c                 ó   — dS )z2
        Move the cursor right n columns.
        Nr   r9   s    r   ÚcursorForwardz ITerminalTransport.cursorForward^   r   r   c                 ó   — dS )z1
        Move the cursor left n columns.
        Nr   r9   s    r   ÚcursorBackwardz!ITerminalTransport.cursorBackwardc   r   r   c                 ó   — dS )z?
        Move the cursor to the given line and column.
        Nr   )ÚcolumnÚlines     r   ÚcursorPositionz!ITerminalTransport.cursorPositionh   r   r   c                  ó   — dS )z'
        Move the cursor home.
        Nr   r   r   r   Ú
cursorHomezITerminalTransport.cursorHomem   r   r   c                  ó   — dS )zS
        Move the cursor down one line, performing scrolling if necessary.
        Nr   r   r   r   ÚindexzITerminalTransport.indexr   r   r   c                  ó   — dS )zQ
        Move the cursor up one line, performing scrolling if necessary.
        Nr   r   r   r   ÚreverseIndexzITerminalTransport.reverseIndexw   r   r   c                  ó   — dS )zl
        Move the cursor to the first position on the next line, performing scrolling if necessary.
        Nr   r   r   r   ÚnextLinezITerminalTransport.nextLine|   r   r   c                  ó   — dS )zj
        Save the cursor position, character attribute, character set, and origin mode selection.
        Nr   r   r   r   Ú
saveCursorzITerminalTransport.saveCursor�   r   r   c                  ó   — dS )zÖ
        Restore the previously saved cursor position, character attribute, character set, and origin mode selection.

        If no cursor state was previously saved, move the cursor to the home position.
        Nr   r   r   r   ÚrestoreCursorz ITerminalTransport.restoreCursor†   r   r   c                 ó   — dS )z6
        Set the given modes on the terminal.
        Nr   ©Úmodess    r   ÚsetModeszITerminalTransport.setModes�   r   r   c                 ó   — dS )z8
        Reset the given modes on the terminal.
        Nr   )Úmodes    r   Ú
resetModeszITerminalTransport.resetModes’   r   r   c                 ó   — dS )zB
        Set the given DEC private modes on the terminal.
        Nr   rS   s    r   ÚsetPrivateModesz"ITerminalTransport.setPrivateModes—   r   r   c                 ó   — dS )zD
        Reset the given DEC private modes on the terminal.
        Nr   rS   s    r   ÚresetPrivateModesz$ITerminalTransport.resetPrivateModesœ   r   r   c                  ó   — dS )z�
        Cause keypad to generate control functions.

        Cursor key mode selects the type of characters generated by cursor keys.
        Nr   r   r   r   ÚapplicationKeypadModez(ITerminalTransport.applicationKeypadMode¡   r   r   c                  ó   — dS )z=
        Cause keypad to generate normal characters.
        Nr   r   r   r   ÚnumericKeypadModez$ITerminalTransport.numericKeypadMode¨   r   r   c                 ó   — dS )z¾
        Select a character set.

        charSet should be one of CS_US, CS_UK, CS_DRAWING, CS_ALTERNATE, or
        CS_ALTERNATE_SPECIAL.

        which should be one of G0 or G1.
        Nr   )ÚcharSetÚwhichs     r   ÚselectCharacterSetz%ITerminalTransport.selectCharacterSet­   r   r   c                  ó   — dS )z0
        Activate the G0 character set.
        Nr   r   r   r   ÚshiftInzITerminalTransport.shiftIn·   r   r   c                  ó   — dS )z0
        Activate the G1 character set.
        Nr   r   r   r   ÚshiftOutzITerminalTransport.shiftOut¼   r   r   c                  ó   — dS )zG
        Shift to the G2 character set for a single character.
        Nr   r   r   r   ÚsingleShift2zITerminalTransport.singleShift2Á   r   r   c                  ó   — dS )zG
        Shift to the G3 character set for a single character.
        Nr   r   r   r   ÚsingleShift3zITerminalTransport.singleShift3Æ   r   r   c                  ó   — dS )zÛ
        Enabled one or more character attributes.

        Arguments should be one or more of UNDERLINE, REVERSE_VIDEO, BLINK, or BOLD.
        NORMAL may also be specified to disable all character attributes.
        Nr   )Ú
attributess    r   ÚselectGraphicRenditionz)ITerminalTransport.selectGraphicRenditionË   r   r   c                  ó   — dS )z@
        Set a tab stop at the current cursor position.
        Nr   r   r   r   ÚhorizontalTabulationSetz*ITerminalTransport.horizontalTabulationSetÓ   r   r   c                  ó   — dS )zD
        Clear the tab stop at the current cursor position.
        Nr   r   r   r   ÚtabulationClearz"ITerminalTransport.tabulationClearØ   r   r   c                  ó   — dS )z&
        Clear all tab stops.
        Nr   r   r   r   ÚtabulationClearAllz%ITerminalTransport.tabulationClearAllÝ   r   r   Tc                 ó   — dS )zÃ
        Make the current line the top or bottom half of a double-height, double-width line.

        If top is True, the current line is the top half.  Otherwise, it is the bottom half.
        Nr   )Útops    r   ÚdoubleHeightLinez#ITerminalTransport.doubleHeightLineâ   r   r   c                  ó   — dS )zK
        Make the current line a single-width, single-height line.
        Nr   r   r   r   ÚsingleWidthLinez"ITerminalTransport.singleWidthLineé   r   r   c                  ó   — dS )z<
        Make the current line a double-width line.
        Nr   r   r   r   ÚdoubleWidthLinez"ITerminalTransport.doubleWidthLineî   r   r   c                  ó   — dS )zV
        Erase from the cursor to the end of line, including cursor position.
        Nr   r   r   r   ÚeraseToLineEndz!ITerminalTransport.eraseToLineEndó   r   r   c                  ó   — dS )zd
        Erase from the cursor to the beginning of the line, including the cursor position.
        Nr   r   r   r   ÚeraseToLineBeginningz'ITerminalTransport.eraseToLineBeginningø   r   r   c                  ó   — dS )z/
        Erase the entire cursor line.
        Nr   r   r   r   Ú	eraseLinezITerminalTransport.eraseLineý   r   r   c                  ó   — dS )za
        Erase from the cursor to the end of the display, including the cursor position.
        Nr   r   r   r   ÚeraseToDisplayEndz$ITerminalTransport.eraseToDisplayEnd  r   r   c                  ó   — dS )zg
        Erase from the cursor to the beginning of the display, including the cursor position.
        Nr   r   r   r   ÚeraseToDisplayBeginningz*ITerminalTransport.eraseToDisplayBeginning  r   r   c                  ó   — dS )z+
        Erase the entire display.
        Nr   r   r   r   ÚeraseDisplayzITerminalTransport.eraseDisplay  r   r   c                 ó   — dS )z–
        Delete n characters starting at the cursor position.

        Characters to the right of deleted characters are shifted to the left.
        Nr   r9   s    r   ÚdeleteCharacterz"ITerminalTransport.deleteCharacter  r   r   c                 ó   — dS )zæ
        Insert n lines at the cursor position.

        Lines below the cursor are shifted down.  Lines moved past the bottom margin are lost.
        This command is ignored when the cursor is outside the scroll region.
        Nr   r9   s    r   Ú
insertLinezITerminalTransport.insertLine  r   r   c                 ó   — dS )zÀ
        Delete n lines starting at the cursor position.

        Lines below the cursor are shifted up.  This command is ignored when the cursor is outside
        the scroll region.
        Nr   r9   s    r   Ú
deleteLinezITerminalTransport.deleteLine   r   r   c                  ó   — dS )zi
        Return a Deferred that fires with a two-tuple of (x, y) indicating the cursor position.
        Nr   r   r   r   ÚreportCursorPositionz'ITerminalTransport.reportCursorPosition(  r   r   c                  ó   — dS )z:
        Reset the terminal to its initial state.
        Nr   r   r   r   ÚresetzITerminalTransport.reset-  r   r   c                 ó   — dS r   r   r   s    r   r   z+ITerminalTransport.unhandledControlSequence2  r   r   N©r7   ©T),r#   r$   r%   r;   r=   r?   rA   rE   rG   rI   rK   rM   rO   rQ   rU   rX   rZ   r\   r^   r`   rd   rf   rh   rj   rl   ro   rq   rs   ru   rx   rz   r|   r~   r€   r‚   r„   r†   rˆ   rŠ   rŒ   rŽ   r�   r’   r   r   r   r   r6   r6   S   s£  € € € € € ðð ð ð ð
ð ð ð ð
ð ð ð ð
ð ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ðð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ðð ð ð
ð ð ðð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ðð ð ð
ð ð ð
ð ð ð
ð ð ð ðð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð
ð ð ð ðð ð ð ðð ð ð ðð ð ð
ð ð ð
ð ð ð ð r   r6   ó   ó   ~s   tildec                   ó*   — e Zd ZdZdxZZdxZZdxZZ	dS )rT   z$
    ECMA 48 standardized modes
    é   é   é   N)
r#   r$   r%   Ú__doc__ÚKEYBOARD_ACTIONÚKAMÚINSERTION_REPLACEMENTÚIRMÚLINEFEED_NEWLINEÚLNMr   r   r   rT   rT   ?  s>   € € € € € ðð ð
 Ð€O�cð #$Ð#Ð˜Cð  ÐÐ�s�s�sr   rT   c                   óB   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdS )ÚprivateModesz'
    ANSI-Compatible Private Modes
    r   r7   r™   é   rš   é   é   é   é   é   é   é   N)r#   r$   r%   rœ   ÚERRORÚ
CURSOR_KEYÚ	ANSI_VT52ÚCOLUMNÚSCROLLÚSCREENÚORIGINÚ	AUTO_WRAPÚAUTO_REPEATÚPRINTER_FORM_FEEDÚPRINTER_EXTENTÚCURSOR_MODEr   r   r   r¤   r¤   [  sY   € € € € € ðð ð €EØ€JØ€IØ€FØ€FØ€FØ€FØ€IØ€KØÐØ€Nð €K€K€Kr   r¤   s   CS_USs   CS_UKs
   CS_DRAWINGs   CS_ALTERNATEs   CS_ALTERNATE_SPECIALs   G0s   G1s   G2s   G3r7   rš   r¦   r¨   c                   ó   — e Zd Zd„ ZdS )ÚVectorc                 ó"   — || _         || _        d S r)   )ÚxÚy)r,   r¼   r½   s      r   Ú__init__zVector.__init__‰  s   € ØˆŒØˆŒˆˆr   N)r#   r$   r%   r¾   r   r   r   rº   rº   ˆ  s#   € € € € € ðð ð ð ð r   rº   c                 ó¢   — t          dd¦  «        5 }|                     t          | ¦  «        dz   ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚlogÚaú
)ÚopenÚwriteÚstr)ÚsÚfs     r   rÀ   rÀ   Ž  s�   € Ý	ˆe�SÑ	Ô	ð ˜QØ	�Š•�A‘”˜‘ÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ‘&AÁAÁA)ÚUP_ARROWÚ
DOWN_ARROWÚRIGHT_ARROWÚ
LEFT_ARROWÚHOMEÚINSERTÚDELETEÚENDÚPGUPÚPGDNÚNUMPAD_MIDDLEÚF1ÚF2ÚF3ÚF4ÚF5ÚF6ÚF7ÚF8ÚF9ÚF10ÚF11ÚF12ÚALTÚSHIFTÚCONTROLc                 ó@   — g | ]}d |› d�                      d¦  «        ‘ŒS )ú[ú]Úascii)Úencode)Ú.0Ú_names     r   ú
<listcomp>ré   ²  s.   € ÐFÐFÐF°%��U���×$Ò$ WÑ-Ô-ÐFÐFÐFr   c                   óê  — e Zd ZdZdZdZdZdZdZ e	dd¦  «        Z
 e	dd¦  «        ZdZdZdDd	„Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ d¦  «        Z e¦   «         ZdEd„ZdEd„ZdEd„ZdEd„Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'd$„ Z(d%„ Z)d&„ Z*d'„ Z+d(„ Z,d)„ Z-d*„ Z.d+„ Z/d,„ Z0d-„ Z1d.„ Z2dFd0„Z3d1„ Z4d2„ Z5d3„ Z6d4„ Z7d5„ Z8d6„ Z9d7„ Z:d8„ Z;dEd9„Z<dEd:„Z=dEd;„Z>dGd<„Z?d=„ Z@d>„ ZAd?„ ZBd@„ ZCdA„ ZDdB„ ZEdC„ ZFdS )HÚServerProtocolNó   	ó   r   ó   dataéP   é   r   c                 óB   — |�|| _         || _        || _        g | _        dS )a  
        @param protocolFactory: A callable which will be invoked with
        *a, **kw and should return an ITerminalProtocol implementor.
        This will be invoked when a connection to this ServerProtocol
        is established.

        @param a: Any positional arguments to pass to protocolFactory.
        @param kw: Any keyword arguments to pass to protocolFactory.
        N)ÚprotocolFactoryÚprotocolArgsÚprotocolKwArgsÚ_cursorReports)r,   rò   rÁ   Úkws       r   r¾   zServerProtocol.__init__É  s0   € ð Ð&Ø#2ˆDÔ ØˆÔØ ˆÔà ˆÔÐÐr   c                 ó    — t          d¦  «        ‚)Nz%Unimplemented: ServerProtocol.getHost©ÚNotImplementedErrorr.   s    r   ÚgetHostzServerProtocol.getHostÛ  ó   € å!Ð"IÑJÔJÐJr   c                 ó    — t          d¦  «        ‚)Nz%Unimplemented: ServerProtocol.getPeerrø   r.   s    r   ÚgetPeerzServerProtocol.getPeerß  rû   r   c                 óÎ   — | j         �] | j         | j        i | j        ¤Ž| _        	 | j        }|| j        _        n# t
          $ r Y nw xY w| j                             | ¦  «         d S d S r)   )rò   ró   rô   ÚterminalProtocolÚfactoryÚAttributeErrorr   )r,   r   s     r   r+   zServerProtocol.connectionMadeã  s˜   € ØÔÐ+Ø$8 DÔ$8ØÔ"ð%Ø&*Ô&9ð%ð %ˆDÔ!ð8Øœ,�ð 18�Ô%Ô-Ð-øõ "ð ð ð Ø�ðøøøð
 Ô!×0Ò0°Ñ6Ô6Ð6Ð6Ð6ð ,Ð+s   ¥9 ¹
AÁAc                 ó¬  — t          |¦  «        D �]B}| j        dk    r*|dk    rd| _        Œ| j                             |d ¦  «         Œ8| j        dk    r@|dk    rd| _        g | _        ŒX|dk    rd| _        Œfd| _        |                      |¦  «         Œƒ| j        dk    r~|dk    rd| _        Œœ|                     ¦   «         s|dk    r:|                      d	                     | j        ¦  «        |z   ¦  «         | `d| _        Œð| j         	                    |¦  «         �Œ| j        dk    r|  
                    |¦  «         d| _        �Œ5t          d
¦  «        ‚d S )Nrî   r–   ó   escapedó   [s   bracket-escapedó   Os   low-function-escapedr—   r   úIllegal state)r   Ústaterÿ   r   ÚescBufÚ_handleShortControlSequenceÚisalphaÚ_handleControlSequenceÚjoinÚappendÚ!_handleLowFunctionControlSequenceÚ
ValueError)r,   ÚdataÚchs      r   ÚdataReceivedzServerProtocol.dataReceivedò  sq  € Ý˜D‘/”/ð 	2ñ 	2ˆBØŒz˜WÒ$Ð$Ø˜’=�=Ø!+�D”J�JàÔ)×;Ò;¸BÀÑEÔEÐEÐEØ”˜zÒ)Ð)Ø˜’:�:Ø!3�D”JØ"$�D”K�KØ˜4’Z�ZØ!8�D”J�Jà!(�D”JØ×4Ò4°RÑ8Ô8Ð8Ð8Ø”Ð1Ò1Ð1Ø˜’:�:Ø!8�D”J�JØ—Z’Z‘\”\ð + R¨4¢Z ZØ×/Ò/°·²¸¼Ñ0EÔ0EÈÑ0JÑKÔKÐKØ˜Ø!(�D”J�Jà”K×&Ò& rÑ*Ô*Ð*Ñ*Ø”Ð6Ò6Ð6Ø×6Ò6°rÑ:Ô:Ð:Ø$�”
‘
å  Ñ1Ô1Ð1ð9	2ð 	2r   c                 óF   — | j                              || j        ¦  «         d S r)   )rÿ   r   rß   )r,   r  s     r   r	  z*ServerProtocol._handleShortControlSequence  s#   € ØÔ×/Ò/°°D´HÑ=Ô=Ð=Ð=Ð=r   c           	      ó  — d|z   }t          | j        t                               |dd …         |dd …         ¦  «                             d¦  «        d ¦  «        }|€|                      |¦  «         d S  || | j        |d d…         ¦  «         d S )Nó   [éÿÿÿÿrå   )ÚgetattrÚcontrolSequenceParserÚCSTÚgetÚdecoder   rÿ   )r,   ÚbufrÇ   s      r   r  z%ServerProtocol._handleControlSequence  s˜   € Ø˜‰nˆÝØÔ&Ý�GŠG�C˜˜˜”H˜c " # #œhÑ'Ô'×.Ò.¨wÑ7Ô7Øñ
ô 
ˆð
 ˆ9Ø×)Ò)¨#Ñ.Ô.Ð.Ð.Ð.àˆAˆd�DÔ)¨3¨s°¨s¬8Ñ4Ô4Ð4Ð4Ð4r   c                 ó:   — | j                              |¦  «         d S r)   )rÿ   r   )r,   r  s     r   r   z'ServerProtocol.unhandledControlSequence   s   € ØÔ×6Ò6°sÑ;Ô;Ð;Ð;Ð;r   c                 óÞ   — | j         | j        | j        | j        dœ}|                     |¦  «        }|�| j                             |d ¦  «         d S | j                             d|z   ¦  «         d S )N)ó   Pó   Qó   Ró   Ss   [O)rÓ   rÔ   rÕ   rÖ   r  rÿ   r   r   )r,   r  ÚfunctionKeysr   s       r   r  z0ServerProtocol._handleLowFunctionControlSequence#  st   € Ø"œg¨T¬W¸D¼GÈ4Ì7ÐSÐSˆØ× Ò  Ñ$Ô$ˆØÐØÔ!×3Ò3°E¸4Ñ@Ô@Ð@Ð@Ð@àÔ!×:Ò:¸9Àr¹>ÑJÔJÐJÐJÐJr   c                   óJ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdS )ú$ServerProtocol.ControlSequenceParserc                 ó|   — |dk    r|                      |j        d ¦  «         d S |                     |dz   ¦  «         d S )Nr  ó   A)r   rÈ   r   ©r,   ÚprotoÚhandlerr  s       r   ÚAz&ServerProtocol.ControlSequenceParser.A,  sG   € Ø�hŠˆØ×)Ò)¨%¬.¸$Ñ?Ô?Ð?Ð?Ð?à×0Ò0°°t±Ñ<Ô<Ð<Ð<Ð<r   c                 ó|   — |dk    r|                      |j        d ¦  «         d S |                     |dz   ¦  «         d S )Nr  ó   B)r   rÉ   r   r(  s       r   ÚBz&ServerProtocol.ControlSequenceParser.B2  óH   € Ø�hŠˆØ×)Ò)¨%Ô*:¸DÑAÔAÐAÐAÐAà×0Ò0°°t±Ñ<Ô<Ð<Ð<Ð<r   c                 ó|   — |dk    r|                      |j        d ¦  «         d S |                     |dz   ¦  «         d S )Nr  ó   C)r   rÊ   r   r(  s       r   ÚCz&ServerProtocol.ControlSequenceParser.C8  sH   € Ø�hŠˆØ×)Ò)¨%Ô*;¸TÑBÔBÐBÐBÐBà×0Ò0°°t±Ñ<Ô<Ð<Ð<Ð<r   c                 ó|   — |dk    r|                      |j        d ¦  «         d S |                     |dz   ¦  «         d S )Nr  ó   D)r   rË   r   r(  s       r   ÚDz&ServerProtocol.ControlSequenceParser.D>  r/  r   c                 ó|   — |dk    r|                      |j        d ¦  «         d S |                     |dz   ¦  «         d S )Nr  ó   E)r   rÒ   r   r(  s       r   ÚEz&ServerProtocol.ControlSequenceParser.ED  sH   € Ø�hŠˆØ×)Ò)¨%Ô*=¸tÑDÔDÐDÐDÐDà×0Ò0°°t±Ñ<Ô<Ð<Ð<Ð<r   c                 ó|   — |dk    r|                      |j        d ¦  «         d S |                     |dz   ¦  «         d S )Nr  ó   F)r   rÏ   r   r(  s       r   ÚFz&ServerProtocol.ControlSequenceParser.FJ  sG   € Ø�hŠˆØ×)Ò)¨%¬)°TÑ:Ô:Ð:Ð:Ð:à×0Ò0°°t±Ñ<Ô<Ð<Ð<Ð<r   c                 ó|   — |dk    r|                      |j        d ¦  «         d S |                     |dz   ¦  «         d S )Nr  ó   H)r   rÌ   r   r(  s       r   ÚHz&ServerProtocol.ControlSequenceParser.HP  sG   € Ø�hŠˆØ×)Ò)¨%¬*°dÑ;Ô;Ð;Ð;Ð;à×0Ò0°°t±Ñ<Ô<Ð<Ð<Ð<r   c                 óF  — |j         s|                     |dz   ¦  «         d S |                     d¦  «        rÒ|dd …         }|                     d¦  «        }t	          |¦  «        dk    r|                     |dz   ¦  «         d S |\  }}	 t          |¦  «        t          |¦  «        }}|j                              d¦  «        }|                     |dz
  |dz
  f¦  «         d S # t          $ r |                     |dz   ¦  «         Y d S w xY w|                     |dz   ¦  «         d S )Nr!  r  r™   ó   ;r   r7   )	rõ   r   Ú
startswithÚsplitÚlenÚintÚpopÚcallbackr  )	r,   r)  r*  r  ÚreportÚpartsÚPlÚPcÚds	            r   ÚRz&ServerProtocol.ControlSequenceParser.RV  sL  € ØÔ'ð =Ø×0Ò0°°t±Ñ<Ô<Ð<Ð<Ð<Ø—’ Ñ)Ô)ð =Ø˜Q˜R˜Rœ�ØŸš TÑ*Ô*�Ý�u‘:”: ’?�?Ø×4Ò4°S¸4±ZÑ@Ô@Ð@Ð@Ð@à"‘F�B˜ð5Ý!$ R¡¤­#¨b©'¬'˜B˜ð "Ô0×4Ò4°QÑ7Ô7˜ØŸ
š
 B¨¡F¨B°©FÐ#3Ñ4Ô4Ð4Ð4Ð4øõ	 &ð Eð Eð EØ×8Ò8¸¸t¹ÑDÔDÐDÐDÐDÐDðEøøøð ×0Ò0°°t±Ñ<Ô<Ð<Ð<Ð<s   Â	C  Ã "DÄDc                 ó†   — |dk    r"|                      |j        |j        ¦  «         d S |                     |dz   ¦  «         d S )Nr  ó   Z)r   ÚTABrà   r   r(  s       r   ÚZz&ServerProtocol.ControlSequenceParser.Zj  sI   € Ø�hŠˆØ×)Ò)¨%¬)°U´[ÑAÔAÐAÐAÐAà×0Ò0°°t±Ñ<Ô<Ð<Ð<Ð<r   c                 ó2  — |j         |j        |j        |j        |j        |j        |j        |j        |j        |j	        |j
        |j        |j        |j        dœ}|                     d¦  «        r’|dd …         }	 t          |¦  «        }|                     |¦  «        }|�|                     ||         d ¦  «         d S |                     |dz   ¦  «         d S # t&          $ r |                     |dz   ¦  «         Y d S w xY w|                     |dz   ¦  «         d S )N)r7   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Þ   rA  rD  r  r   r   r  )r,   r)  r*  r  Úmapr  ÚvÚsymbolics           r   Útildez*ServerProtocol.ControlSequenceParser.tildep  s?  € à”:Ø”<Ø”<Ø”9Ø”:Ø”:Ø”HØ”HØ”HØ”HØ”HØ”IØ”IØ”Iðð ˆCð" �~Š~˜hÑ'Ô'ð =Ø˜˜˜”W�ð	EÝ˜B™œ�Að  #Ÿwšw q™zœz�HØÐ+Ø×1Ò1°#°a´&¸$Ñ?Ô?Ð?Ð?Ð?à×8Ò8¸¸t¹ÑDÔDÐDÐDÐDøõ "ð Að Að AØ×4Ò4°S¸4±ZÑ@Ô@Ð@Ð@Ð@Ð@ðAøøøð ×0Ò0°°t±Ñ<Ô<Ð<Ð<Ð<s   Á8C Ã"C<Ã;C<N)r#   r$   r%   r+  r.  r2  r5  r8  r;  r>  rL  rP  rY  r   r   r   ÚControlSequenceParserr%  +  sª   € € € € € ð	=ð 	=ð 	=ð	=ð 	=ð 	=ð	=ð 	=ð 	=ð	=ð 	=ð 	=ð	=ð 	=ð 	=ð	=ð 	=ð 	=ð	=ð 	=ð 	=ð	=ð 	=ð 	=ð(	=ð 	=ð 	=ð	=ð 	=ð 	=ð 	=ð 	=r   rZ  r7   c                 ó–   — |dk    sJ ‚t          | j        j        |z
  d¦  «        | j        _        |                      d|fz  ¦  «         d S )Nr7   r   s   [%dA©ÚmaxÚ	cursorPosr½   rÄ   ©r,   r:   s     r   r;   zServerProtocol.cursorUp”  óL   € Ø�AŠvˆvˆvˆvÝ˜tœ~Ô/°!Ñ3°QÑ7Ô7ˆŒÔØ�
Š
�; ! Ñ%Ñ&Ô&Ð&Ð&Ð&r   c                 ó°   — |dk    sJ ‚t          | j        j        |z   | j        j        dz
  ¦  «        | j        _        |                      d|fz  ¦  «         d S )Nr7   s   [%dB©Úminr^  r½   ÚtermSizerÄ   r_  s     r   r=   zServerProtocol.cursorDown™  óU   € Ø�AŠvˆvˆvˆvÝ˜tœ~Ô/°!Ñ3°T´]´_ÀqÑ5HÑIÔIˆŒÔØ�
Š
�; ! Ñ%Ñ&Ô&Ð&Ð&Ð&r   c                 ó°   — |dk    sJ ‚t          | j        j        |z   | j        j        dz
  ¦  «        | j        _        |                      d|fz  ¦  «         d S )Nr7   s   [%dC)rc  r^  r¼   rd  rÄ   r_  s     r   r?   zServerProtocol.cursorForwardž  re  r   c                 ó–   — |dk    sJ ‚t          | j        j        |z
  d¦  «        | j        _        |                      d|fz  ¦  «         d S )Nr7   r   s   [%dD)r]  r^  r¼   rÄ   r_  s     r   rA   zServerProtocol.cursorBackward£  r`  r   c                 óF   — |                       d|dz   |dz   fz  ¦  «         d S )Ns   [%d;%dHr7   ©rÄ   )r,   rC   rD   s      r   rE   zServerProtocol.cursorPosition¨  s,   € Ø�
Š
�> T¨A¡X¨v¸©zÐ$:Ñ:Ñ;Ô;Ð;Ð;Ð;r   c                 ó`   — dx| j         _        | j         _        |                      d¦  «         d S )Nr   s   [H)r^  r¼   r½   rÄ   r.   s    r   rG   zServerProtocol.cursorHome«  s.   € Ø./Ð/ˆŒÔ˜4œ>Ô+Ø�
Š
�9ÑÔÐÐÐr   c                 ó˜   — t          | j        j        dz   | j        j        dz
  ¦  «        | j        _        |                      d¦  «         d S )Nr7   s   Drb  r.   s    r   rI   zServerProtocol.index¯  sA   € å˜tœ~Ô/°!Ñ3°T´]´_ÀqÑ5HÑIÔIˆŒÔØ�
Š
�8ÑÔÐÐÐr   c                 ó~   — t          | j        j        dz
  d¦  «        | j        _        |                      d¦  «         d S )Nr7   r   s   Mr\  r.   s    r   rK   zServerProtocol.reverseIndex´  s8   € Ý˜tœ~Ô/°!Ñ3°QÑ7Ô7ˆŒÔØ�
Š
�8ÑÔÐÐÐr   c                 ó°   — d| j         _        t          | j         j        dz   | j        j        dz
  ¦  «        | j         _        |                      d¦  «         d S )Nr   r7   ó   
)r^  r¼   rc  r½   rd  rÄ   r.   s    r   rM   zServerProtocol.nextLine¸  sK   € ØˆŒÔÝ˜tœ~Ô/°!Ñ3°T´]´_ÀqÑ5HÑIÔIˆŒÔØ�
Š
�5ÑÔÐÐÐr   c                 ó‚   — t          | j        j        | j        j        ¦  «        | _        |                      d¦  «         d S )Ns   7)rº   r^  r¼   r½   Ú_savedCursorPosrÄ   r.   s    r   rO   zServerProtocol.saveCursor½  s6   € Ý% d¤nÔ&6¸¼Ô8HÑIÔIˆÔØ�
Š
�8ÑÔÐÐÐr   c                 óL   — | j         | _        | ` |                      d¦  «         d S )Ns   8)rp  r^  rÄ   r.   s    r   rQ   zServerProtocol.restoreCursorÁ  s*   € ØÔ-ˆŒØÐ Ø�
Š
�8ÑÔÐÐÐr   c                 óz   — d                      d„ |D ¦   «         ¦  «        }|                      d|z   dz   ¦  «         d S )Nr@  c              3   ó"   K  — | ]
}d |fz  V — ŒdS ©ó   %dNr   ©rç   rW   s     r   ú	<genexpr>z*ServerProtocol.setModes.<locals>.<genexpr>È  ó(   è è € ÐAÐA°4˜u¨ w™ÐAÐAÐAÐAÐAÐAr   r  ó   h©r  rÄ   ©r,   rT   Ú
modesBytess      r   rU   zServerProtocol.setModesÆ  óD   € à—Y’YÐAÐA¸5ÐAÑAÔAÑAÔAˆ
Ø�
Š
�8˜jÑ(¨4Ñ/Ñ0Ô0Ð0Ð0Ð0r   c                 óz   — d                      d„ |D ¦   «         ¦  «        }|                      d|z   dz   ¦  «         d S )Nr@  c              3   ó"   K  — | ]
}d |fz  V — ŒdS rt  r   rv  s     r   rw  z1ServerProtocol.setPrivateModes.<locals>.<genexpr>Ì  rx  r   ó   [?ry  rz  r{  s      r   rZ   zServerProtocol.setPrivateModesË  óD   € Ø—Y’YÐAÐA¸5ÐAÑAÔAÑAÔAˆ
Ø�
Š
�9˜zÑ)¨DÑ0Ñ1Ô1Ð1Ð1Ð1r   c                 óz   — d                      d„ |D ¦   «         ¦  «        }|                      d|z   dz   ¦  «         d S )Nr@  c              3   ó"   K  — | ]
}d |fz  V — ŒdS rt  r   rv  s     r   rw  z,ServerProtocol.resetModes.<locals>.<genexpr>Ñ  rx  r   r  ó   lrz  r{  s      r   rX   zServerProtocol.resetModesÏ  r}  r   c                 óz   — d                      d„ |D ¦   «         ¦  «        }|                      d|z   dz   ¦  «         d S )Nr@  c              3   ó"   K  — | ]
}d |fz  V — ŒdS rt  r   rv  s     r   rw  z3ServerProtocol.resetPrivateModes.<locals>.<genexpr>Õ  rx  r   r€  r„  rz  r{  s      r   r\   z ServerProtocol.resetPrivateModesÔ  r�  r   c                 ó0   — |                       d¦  «         d S )Ns   =ri  r.   s    r   r^   z$ServerProtocol.applicationKeypadModeØ  ó   € Ø�
Š
�8ÑÔÐÐÐr   c                 ó0   — |                       d¦  «         d S )Ns   >ri  r.   s    r   r`   z ServerProtocol.numericKeypadModeÛ  rˆ  r   c                 ó<  — |t           k    rd}n|t          k    rd}nt          d¦  «        ‚|t          k    rd}nG|t          k    rd}n9|t
          k    rd}n+|t          k    rd}n|t          k    rd}nt          d	¦  «        ‚|                      d
|z   |z   ¦  «         d S )Nó   (ó   )z7`which' argument to selectCharacterSet must be G0 or G1r'  r-  ó   0ó   1ó   2z0Invalid `charSet' argument to selectCharacterSetr–   )	ÚG0ÚG1r  ÚCS_UKÚCS_USÚ
CS_DRAWINGÚCS_ALTERNATEÚCS_ALTERNATE_SPECIALrÄ   )r,   rb   rc   s      r   rd   z!ServerProtocol.selectCharacterSetÞ  s¼   € à•BŠ;ˆ;ØˆEˆEØ•bŠ[ˆ[ØˆEˆEåÐVÑWÔWÐWØ•eÒÐØˆGˆGØ�ÒÐØˆGˆGØ�
Ò"Ð"ØˆGˆGØ�Ò$Ð$ØˆGˆGØÕ,Ò,Ð,ØˆGˆGåÐOÑPÔPÐPØ�
Š
�7˜U‘? WÑ,Ñ-Ô-Ð-Ð-Ð-r   c                 ó0   — |                       d¦  «         d S )Nó   ri  r.   s    r   rf   zServerProtocol.shiftInô  ó   € Ø�
Š
�7ÑÔÐÐÐr   c                 ó0   — |                       d¦  «         d S )Nó   ri  r.   s    r   rh   zServerProtocol.shiftOut÷  r™  r   c                 ó0   — |                       d¦  «         d S )Ns   Nri  r.   s    r   rj   zServerProtocol.singleShift2ú  rˆ  r   c                 ó0   — |                       d¦  «         d S )Ns   Ori  r.   s    r   rl   zServerProtocol.singleShift3ý  rˆ  r   c                 ó´   — g }|D ]$}|                      t          |¦  «        ¦  «         Œ%|                      dd                     |¦  «        z   dz   ¦  «         d S )Nr  r@  ó   m)r  r	   rÄ   r  )r,   rn   ÚattrsrÁ   s       r   ro   z%ServerProtocol.selectGraphicRendition   sa   € àˆØð 	+ð 	+ˆAØ�LŠL� qÑ)Ô)Ñ*Ô*Ð*Ð*Ø�
Š
�8˜dŸiši¨Ñ.Ô.Ñ.°Ñ5Ñ6Ô6Ð6Ð6Ð6r   c                 ó0   — |                       d¦  «         d S )Ns   Hri  r.   s    r   rq   z&ServerProtocol.horizontalTabulationSet  rˆ  r   c                 ó0   — |                       d¦  «         d S )Ns   [qri  r.   s    r   rs   zServerProtocol.tabulationClear
  ó   € Ø�
Š
�9ÑÔÐÐÐr   c                 ó0   — |                       d¦  «         d S )Ns   [3qri  r.   s    r   ru   z!ServerProtocol.tabulationClearAll  ó   € Ø�
Š
�:ÑÔÐÐÐr   Tc                 ób   — |r|                       d¦  «         d S |                       d¦  «         d S )Ns   #3s   #4ri  )r,   rw   s     r   rx   zServerProtocol.doubleHeightLine  s:   € Øð 	"Ø�JŠJ�yÑ!Ô!Ð!Ð!Ð!à�JŠJ�yÑ!Ô!Ð!Ð!Ð!r   c                 ó0   — |                       d¦  «         d S )Ns   #5ri  r.   s    r   rz   zServerProtocol.singleWidthLine  r£  r   c                 ó0   — |                       d¦  «         d S )Ns   #6ri  r.   s    r   r|   zServerProtocol.doubleWidthLine  r£  r   c                 ó0   — |                       d¦  «         d S )Ns   [Kri  r.   s    r   r~   zServerProtocol.eraseToLineEnd  r£  r   c                 ó0   — |                       d¦  «         d S )Ns   [1Kri  r.   s    r   r€   z#ServerProtocol.eraseToLineBeginning  r¥  r   c                 ó0   — |                       d¦  «         d S )Ns   [2Kri  r.   s    r   r‚   zServerProtocol.eraseLine"  r¥  r   c                 ó0   — |                       d¦  «         d S )Ns   [Jri  r.   s    r   r„   z ServerProtocol.eraseToDisplayEnd%  r£  r   c                 ó0   — |                       d¦  «         d S )Ns   [1Jri  r.   s    r   r†   z&ServerProtocol.eraseToDisplayBeginning(  r¥  r   c                 ó0   — |                       d¦  «         d S )Ns   [2Jri  r.   s    r   rˆ   zServerProtocol.eraseDisplay+  r¥  r   c                 ó8   — |                       d|fz  ¦  «         d S )Ns   [%dPri  r_  s     r   rŠ   zServerProtocol.deleteCharacter.  ó!   € Ø�
Š
�; ! Ñ%Ñ&Ô&Ð&Ð&Ð&r   c                 ó8   — |                       d|fz  ¦  «         d S )Ns   [%dLri  r_  s     r   rŒ   zServerProtocol.insertLine1  r°  r   c                 ó8   — |                       d|fz  ¦  «         d S )Ns   [%dMri  r_  s     r   rŽ   zServerProtocol.deleteLine4  r°  r   c                 óf   — |�d|fz  }nd}|�d|fz  }nd}|                       d||fz  ¦  «         d S )Nru  r   s   [%b;%brri  )r,   ÚfirstÚlasts      r   ÚsetScrollRegionzServerProtocol.setScrollRegion7  sT   € ØÐØ˜U˜HÑ$ˆEˆEàˆEØÐØ˜D˜7‘?ˆDˆDàˆDØ�
Š
�> U¨D MÑ1Ñ2Ô2Ð2Ð2Ð2r   c                 ó.   — |                       ¦   «          d S r)   )r¶  r.   s    r   ÚresetScrollRegionz ServerProtocol.resetScrollRegionB  s   € Ø×ÒÑÔÐÐÐr   c                 óŠ   — t          j        ¦   «         }| j                             |¦  «         |                      d¦  «         |S )Ns   [6n)r   ÚDeferredrõ   r  rÄ   )r,   rK  s     r   r�   z#ServerProtocol.reportCursorPositionE  s=   € ÝŒNÑÔˆØÔ×"Ò" 1Ñ%Ô%Ð%Ø�
Š
�:ÑÔÐØˆr   c                 óˆ   — dx| j         _        | j         _        	 | `n# t          $ r Y nw xY w|                      d¦  «         d S )Nr   s   c)r^  r¼   r½   rp  r  rÄ   r.   s    r   r’   zServerProtocol.resetK  s\   € Ø./Ð/ˆŒÔ˜4œ>Ô+ð	ØÐ$Ð$øÝð 	ð 	ð 	ØˆDð	øøøà�
Š
�8ÑÔÐÐÐs   š �
*©*c                 óð   — |rst          |t          ¦  «        s|                     d¦  «        }|| _        | j                             d                     |                     d¦  «        ¦  «        ¦  «         d S d S )Nzutf-8s   
rn  )Ú
isinstanceÚbytesræ   Ú	lastWriter   rÄ   r  rB  ©r,   r  s     r   rÄ   zServerProtocol.writeT  su   € Øð 	BÝ˜d¥EÑ*Ô*ð ,Ø—{’{ 7Ñ+Ô+�Ø!ˆDŒNØŒN× Ò  §¢¨d¯jªj¸Ñ.?Ô.?Ñ!@Ô!@ÑAÔAÐAÐAÐAð		Bð 	Br   c                 óV   — |                       d                     |¦  «        ¦  «         d S )Nr   )rÄ   r  rÀ  s     r   ÚwriteSequencezServerProtocol.writeSequence[  s$   € Ø�
Š
�3—8’8˜D‘>”>Ñ"Ô"Ð"Ð"Ð"r   c                 ó`   — |                       ¦   «          | j                             ¦   «          d S r)   )r’   r   ÚloseConnectionr.   s    r   rÄ  zServerProtocol.loseConnection^  s)   € Ø�
Š
‰ŒˆØŒ×%Ò%Ñ'Ô'Ð'Ð'Ð'r   c                 ót   — | j         �0	 | j                              |¦  «         d | _         d S # d | _         w xY wd S r)   )rÿ   r"   r4   s     r   r"   zServerProtocol.connectionLostb  sQ   € ØÔ Ð,ð-ØÔ%×4Ò4°VÑ<Ô<Ð<à(,�Ô%Ð%Ð%ø¨�Ô%Ð,Ð,Ð,Ð,ð	 -Ð,s   ‰, ¬	5r)   r”   r•   )NN)Gr#   r$   r%   rò   rÿ   rO  Ú	BACKSPACEr¿  r  rº   rd  r^  ÚscrollRegionr   r¾   rú   rý   r+   r  r	  r  r   r  rZ  r  r;   r=   r?   rA   rE   rG   rI   rK   rM   rO   rQ   rU   rZ   rX   r\   r^   r`   rd   rf   rh   rj   rl   ro   rq   rs   ru   rx   rz   r|   r~   r€   r‚   r„   r†   rˆ   rŠ   rŒ   rŽ   r¶  r¸  r�   r’   rÄ   rÂ  rÄ  r"   r   r   r   rë   rë   µ  s  € € € € € à€OØÐà
€CØ€Ið €Ià€Eàˆv�b˜"‰~Œ~€HØ��q˜!‘”€IØ€Lð €Gð!ð !ð !ð !ð$Kð Kð KðKð Kð Kð7ð 7ð 7ð2ð 2ð 2ð>>ð >ð >ð
5ð 
5ð 
5ð<ð <ð <ðKð Kð Kðd=ð d=ð d=ð d=ð d=ñ d=ô d=ð d=ðL 2Ð1Ñ3Ô3Ðð'ð 'ð 'ð 'ð
'ð 'ð 'ð 'ð
'ð 'ð 'ð 'ð
'ð 'ð 'ð 'ð
<ð <ð <ðð ð ðð ð ð
ð ð ðð ð ð
ð ð ðð ð ð
1ð 1ð 1ð
2ð 2ð 2ð1ð 1ð 1ð
2ð 2ð 2ðð ð ðð ð ð.ð .ð .ð,ð ð ðð ð ðð ð ðð ð ð7ð 7ð 7ðð ð ðð ð ðð ð ð"ð "ð "ð "ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ðð ð ð'ð 'ð 'ð 'ð'ð 'ð 'ð 'ð'ð 'ð 'ð 'ð	3ð 	3ð 	3ð 	3ðð ð ðð ð ðð ð ðBð Bð Bð#ð #ð #ð(ð (ð (ð-ð -ð -ð -ð -r   rë   c                   ó°   — e Zd ZdZdZdZdZddddddd	d
ddddœZdddddœZe	e
eeedœZdZdd„Zd„ Zd„ Zd„ Zd„ Z G d„ d¦  «        Z e¦   «         Zd„ ZdS )ÚClientProtocolNrî   s   indexs   reverseIndexs   nextLines
   saveCursors   restoreCursors   applicationKeypadModes   numericKeypadModes   singleShift2s   singleShift3s   horizontalTabulationSets   reset)r4  ó   Mr7  ó   7ó   8ó   =ó   >ó   Nr  r=  ó   có   bracket-escapeó	   select-g0ó	   select-g1ó   select-height-width)r  r‹  rŒ  ó   #)r'  r-  r�  rŽ  r�  c                 ó4   — |�|| _         || _        || _        dS )aw  
        @param terminalFactory: A callable which will be invoked with
        *a, **kw and should return an ITerminalTransport provider.
        This will be invoked when this ClientProtocol establishes a
        connection.

        @param a: Any positional arguments to pass to terminalFactory.
        @param kw: Any keyword arguments to pass to terminalFactory.
        N)ÚterminalFactoryÚterminalArgsÚterminalKwArgs)r,   r×  rÁ   rö   s       r   r¾   zClientProtocol.__init__—  s(   € ð Ð&Ø#2ˆDÔ ØˆÔØ ˆÔÐÐr   c                 ó¦   — | j         �I | j         | j        i | j        ¤Ž| _        | j        | j        _        | j                             | ¦  «         d S d S r)   )r×  rØ  rÙ  r*   r   r   r.   s    r   r+   zClientProtocol.connectionMade§  sd   € ØÔÐ+Ø0˜DÔ0ØÔ"ðØ&*Ô&9ðð ˆDŒMð %)¤LˆDŒMÔ!ØŒM×(Ò(¨Ñ.Ô.Ð.Ð.Ð.ð ,Ð+r   c                 ó`   — | j         �&	 | j                              |¦  «         | ` d S # | ` w xY wd S r)   )r*   r"   r4   s     r   r"   zClientProtocol.connectionLost¯  sG   € ØŒ=Ð$ð"Ø”×,Ò,¨VÑ4Ô4Ð4à�M�M�Mø�D�MÐ!Ð!Ð!Ð!ð	 %Ð$s   ‰' §+c                 ó^  — g }t          |¦  «        D �]h}| j        dk    �rV|dk    r<|r2| j                             d                     |¦  «        ¦  «         |dd…= d| _        ŒQ|dk    rN|r2| j                             d                     |¦  «        ¦  «         |dd…= | j                             ¦   «          Œ¥|dk    rN|r2| j                             d                     |¦  «        ¦  «         |dd…= | j                             ¦   «          Œù|dk    rO|r2| j                             d                     |¦  «        ¦  «         |dd…= | j                             ¦   «          �ŒN|                     |¦  «         �Œe| j        dk    r | j	         
                    |¦  «        }|�9d| _         t          | j        |                     d	¦  «        ¦  «        ¦   «          �ŒÅ| j         
                    |¦  «        }|�	|| _        �Œê| j                             d|z   ¦  «         d| _        �Œ| j        d
k    r}| j        €g | _        |                     ¦   «         s|dk    r9|                      d                     | j        ¦  «        |¦  «         | `d| _        �Œ|| j                             |¦  «         �Œ˜| j        dk    rB| j                             | j         
                    ||¦  «        t(          ¦  «         d| _        �Œå| j        dk    rB| j                             | j         
                    ||¦  «        t*          ¦  «         d| _        �Œ2| j        dk    r|                      |¦  «         d| _        �Œ[t/          d¦  «        ‚|r/| j                             d                     |¦  «        ¦  «         dS dS )z�
        Parse the given data from a terminal server, dispatching to event
        handlers defined by C{self.terminal}.
        rî   r–   r   Nr  r›  r˜  ó   rå   rÑ  r—   rÒ  rÓ  rÔ  r  )r   r  r*   rÄ   r  rh   rf   rA   r  Ú_shortsr  r  r  Ú_longsr   Ú_escBufr
  r  rd   Ú	_charsetsr�  r‘  Ú_handleHeightWidthr  )r,   r  ÚtoWriteÚbÚfNamer  s         r   r  zClientProtocol.dataReceived¶  s–  € ð
 ˆÝ˜4‘”ð 7	2ñ 7	2ˆAØŒz˜WÒ$Ñ$Ø˜’<�<Øð 'Øœ×+Ò+¨C¯HªH°WÑ,=Ô,=Ñ>Ô>Ð>Ø# A A A˜JØ!+�D”J�JØ˜'’\�\Øð 'Øœ×+Ò+¨C¯HªH°WÑ,=Ô,=Ñ>Ô>Ð>Ø# A A A˜JØ”M×*Ò*Ñ,Ô,Ð,Ð,Ø˜'’\�\Øð 'Øœ×+Ò+¨C¯HªH°WÑ,=Ô,=Ñ>Ô>Ð>Ø# A A A˜JØ”M×)Ò)Ñ+Ô+Ð+Ð+Ø˜'’\�\Øð 'Øœ×+Ò+¨C¯HªH°WÑ,=Ô,=Ñ>Ô>Ð>Ø# A A A˜JØ”M×0Ò0Ñ2Ô2Ð2Ñ2à—N’N 1Ñ%Ô%Ð%Ñ%Ø”˜zÒ)Ð)Øœ×(Ò(¨Ñ+Ô+�ØÐ$Ø!(�D”JØA•G˜DœM¨5¯<ª<¸Ñ+@Ô+@ÑAÔAÑCÔCÐCÑCà œKŸOšO¨AÑ.Ô.�EØÐ(Ø%*˜œ
™
àœ×>Ò>¸wÈ¹{ÑKÔKÐKØ%,˜œ
™
Ø”Ð0Ò0Ð0Ø”<Ð'Ø#%�D”LØ—9’9‘;”;ð + ! t¢) )Ø×/Ò/°·²¸¼Ñ0FÔ0FÈÑJÔJÐJØ˜Ø!(�D”J‘Jà”L×'Ò'¨Ñ*Ô*Ð*Ñ*Ø”˜|Ò+Ð+Ø”×0Ò0°´×1CÒ1CÀAÀqÑ1IÔ1IÍ2ÑNÔNÐNØ$�”
‘
Ø”˜|Ò+Ð+Ø”×0Ò0°´×1CÒ1CÀAÀqÑ1IÔ1IÍ2ÑNÔNÐNØ$�”
‘
Ø”Ð5Ò5Ð5Ø×'Ò'¨Ñ*Ô*Ð*Ø$�”
‘
å  Ñ1Ô1Ð1Øð 	3ØŒM×Ò §¢¨Ñ 1Ô 1Ñ2Ô2Ð2Ð2Ð2ð	3ð 	3r   c                 óö   — t          | j        t                               ||¦  «                             d¦  «        d ¦  «        }|€"| j                             d|z   |z   ¦  «         d S  || | j        |¦  «         d S )Nrå   r  )r  r  r  r  r  r*   r   )r,   r  r*   rÇ   s       r   r  z%ClientProtocol._handleControlSequence÷  s�   € ÝØÔ&Ý�GŠG�H˜hÑ'Ô'×.Ò.¨wÑ7Ô7Øñ
ô 
ˆð
 ˆ9ØŒM×2Ò2°8¸c±>ÀHÑ3LÑMÔMÐMÐMÐMàˆAˆd�D”M 3Ñ'Ô'Ð'Ð'Ð'r   c                   ó„   — e Zd Zd„ ZdD ]\  ZZ eedz   ¦  «         Œ[d„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )ú$ClientProtocol.ControlSequenceParserc                 ó    ‡ ‡— d|z   Šˆ ˆfd„}|S )NÚcursorc                 óì   •— |s t          |‰¦  «        d¦  «         d S 	 t          |¦  «        } t          |‰¦  «        |¦  «         d S # t          $ r |                     d|z   ‰z   ¦  «         Y d S w xY w)Nr7   r  )r  rD  r  r   )r,   r)  r*  r  Úmr  r:   s        €€r   Úsimplez@ClientProtocol.ControlSequenceParser._makeSimple.<locals>.simple  s¤   ø€ Øð /Ø'•G˜G QÑ'Ô'¨Ñ*Ô*Ð*Ð*Ð*ð/Ý ™HœH˜ð ,� ¨Ñ+Ô+¨AÑ.Ô.Ð.Ð.Ð.øõ &ð Nð Nð NØ×8Ò8¸ÀC¹È"Ñ9LÑMÔMÐMÐMÐMÐMðNøøøs    A
 Á
%A3Á2A3r   )r  rå  rí  r:   s   `  @r   Ú_makeSimplez0ClientProtocol.ControlSequenceParser._makeSimple  s3   øø€ Ø˜5Ñ ˆAð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð ˆMr   ))r+  ÚUp)r.  ÚDown)r2  ÚForward)r5  ÚBackwardz = _makeSimple(ch, fName)c                 óÈ   — 	 d„ |                      d¦  «        D ¦   «         }|                     |¦  «         d S # t          $ r |                     d|z   dz   ¦  «         Y d S w xY w)Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r   ©rD  rv  s     r   ré   z:ClientProtocol.ControlSequenceParser.h.<locals>.<listcomp>  ó   € Ð?Ð?Ð? t�˜T™œÐ?Ð?Ð?r   r@  r  ry  )rB  rU   r  r   ©r,   r)  r*  r  rT   s        r   Úhz&ClientProtocol.ControlSequenceParser.h  s‡   € ð(Ø?Ð?¨s¯yªy¸©¬Ð?Ñ?Ô?�ð × Ò  Ñ'Ô'Ð'Ð'Ð'øõ ð Hð Hð HØ×0Ò0°¸C±À$Ñ1FÑGÔGÐGÐGÐGÐGðHøøøó   ‚8 ¸%A!Á A!c                 óÈ   — 	 d„ |                      d¦  «        D ¦   «         }|                     |¦  «         d S # t          $ r |                     d|z   dz   ¦  «         Y d S w xY w)Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r   rõ  rv  s     r   ré   z:ClientProtocol.ControlSequenceParser.l.<locals>.<listcomp>(  rö  r   r@  r  Úl)rB  rX   r  r   r÷  s        r   rü  z&ClientProtocol.ControlSequenceParser.l%  s‡   € ð*Ø?Ð?¨s¯yªy¸©¬Ð?Ñ?Ô?�ð ×"Ò" 5Ñ)Ô)Ð)Ð)Ð)øõ ð Gð Gð GØ×0Ò0°¸C±À#Ñ1EÑFÔFÐFÐFÐFÐFðGøøørù  c                 óì  — |                      d¦  «        }t          |¦  «        dk    r|                     d d ¦  «         d S t          |¦  «        dk    r…	 |d         rt          |d         ¦  «        }nd }|d         rt          |d         ¦  «        }nd }|                     ||¦  «         d S # t          $ r |                     d|z   dz   ¦  «         Y d S w xY w|                     d|z   dz   ¦  «         d S )Nr@  r7   r™   r   r  ó   r)rB  rC  r¶  rD  r  r   )r,   r)  r*  r  rH  ÚptÚpbs          r   Úrz&ClientProtocol.ControlSequenceParser.r.  s  € Ø—I’I˜d‘O”OˆEÝ�5‰zŒz˜QŠˆØ×'Ò'¨¨dÑ3Ô3Ð3Ð3Ð3Ý�U‘”˜q’�ð4Ø˜Q”xð "Ý   q¤™]œ]˜˜à!˜Ø˜Q”xð "Ý   q¤™]œ]˜˜à!˜ð ×+Ò+¨B°Ñ3Ô3Ð3Ð3Ð3øõ "ð Lð Lð LØ×4Ò4°XÀ±^ÀdÑ5JÑKÔKÐKÐKÐKÐKðLøøøð
 ×0Ò0°¸C±À$Ñ1FÑGÔGÐGÐGÐGs   ÁA B- Â-%CÃCc                 óÜ   — |s|                      ¦   «          d S |dk    r|                     ¦   «          d S |dk    r|                     ¦   «          d S |                     d|z   dz   ¦  «         d S )NrŽ  r�  r  ó   K)r~   r€   r‚   r   r(  s       r   ÚKz&ClientProtocol.ControlSequenceParser.KC  sˆ   € Øð HØ×&Ò&Ñ(Ô(Ð(Ð(Ð(Ø˜’�Ø×,Ò,Ñ.Ô.Ð.Ð.Ð.Ø˜’�Ø×!Ò!Ñ#Ô#Ð#Ð#Ð#à×0Ò0°¸C±À$Ñ1FÑGÔGÐGÐGÐGr   c                 ó.   — |                      ¦   «          d S r)   )rG   r(  s       r   r>  z&ClientProtocol.ControlSequenceParser.HM  s   € Ø×ÒÑ Ô Ð Ð Ð r   c                 óÜ   — |s|                      ¦   «          d S |dk    r|                     ¦   «          d S |dk    r|                     ¦   «          d S |                     d|z   dz   ¦  «         d S )NrŽ  r�  r  ó   J)r„   r†   rˆ   r   r(  s       r   ÚJz&ClientProtocol.ControlSequenceParser.JP  sˆ   € Øð HØ×)Ò)Ñ+Ô+Ð+Ð+Ð+Ø˜’�Ø×/Ò/Ñ1Ô1Ð1Ð1Ð1Ø˜’�Ø×$Ò$Ñ&Ô&Ð&Ð&Ð&à×0Ò0°¸C±À$Ñ1FÑGÔGÐGÐGÐGr   c                 óÚ   — |s|                      d¦  «         d S 	 t          |¦  «        }|                      |¦  «         d S # t          $ r |                     d|z   dz   ¦  «         Y d S w xY w)Nr7   r  r  )rŠ   rD  r  r   ©r,   r)  r*  r  r:   s        r   ÚPz&ClientProtocol.ControlSequenceParser.PZ  s—   € Øð /Ø×'Ò'¨Ñ*Ô*Ð*Ð*Ð*ð/Ý˜C™œ�Að ×+Ò+¨AÑ.Ô.Ð.Ð.Ð.øõ "ð Lð Lð LØ×4Ò4°XÀ±^ÀdÑ5JÑKÔKÐKÐKÐKÐKðLøøøó   ›A Á%A*Á)A*c                 óÚ   — |s|                      d¦  «         d S 	 t          |¦  «        }|                      |¦  «         d S # t          $ r |                     d|z   dz   ¦  «         Y d S w xY w)Nr7   r  ó   L)rŒ   rD  r  r   r
  s        r   ÚLz&ClientProtocol.ControlSequenceParser.Le  ó—   € Øð *Ø×"Ò" 1Ñ%Ô%Ð%Ð%Ð%ð*Ý˜C™œ�Að ×&Ò& qÑ)Ô)Ð)Ð)Ð)øõ "ð Lð Lð LØ×4Ò4°XÀ±^ÀdÑ5JÑKÔKÐKÐKÐKÐKðLøøør  c                 óÚ   — |s|                      d¦  «         d S 	 t          |¦  «        }|                      |¦  «         d S # t          $ r |                     d|z   dz   ¦  «         Y d S w xY w)Nr7   r  rÊ  )rŽ   rD  r  r   r
  s        r   ÚMz&ClientProtocol.ControlSequenceParser.Mp  r  r  c                 óÄ   — |dk    r>|                      ¦   «         \  }}|j                             d|dz   |dz   fz  ¦  «         d S |                     d|z   dz   ¦  «         d S )Nó   6s   [%d;%dRr7   r  ó   n)r�   r   rÄ   r   )r,   r)  r*  r  r¼   r½   s         r   r:   z&ClientProtocol.ControlSequenceParser.n{  sp   € Ø�dŠ{ˆ{Ø×3Ò3Ñ5Ô5‘��1Ø”×%Ò% n¸¸A¹¸qÀ1¹u°~Ñ&EÑFÔFÐFÐFÐFà×0Ò0°¸C±À$Ñ1FÑGÔGÐGÐGÐGr   c                 óö   — |s|                      t          ¦  «         d S g }|                     d¦  «        D ]8}	 t          |¦  «        }n# t          $ r Y nw xY w|                     |¦  «         Œ9 |j         |Ž  d S )Nr@  )ro   ÚNORMALrB  rD  r  r  )r,   r)  r*  r  r   rÁ   s         r   rì  z&ClientProtocol.ControlSequenceParser.m‚  s›   € Øð 
7Ø×.Ò.­vÑ6Ô6Ð6Ð6Ð6à�ØŸš 4™œð $ð $�AðÝ ™FœF˜˜øÝ%ð ð ð Ø˜ðøøøà—L’L ‘O”O�O�OØ.�Ô.°Ð6Ð6Ð6Ð6s   ¹A	Á	
AÁAN)r#   r$   r%   rî  r  rå  Úexecrø  rü  r  r  r>  r  r  r  r  r:   rì  r   r   r   rZ  rè    s  € € € € € ð	ð 	ð 	ð 
ð 	3ð 	3‰IˆB�ð ˆD�Ð1Ñ1Ñ2Ô2Ð2Ð2Øð	(ð 	(ð 	(ð	*ð 	*ð 	*ð	Hð 	Hð 	Hð*	Hð 	Hð 	Hð	!ð 	!ð 	!ð	Hð 	Hð 	Hð		/ð 		/ð 		/ð		*ð 		*ð 		*ð		*ð 		*ð 		*ð	Hð 	Hð 	Hð	7ð 	7ð 	7ð 	7ð 	7r   rZ  c                 óL  — |dk    r| j                              d¦  «         d S |dk    r| j                              d¦  «         d S |dk    r| j                              ¦   «          d S |dk    r| j                              ¦   «          d S | j                              d|z   ¦  «         d S )Nó   3Tó   4Fó   5r  s   #)r*   rx   rz   r|   r   )r,   rä  s     r   râ  z!ClientProtocol._handleHeightWidth‘  s²   € Ø�Š9ˆ9ØŒM×*Ò*¨4Ñ0Ô0Ð0Ð0Ð0Ø�$ŠYˆYØŒM×*Ò*¨5Ñ1Ô1Ð1Ð1Ð1Ø�$ŠYˆYØŒM×)Ò)Ñ+Ô+Ð+Ð+Ð+Ø�$ŠYˆYØŒM×)Ò)Ñ+Ô+Ð+Ð+Ð+àŒM×2Ò2°8¸a±<Ñ@Ô@Ð@Ð@Ð@r   r)   )r#   r$   r%   r×  r*   r  rà  rÞ  rß  r’  r“  r”  r•  r–  rá  r   r¾   r+   r"   r  r  rZ  r  râ  r   r   r   rÉ  rÉ  o  s<  € € € € € Ø€OØ€Hà€Eà€Gð ØØØØØ&Ø"ØØØ(Øðð €Gð  ØØØ$ð	ð €Fð ØØØØ"ðð €Ið €Gð!ð !ð !ð !ð /ð /ð /ð"ð "ð "ð?3ð ?3ð ?3ðB	(ð 	(ð 	(ðK7ð K7ð K7ð K7ð K7ñ K7ô K7ð K7ðZ 2Ð1Ñ3Ô3Ðð
Að 
Að 
Að 
Að 
Ar   rÉ  )r   r6   rT   r¤   ÚFUNCTION_KEYSr“  r’  r”  r•  r–  r�  r‘  ÚG2ÚG3Ú	UNDERLINEÚREVERSE_VIDEOÚBLINKÚBOLDr  rë   rÉ  N).rœ   Úzope.interfacer   r   Útwisted.internetr   r   Ú	iinternetr   Útwisted.python.compatr   r	   r   r'   Ú
ITransportr6   ÚCSIr  rT   r¤   r“  r’  r”  r•  r–  r�  r‘  r  r  r  r#  r   r"  r!  rº   rÀ   Ú
_KEY_NAMESr  ÚProtocolrë   ÚzipÚnameÚconstÚsetattrrÉ  Ú__all__r   r   r   ú<module>r1     sÝ  ðð
ð ð 2Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1Ð 1à EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ :Ð :Ð :Ð :Ð :Ð :Ð :Ð :ð&ð &ð &ð &ð &˜	ñ &ô &ð &ðR €ÐÑÔðð ð ð ð ñ ô ñ  Ôðð0eð eð eð eð e˜Ô-ñ eô eð eðP €ØˆXÐ€ð ð  ð  ð  ð  ñ  ô  ð  ð8ð ð ð ð ñ ô ð ð, 	€Ø€Ø€
Ø€Ø.Ð ð €Ø
€ð €Ø
€ð 
€Ø€Ø€	Ø	€Ø€ðð ð ð ð ñ ô ð ðð ð ð€
ð: GÐF¸:ÐFÑFÔF€ð €ÐÑ Ô ðq-ð q-ð q-ð q-ð q-�XÔ&ñ q-ô q-ñ !Ô ðq-ðj �3�z =Ñ1Ô1ð )ð )�K€Dˆ%Ø€GˆN˜D %Ñ(Ô(Ð(Ð(ðlAð lAð lAð lAð lA�XÔ&ñ lAô lAð lAð^	ð ð €€€r   