§
    s—Êi“w  ã                   óš  — d dl Z d dlmZ ddlmZ d dlZd dlmZmZ d dlm	Z	 ddl
mZmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ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*m+Z+m,Z,m-Z-m.Z. 	 d dlm/Z/ n# e0$ r dZ/Y nw xY wddgZ1 eej2        ¦  «         ed¦  «        k     Z3 G d„ de4¦  «        Z5 G d„ de4¦  «        Z6dS )é    N)ÚVersioné   )Úlogger)ÚCOM_BINLOG_DUMPÚCOM_REGISTER_SLAVE)Ú
DictCursor)ÚTABLE_MAP_EVENTÚROTATE_EVENTÚFORMAT_DESCRIPTION_EVENT)Ú
QueryEventÚRotateEventÚFormatDescriptionEventÚXidEventÚ	GtidEventÚ	StopEventÚXAPrepareEventÚBeginLoadQueryEventÚExecuteLoadQueryEventÚHeartbeatLogEventÚNotImplementedEventÚMariadbGtidEventÚMariadbAnnotateRowsEventÚ	RandEventÚMariadbStartEncryptionEventÚRowsQueryLogEventÚMariadbGtidListEventÚMariadbBinLogCheckPointEventÚUserVarEventÚPreviousGtidsEvent)ÚBinLogNotEnabled)ÚGtidSet)ÚBinLogPacketWrapper)ÚUpdateRowsEventÚWriteRowsEventÚDeleteRowsEventÚTableMapEventÚPartialUpdateRowsEvent)ÚCOM_BINLOG_DUMP_GTIDé   iÝ  iÖ  z0.6c                   ó6   — e Zd ZdZdZdZdZdZd„ Zd„ Z	dd„Z
dS )	ÚReportSlavezmRepresent the values that you may report when connecting as a slave
    to a master. SHOW SLAVE HOSTS relatedÚ r   c                 ó~  — t          |t          t          f¦  «        rU	 |d         | _        |d         | _        |d         | _        t          |d         ¦  «        | _        dS # t          $ r Y dS w xY wt          |t          ¦  «        r/dD ]*}	 t          | |||         ¦  «         Œ# t          $ r Y Œ'w xY wdS || _        dS )zÌ
        Attributes:
            value: string or tuple
                   if string, then it will be used hostname
                   if tuple it will be used as (hostname, user, password, port)
        r   r   é   é   ©ÚhostnameÚusernameÚpasswordÚportN)Ú
isinstanceÚtupleÚlistr1   r2   r3   Úintr4   Ú
IndexErrorÚdictÚsetattrÚKeyError)ÚselfÚvalueÚkeys      úd/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/pymysqlreplication/binlogstream.pyÚ__init__zReportSlave.__init__C   sí   € õ �e�e¥T˜]Ñ+Ô+ð 	"ðØ % a¤�”Ø % a¤�”Ø % a¤�”Ý  a¤™MœM�”	�	�	øÝð ð ð Ø��ðøøøå˜�tÑ$Ô$ð 	"ØCð ð �ðÝ˜D # u¨S¤zÑ2Ô2Ð2Ð2øÝð ð ð Ø�Dðøøøðð ð "ˆDŒMˆMˆMs$   žAA! Á!
A/Á.A/ÂB$Â$
B1Â0B1c                 ó<   — d| j         | j        | j        | j        fz  S )Nz9<ReportSlave hostname=%s username=%s password=%s port=%d>r0   ©r=   s    r@   Ú__repr__zReportSlave.__repr__\   s)   € ØJØŒMØŒMØŒMØŒIð	N
ñ 
ð 	
ó    c           	      óÔ  — t          | j                             ¦   «         ¦  «        }t          | j                             ¦   «         ¦  «        }t          | j                             ¦   «         ¦  «        }d|z   dz   |z   dz   |z   dz   dz   dz   }d}t          j        d|¦  «        t          t          t          g¦  «        ¦  «        z   t          j        d|¦  «        z   t          j        dt          ||dz   ¦  «        › d	�| j                             ¦   «         ¦  «        z   t          j        dt          ||dz   ¦  «        › d	�| j                             ¦   «         ¦  «        z   t          j        dt          ||dz   ¦  «        › d	�| j                             ¦   «         ¦  «        z   t          j        d
| j        ¦  «        z   t          j        dd¦  «        z   t          j        d|¦  «        z   S )z¹
        server_id: the slave server-id
        master_id: usually 0. Appears as "master id" in SHOW SLAVE HOSTS
                   on the master. Unknown what else it impacts.
        é   r   r.   é   i  ú<iz<LÚ<Úpú<Hz<lr   )Úlenr1   Úencoder2   r3   ÚstructÚpackÚbytesÚ	bytearrayr   Úminr4   )r=   Ú	server_idÚ	master_idÚ	lhostnameÚ	lusernameÚ	lpasswordÚ
packet_lenÚMAX_STRING_LENs           r@   ÚencodedzReportSlave.encodedd   s  € õ& ˜œ×,Ò,Ñ.Ô.Ñ/Ô/ˆ	Ý˜œ×,Ò,Ñ.Ô.Ñ/Ô/ˆ	Ý˜œ×,Ò,Ñ.Ô.Ñ/Ô/ˆ	ðð ñð ñ	ð
 ñð ñð ñð ñð ñ	ð ñ
ð 	ð ˆõ ŒK˜˜jÑ)Ô)Ý•IÕ1Ð2Ñ3Ô3Ñ4Ô4ñ5åŒk˜$ 	Ñ*Ô*ñ+õ ŒkØ9•C˜¨	°A©Ñ6Ô6Ð9Ð9Ð9¸4¼=×;OÒ;OÑ;QÔ;Qñô ñõ ŒkØ9•C˜¨	°A©Ñ6Ô6Ð9Ð9Ð9¸4¼=×;OÒ;OÑ;QÔ;Qñô ñõ ŒkØ9•C˜¨	°A©Ñ6Ô6Ð9Ð9Ð9¸4¼=×;OÒ;OÑ;QÔ;Qñô ñõ Œk˜$ ¤	Ñ*Ô*ñ+õ Œk˜$ Ñ"Ô"ñ#õ Œk˜$ 	Ñ*Ô*ñ+ð	
rE   N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   r2   r3   r4   rA   rD   r[   © rE   r@   r+   r+   :   sf   € € € € € ð-ð -ð €HØ€HØ€HØ€Dð"ð "ð "ð2
ð 
ð 
ð7
ð 7
ð 7
ð 7
ð 7
ð 7
rE   r+   c                   óš   — e 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„ Zd„ Zd„ Zd„ ZdS )ÚBinLogStreamReaderz,Connect to replication stream and read eventNFTc                 ób  — || _         | j                              dd¦  «         d| _        d| _        || _        || _        || _        |r| j                             dd¦  «         || _        || _        || _	        || _
        || _        |                      |||
¦  «        | _        || _        || _        d| _        || _        || _        t'          t(          t*          g¦  «                             | j        ¦  «        | _        || _        d| _        i | _        || _        |	| _        || _        || _        || _        || _         || _!        |r|  "                    ¦   «          |	rd| _#        |rtI          |¦  «        | _%        || _&        || _'        |r|| _(        ntR          j*        | _(        d| _+        d| _,        dS )a€  
        Attributes:
            ctl_connection_settings: Connection settings for cluster holding
                                     schema information
            resume_stream: Start for event from position or the latest event of
                           binlog or from older available event
            blocking: When master has finished reading/sending binlog it will
                      send EOF instead of blocking connection.
            only_events: Array of allowed events
            ignored_events: Array of ignored events
            log_file: Set replication start log file
            log_pos: Set replication start log pos (resume_stream should be
                     true)
            end_log_pos: Set replication end log pos
            auto_position: Use master_auto_position gtid to set position
            only_tables: An array with the tables you want to watch (only works
                         in binlog_format ROW)
            ignored_tables: An array with the tables you want to skip
            only_schemas: An array with the schemas you want to watch
            ignored_schemas: An array with the schemas you want to skip
            freeze_schema: If true do not support ALTER TABLE. It's faster.
            skip_to_timestamp: Ignore all events until reaching specified
                               timestamp.
            report_slave: Report slave in SHOW SLAVE HOSTS.
            slave_uuid: Report slave_uuid or replica_uuid in SHOW SLAVE HOSTS(MySQL 8.0.21-) or
                        SHOW REPLICAS(MySQL 8.0.22+) depends on your MySQL version.
            slave_heartbeat: (seconds) Should master actively send heartbeat on
                             connection. This also reduces traffic in GTID
                             replication on replication resumption (in case
                             many event to skip in binlog). See
                             MASTER_HEARTBEAT_PERIOD in mysql documentation
                             for semantics
            is_mariadb: Flag to indicate it's a MariaDB server, used with auto_position
                    to point to Mariadb specific GTID.
            annotate_rows_event: Parameter value to enable annotate rows event in mariadb,
                    used with 'is_mariadb'
            ignore_decode_errors: If true, any decode errors encountered
                                  when reading column data will be ignored.
            verify_checksum: If true, verify events read from the binary log by examining checksums.
            enable_logging: When set to True, logs various details helpful for debugging and monitoring
                            When set to False, logging is disabled to enhance performance.
            use_column_name_cache: If true, enables caching of column names from INFORMATION_SCHEMA
                            for MySQL 5.7 compatibility when binlog metadata is missing. Default is False.
        ÚcharsetÚutf8F)r   r   r   N)-Ú(_BinLogStreamReader__connection_settingsÚ
setdefaultÚ%_BinLogStreamReader__connected_streamÚ"_BinLogStreamReader__connected_ctlÚ"_BinLogStreamReader__resume_streamÚ_BinLogStreamReader__blockingÚ_ctl_connection_settingsÚ _BinLogStreamReader__only_tablesÚ#_BinLogStreamReader__ignored_tablesÚ!_BinLogStreamReader__only_schemasÚ$_BinLogStreamReader__ignored_schemasÚ"_BinLogStreamReader__freeze_schemaÚ_allowed_event_listÚ#_BinLogStreamReader__allowed_eventsÚ)_BinLogStreamReader__ignore_decode_errorsÚ$_BinLogStreamReader__verify_checksumÚ'_BinLogStreamReader__optional_meta_dataÚ#_BinLogStreamReader__enable_loggingÚ*_BinLogStreamReader__use_column_name_cacheÚ	frozensetr&   r   ÚunionÚ-_BinLogStreamReader__allowed_events_in_packetÚ_BinLogStreamReader__server_idÚ!_BinLogStreamReader__use_checksumÚ	table_mapÚlog_posÚend_log_posÚlog_fileÚauto_positionÚskip_to_timestampÚ
is_mariadbÚ(_BinLogStreamReader__annotate_rows_eventÚ)_BinLogStreamReader__log_valid_parametersÚis_past_end_log_posr+   Úreport_slaveÚ
slave_uuidÚslave_heartbeatÚpymysql_wrapperÚpymysqlÚconnectÚmysql_versionÚdbms)r=   Úconnection_settingsrT   Úctl_connection_settingsÚresume_streamÚblockingÚonly_eventsr�   r   r€   Úfilter_non_implemented_eventsÚignored_eventsr‚   Úonly_tablesÚignored_tablesÚonly_schemasÚignored_schemasÚfreeze_schemarƒ   rˆ   r‰   r‹   rŠ   r„   Úannotate_rows_eventÚignore_decode_errorsÚverify_checksumÚenable_loggingÚuse_column_name_caches                                r@   rA   zBinLogStreamReader.__init__£   sß  € ðX &9ˆÔ"ØÔ"×-Ò-¨i¸Ñ@Ô@Ð@à"'ˆÔØ$ˆÔØ,ˆÔØ"ˆŒØ(?ˆÔ%Ø"ð 	HØÔ)×4Ò4°YÀÑGÔGÐGà(ˆÔØ .ˆÔØ*ˆÔØ!0ˆÔØ,ˆÔØ $× 8Ò 8Ø˜Ð)Fñ!
ô !
ˆÔð ';ˆÔ#Ø!0ˆÔØ$)ˆÔ!Ø .ˆÔØ'<ˆÔ$õ +4µ]ÅKÐ4PÑ*QÔ*Q×*WÒ*WØÔ!ñ+
ô +
ˆÔ'ð %ˆÔØ#ˆÔð ˆŒØˆŒØ&ˆÔØ ˆŒØ*ˆÔØ!2ˆÔØ$ˆŒØ%8ˆÔ"Øð 	*Ø×'Ò'Ñ)Ô)Ð)àð 	-Ø',ˆDÔ$àð 	:Ý +¨LÑ 9Ô 9ˆDÔØ$ˆŒØ.ˆÔàð 	3Ø#2ˆDÔ Ð å#*¤?ˆDÔ Ø&ˆÔØˆŒ	ˆ	ˆ	rE   c                 ó¦   — | j         r | j                             ¦   «          d| _         | j        r"| j                             ¦   «          d| _        d S d S )NF)rh   Ú_stream_connectionÚcloseri   Ú_ctl_connectionrC   s    r@   r£   zBinLogStreamReader.close,  sd   € ØÔ"ð 	,ØÔ#×)Ò)Ñ+Ô+Ð+Ø&+ˆDÔ#ØÔð 	)ð Ô ×&Ò&Ñ(Ô(Ð(Ø#(ˆDÔ Ð Ð ð		)ð 	)rE   c                 ó  — | j         st          | j        ¦  «        | _         d| j         d<   t          | j         d<   d| j         d<    | j        di | j         ¤Ž| _        | j        | j        _        d| _        |  	                    ¦   «          d S )NÚinformation_schemaÚdbÚcursorclassTÚ
autocommitr`   )
rl   r:   rf   r   r‹   r¤   Ú_BinLogStreamReader__get_dbmsÚ	_get_dbmsri   Ú-_BinLogStreamReader__check_optional_meta_datarC   s    r@   Ú__connect_to_ctlz#BinLogStreamReader.__connect_to_ctl6  s“   € ØÔ,ð 	MÝ,0°Ô1KÑ,LÔ,LˆDÔ)Ø.BˆÔ% dÑ+Ý7AˆÔ% mÑ4Ø6:ˆÔ% lÑ3Ø3˜tÔ3ÐTÐT°dÔ6SÐTÐTˆÔØ)-¬ˆÔÔ&Ø#ˆÔØ×'Ò'Ñ)Ô)Ð)Ð)Ð)rE   c                 óä   — | j                              ¦   «         }|                     d¦  «         |                     ¦   «         }|                     ¦   «          |€dS |dd…         \  }}|dk    rdS dS )z<Return True if binlog-checksum = CRC32. Only for MySQL > 5.6z,SHOW GLOBAL VARIABLES LIKE 'BINLOG_CHECKSUM'NFr.   ÚNONET)r¢   ÚcursorÚexecuteÚfetchoner£   )r=   ÚcurÚresultÚvarr>   s        r@   Ú__checksum_enabledz%BinLogStreamReader.__checksum_enabledA  sq   € àÔ%×,Ò,Ñ.Ô.ˆØ�ŠÐBÑCÔCÐCØ—’‘”ˆØ�	Š	‰Œˆàˆ>Ø�5Ø˜B˜Q˜B”Z‰
ˆˆUØ�FŠ?ˆ?Ø�5ØˆtrE   c                 ó’  — | j         sd S | j                              | j        ¦  «        }t          rX| j        j                             |¦  «         | j        j                             ¦   «          | j                             ¦   «          d S | j         	                    |¦  «         d| j        _
        | j                             ¦   «          d S )Nr   )rˆ   r[   r|   ÚPYMYSQL_VERSION_LT_06r¢   ÚwfileÚwriteÚflushÚread_packetÚ_write_bytesÚ_next_seq_idÚ_read_packet)r=   Úpackets     r@   Ú_register_slavez"BinLogStreamReader._register_slaveO  s½   € ØÔ ð 	ØˆFàÔ"×*Ò*¨4Ô+;Ñ<Ô<ˆå ð 	3ØÔ#Ô)×/Ò/°Ñ7Ô7Ð7ØÔ#Ô)×/Ò/Ñ1Ô1Ð1ØÔ#×/Ò/Ñ1Ô1Ð1Ð1Ð1àÔ#×0Ò0°Ñ8Ô8Ð8Ø34ˆDÔ#Ô0ØÔ#×0Ò0Ñ2Ô2Ð2Ð2Ð2rE   c                 ó 
  —  | j         di | j        ¤Ž| _        |                      ¦   «         | _        | j        rB| j                             ¦   «         }|                     d¦  «         |                     ¦   «          | j        rO| j                             ¦   «         }|                     d| j        | j        f¦  «         |                     ¦   «          | j	        r«t          | j                             dd¦  «        ¦  «        }t          t          |dz  | j	        ¦  «        ¦  «        }|dk    rd}t          |dz  ¦  «        }| j                             ¦   «         }|                     d|f¦  «         |                     ¦   «          | j                             ¦   «         }|                     d¦  «         |                     ¦   «          |                      ¦   «          | j        �s“| j        r|                      ¦   «         }�nŸ| j        �| j        €}| j                             ¦   «         }|                     d	¦  «         |                     ¦   «         }|€t+          ¦   «         ‚|d d
…         \  | _        | _        |                     ¦   «          t-          j        dt1          | j        ¦  «        dz   ¦  «        t3          t5          t6          g¦  «        ¦  «        z   }| j        r|t-          j        d| j        ¦  «        z  }n|t-          j        dd¦  «        z  }d}| j        s|dz  }|t-          j        d|¦  «        z  }|t-          j        d| j        ¦  «        z  }|| j                             ¦   «         z  }�n)| j        r|                      ¦   «         }�ntA          | j        ¦  «        }|j!        }d}	dt-          j        d|	|z   ¦  «        z   t3          t5          tD          g¦  «        ¦  «        z   }d}| j        s|dz  }|dz  }|t-          j        d|¦  «        z  }|t-          j        d| j        ¦  «        z  }|t-          j        dd¦  «        z  }|dz  }|t-          j        dd¦  «        z  }|t-          j        d|j!        ¦  «        z  }|| #                    ¦   «         z  }tH          r>| j        j%         &                    |¦  «         | j        j%         '                    ¦   «          n&| j         (                    |¦  «         d| j        _)        d| _*        d S )Nz5SET @master_binlog_checksum= @@global.binlog_checksumz(SET @slave_uuid = %s, @replica_uuid = %sÚread_timeouti7‰A g       @i Êš;z!SET @master_heartbeat_period = %szSET @mariadb_slave_capability=4zSHOW MASTER STATUSr.   rI   é   ú<IrH   r   r   rL   é   rE   r/   s      z<QTr`   )+r‹   rf   r¢   Ú%_BinLogStreamReader__checksum_enabledr}   r°   r±   r£   r‰   rŠ   ÚfloatÚgetrS   r8   rÁ   r‚   r„   Ú)_BinLogStreamReader__set_mariadb_settingsr�   r   r²   r    rO   rP   rM   rQ   rR   r   rj   rk   r|   rN   r!   Úencoded_lengthr(   r[   r¸   r¹   rº   r»   r½   r¾   rh   )
r=   r³   Únet_timeoutÚ	heartbeatÚpreludeÚmaster_statusÚflagsÚgtid_setÚencoded_data_sizeÚheader_sizes
             r@   Ú__connect_to_streamz&BinLogStreamReader.__connect_to_stream^  së  € ð
 #7 $Ô"6Ð"TÐ"T¸Ô9SÐ"TÐ"TˆÔà"×5Ò5Ñ7Ô7ˆÔð Ôð 	ØÔ)×0Ò0Ñ2Ô2ˆCØ�KŠKÐOÑPÔPÐPØ�IŠI‰KŒKˆKàŒ?ð 	ØÔ)×0Ò0Ñ2Ô2ˆCØ�KŠKØ:Ø” $¤/Ð2ñô ð ð �IŠI‰KŒKˆKàÔð 	å Ô :× >Ò >¸~ÈwÑ WÔ WÑXÔXˆKõ �c +°Ñ"3°TÔ5IÑJÔJÑKÔKˆIØ˜7Ò"Ð"Ø#�	õ ˜I¨
Ñ2Ñ3Ô3ˆIØÔ)×0Ò0Ñ2Ô2ˆCØ�KŠKÐ;¸i¸\ÑJÔJÐJØ�IŠI‰KŒKˆKð Ô%×,Ò,Ñ.Ô.ˆØ�ŠÐ5Ñ6Ô6Ð6Ø�	Š	‰Œˆà×ÒÑÔÐàÔ!ñ q	.ØŒð  2Ø×5Ò5Ñ7Ô7�‘ð ”=Ð(¨D¬LÐ,@ØÔ1×8Ò8Ñ:Ô:�CØ—K’KÐ 4Ñ5Ô5Ð5Ø$'§L¢L¡N¤N�MØ$Ð,Ý.Ñ0Ô0Ð0Ø2?ÀÀÀÔ2CÑ/�D”M 4¤<Ø—I’I‘K”K�Kå œ+ d­C°´Ñ,>Ô,>ÀÑ,CÑDÔDÅuÝ�Ð/Ñ0Ô0ñHô Hñ �ð Ô'ð 4Ø�vœ{¨4°´Ñ>Ô>Ñ>�G�Gà�vœ{¨4°Ñ3Ô3Ñ3�Gà�à”ð "Ø˜T‘M�Eà�6œ; t¨UÑ3Ô3Ñ3�à�6œ; t¨TÔ-=Ñ>Ô>Ñ>�à˜4œ=×/Ò/Ñ1Ô1Ñ1�‘àŒð N.Ø×5Ò5Ñ7Ô7�‘õJ # 4Ô#5Ñ6Ô6�Ø$,Ô$;Ð!ðð ð Ý”k $¨Ð6GÑ(GÑHÔHñIå�IÕ';Ð&<Ñ=Ô=Ñ>Ô>ñ?ð ð �Ø”ð "Ø˜T‘M�EØ˜‘�ð
 �6œ; t¨UÑ3Ô3Ñ3�ð �6œ; t¨TÔ-=Ñ>Ô>Ñ>�à�6œ; t¨QÑ/Ô/Ñ/�à˜9Ñ$�à�6œ; t¨QÑ/Ô/Ñ/�ð �6œ; t¨XÔ-DÑEÔEÑE�à˜8×+Ò+Ñ-Ô-Ñ-�å ð 	5ØÔ#Ô)×/Ò/°Ñ8Ô8Ð8ØÔ#Ô)×/Ò/Ñ1Ô1Ð1Ð1àÔ#×0Ò0°Ñ9Ô9Ð9Ø34ˆDÔ#Ô0Ø"&ˆÔÐÐrE   c                 óF  — | j                              ¦   «         }| j        �|                     d| j        f¦  «         |                     d¦  «         |                     d¦  «         |                     ¦   «          d}t          j        d|¦  «        t          t          t          g¦  «        ¦  «        z   }|t          j        dd¦  «        z  }d}| j
        r|dz  }| j        s|d	z  }|t          j        d
|¦  «        z  }|t          j        d| j        ¦  «        z  }|dz  }|S )NzSET @slave_connect_state = %szSET @slave_gtid_strict_mode=1z#SET @slave_gtid_ignore_duplicates=0é   rI   rH   r   r.   r   rL   rÅ   s       )r¢   r°   r‚   r±   r£   rO   rP   rQ   rR   r   r…   rk   r|   )r=   r³   rÓ   rÎ   rÐ   s        r@   Ú__set_mariadb_settingsz)BinLogStreamReader.__set_mariadb_settings
  s,  € àÔ%×,Ò,Ñ.Ô.ˆØÔÐ)Ø�KŠKÐ7¸$Ô:LÐ9NÑOÔOÐOØ�ŠÐ3Ñ4Ô4Ð4Ø�ŠÐ9Ñ:Ô:Ð:Ø�	Š	‰Œˆðð 	õ ”+˜d KÑ0Ô0µ5½ÅOÐCTÑ9UÔ9UÑ3VÔ3VÑVˆð 	•6”;˜t QÑ'Ô'Ñ'ˆàˆð Ô%ð 	Ø�T‰MˆEàŒð 	Ø�T‰MˆEð 	•6”;˜t UÑ+Ô+Ñ+ˆð 	•6”;˜t TÔ%5Ñ6Ô6Ñ6ˆð 	�;ÑˆàˆrE   c                 óP  — | j                              ¦   «         }|                     d¦  «         |                     ¦   «         }|€t	          j        d¦  «         d S |                     dd¦  «        }|                     ¦   «         dk    rt	          j        d¦  «         d S d| _        d S )Nz*SHOW VARIABLES LIKE 'BINLOG_ROW_METADATA';z˜
                    Before using MARIADB 10.5.0 and MYSQL 8.0.14 versions,
                    use python-mysql-replication version Before 1.0 version ÚValuer,   ÚFULLzí
                       Setting The Variable Value BINLOG_ROW_METADATA = FULL, BINLOG_ROW_IMAGE = FULL.
                       By Applying this, provide properly mapped column information on UPDATE,DELETE,INSERT.
                        T)	r¤   r°   r±   r²   r   ÚwarningrÉ   Úupperrv   )r=   r³   r>   s      r@   Ú__check_optional_meta_dataz-BinLogStreamReader.__check_optional_meta_data4  sº   € ØÔ"×)Ò)Ñ+Ô+ˆØ�ŠÐ@ÑAÔAÐAØ—’‘”ˆØˆ=ÝŒNðPñô ð ð ð ð —I’I˜g rÑ*Ô*ˆEØ�{Š{‰}Œ} Ò&Ð&Ý”ðñô ð ð ð ð -1�Ô)Ð)Ð)rE   c                 óL  — 	 | j         r	| j        rd S | j        s|                      ¦   «          | j        s|                      ¦   «          	 t          r| j                             ¦   «         }n| j         	                    ¦   «         }nd# t          j        $ rR}|j        \  }}|t          v r9| j                             ¦   «          d| _        t          j        d¦  «         Y d }~ŒÞ‚ d }~ww xY w|                     ¦   «         r|                      ¦   «          d S |                     ¦   «         s�Œ't'          || j        | j        | j        | j        | j        | j        | j        | j        | j        | j        | j        | j        | j         | j!        | j"        ¦  «        }|j#        tH          k    r5|j%        j&        | _'        |j%        j(        | _)        |j*        dk    ri | _        n|j'        r|j'        | _'        | j         r| j'        | j         k    rd| _        | j+        r|j*        | j+        k     r�Œ|j#        tX          k    r2|j%        �+|j%         -                    ¦   «         | j        |j%        j.        <   |j%        �|j%        j/        | j0        vr�Œ}|j#        tb          k    r|j%        j        | _        |j%        S )NTFzy
                          A pymysql.OperationalError error occurred, Re-request the connection.
                        r   )2r€   r‡   rh   Ú&_BinLogStreamReader__connect_to_streamri   Ú#_BinLogStreamReader__connect_to_ctlr¸   r¢   r¼   r¿   rŒ   ÚOperationalErrorÚargsÚMYSQL_EXPECTED_ERROR_CODESr£   r   rÛ   Úis_eof_packetÚis_ok_packetr"   r~   r¤   rŽ   r}   r{   rm   rn   ro   rp   rq   rt   ru   rv   rw   rx   Ú
event_typer
   ÚeventÚpositionr   Únext_binlogr�   Ú	timestamprƒ   r	   Ú	get_tableÚtable_idÚ	__class__rs   r   )r=   ÚpktÚerrorÚcodeÚmessageÚbinlog_events         r@   r²   zBinLogStreamReader.fetchoneJ  sß  € ð|	&ØÔð  DÔ$<ð Ø�tàÔ*ð +Ø×(Ò(Ñ*Ô*Ð*àÔ'ð (Ø×%Ò%Ñ'Ô'Ð'ðÝ(ð AØÔ1×=Ò=Ñ?Ô?�C�CàÔ1×>Ò>Ñ@Ô@�CøøÝÔ+ð ð ð Ø %¤
‘��gØÕ5Ð5Ð5ØÔ+×1Ò1Ñ3Ô3Ð3Ø.3�DÔ+Ý”Nðñô ð ð
 �H�H�H�HØøøøøðøøøð × Ò Ñ"Ô"ð Ø—
’
‘”�Ø�tà×#Ò#Ñ%Ô%ð Ùå.ØØ”ØÔ$ØÔ"ØÔ#ØÔ/ØÔ"ØÔ%ØÔ#ØÔ&ØÔ$ØÔ+ØÔ&ØÔ)ØÔ%ØÔ,ñ!ô ˆLð& Ô&­,Ò6Ð6Ø+Ô1Ô:�”Ø ,Ô 2Ô >�”ð  Ô)¨QÒ.Ð.Ø%'�D”NøàÔ%ð 4Ø+Ô3�”àÔð 0 D¤L°DÔ4DÒ$DÐ$Dà+/�Ô(ð6 Ô&ðà Ô*¨TÔ-CÒCÐCáð Ô'­?Ò:Ð:Ø Ô&Ð2ð !Ô&×0Ò0Ñ2Ô2ð ”˜|Ô1Ô:Ñ;ð Ô!Ð)ØÔ"Ô,°DÔ4IÐIÐIáàÔ&Õ*BÒBÐBØ%1Ô%7Ô%E�Ô"àÔ%Ð%s   Á	:B ÂC%ÂAC ÃC Ã C%c                 ó"  — |�t          |¦  «        }n¥t          t          t          t          t          t
          t          t          t          t          t          t          t          t          t          t          t           t"          t$          t&          t(          t*          t,          t.          t0          t2          f¦  «        }|�|D ]}|                     |¦  «         Œ|r,	 |                     t          ¦  «         n# t6          $ r Y nw xY wt9          |¦  «        S ©N)Úsetr   r   r   r   r   r   r   r   r   r#   r$   r%   r&   r   r   r   r   r   r   r   r   r   r   r   r'   Úremover<   ry   )r=   r”   r–   r•   ÚeventsÚes         r@   rr   z&BinLogStreamReader._allowed_event_listÉ  sõ   € ð Ð"Ý˜Ñ%Ô%ˆFˆFååÝÝÝ*Ý"ÝÝÝ'Ý)Ý#Ý"Ý#Ý!Ý%Ý'Ý$Ý%Ý,ÝÝ/Ý(Ý0Ý Ý&Ý*ð3ñô ˆFð: Ð%Ø#ð !ð !�Ø—’˜aÑ Ô Ð Ð Ø(ð 	ðØ—’Õ1Ñ2Ô2Ð2Ð2øÝð ð ð Ø�ðøøøå˜Ñ Ô Ð s   ÃC2 Ã2
C?Ã>C?c                 ó®   — | j         s|                      ¦   «          | j        r| j        S d| j                             ¦   «         v r	d| _        dS d| _        dS )NÚMariaDBÚmariadbÚmysql)ri   rà   r�   r¤   Úget_server_inforC   s    r@   Ú
__get_dbmszBinLogStreamReader.__get_dbmsö  sc   € ØÔ#ð 	$Ø×!Ò!Ñ#Ô#Ð#ØŒ9ð 	Ø”9ÐØ˜Ô,×<Ò<Ñ>Ô>Ð>Ð>Ø!ˆDŒIØ�9ØˆŒ	ØˆwrE   c                 óL  — g d¢}| j                              ¦   «         D ]…\  }}|                     d¦  «        r|                     dd¦  «        }||v s|sŒ7|t          u r*d„ |D ¦   «         }d                     |¦  «        }|› d|› d�}n|› d|› �}t          j        |¦  «         Œ†d S )	N)Úallowed_eventsr~   r�   Ú_BinLogStreamReader__r,   c                 óž   — g | ]J}t          |¦  «                             ¦   «         d          dd…                              d¦  «        d         ‘ŒKS )éÿÿÿÿNéþÿÿÿú.r.   )ÚstrÚsplit)Ú.0Úitems     r@   ú
<listcomp>z=BinLogStreamReader.__log_valid_parameters.<locals>.<listcomp>	  sV   € ð ð ð ØAE•C˜‘I”I—O’OÑ%Ô% bÔ)¨#¨2¨#Ô.×4Ò4°SÑ9Ô9¸!Ô<ðð ð rE   z, z: [ú]z: )Ú__dict__ÚitemsÚ
startswithÚreplacery   Újoinr   Úinfo)r=   ÚignoredÚ	parameterr>   Ústring_listr  Úcomments          r@   Ú__log_valid_parametersz)BinLogStreamReader.__log_valid_parameters  sô   € ØHÐHÐHˆØ $¤× 3Ò 3Ñ 5Ô 5ð 	!ð 	!ÑˆI�uØ×#Ò#Ð$;Ñ<Ô<ð KØ%×-Ò-Ð.EÀrÑJÔJ�	Ø˜GÐ#Ð#¨5Ð#ØØ�	Ð!Ð!ðð ØINðñ ô �ð Ÿ	š	 +Ñ.Ô.�Ø&Ð3Ð3¨5Ð3Ð3Ð3��à&Ð1Ð1¨%Ð1Ð1�ÝŒK˜Ñ Ô Ð Ð ð	!ð 	!rE   c                 ó,   — t          | j        d ¦  «        S rô   )Úiterr²   rC   s    r@   Ú__iter__zBinLogStreamReader.__iter__  s   € Ý�D”M 4Ñ(Ô(Ð(rE   )NFFNNNNTNNNNNNFNNNNNFFFFTF)r\   r]   r^   r_   rˆ   rA   r£   rà   rÇ   rÁ   rß   rÊ   r¬   r²   rr   rª   r†   r  r`   rE   r@   rb   rb   ž   sF  € € € € € Ø6Ð6à€Lð !%ØØØØØØØ&*ØØØØØØØØØØØØØØ!Ø"ØØØ#ð;Gð Gð Gð GðR)ð )ð )ð	*ð 	*ð 	*ðð ð ð3ð 3ð 3ðj'ð j'ð j'ðX(ð (ð (ðT1ð 1ð 1ð,}&ð }&ð }&ð~+!ð +!ð +!ðZ	ð 	ð 	ð!ð !ð !ð")ð )ð )ð )ð )rE   rb   )7rO   Úpackaging.versionr   r   rŒ   Úpymysql.constants.COMMANDr   r   Úpymysql.cursorsr   Úconstants.BINLOGr	   r
   r   rç   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú
exceptionsr    Úgtidr!   rÀ   r"   Ú	row_eventr#   r$   r%   r&   r'   r(   ÚImportErrorrã   Ú__version__r¸   Úobjectr+   rb   r`   rE   r@   ú<module>r$     s½  ðØ €€€Ø %Ð %Ð %Ð %Ð %Ð %à Ð Ð Ð Ð Ð à €€€Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ &Ð &Ð &Ð &Ð &Ð &à UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ Uðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð, )Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ø>Ð>Ð>Ð>Ð>Ð>Ð>øØð  ð  ð  ð  ÐÐÐð øøøð # D˜\Ð à˜ Ô 3Ñ4Ô4°w°w¸u±~´~ÒEÐ ða
ð a
ð a
ð a
ð a
�&ñ a
ô a
ð a
ðHu	)ð u	)ð u	)ð u	)ð u	)˜ñ u	)ô u	)ð u	)ð u	)ð u	)s   Á:B ÂBÂ
B