hyb
2026-01-09 4cb426cb3ae31e772a09d4ade5b2f0242aaeefa0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
Ë
WñúhÆ\ã óP—UdZddlZddlZddlZddlZddlZddlZddlZddlZddl    m
Z
ddl m Z ddl mZmZmZmZmZmZmZmZmZmZmZmZmZmZddlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%erddl&m'Z'dd    l(m)Z)dd
l*m+Z+m,Z,dd l-m.Z.d Z/e0e1d <e2e3e
e)fZ4e#e$e2e$e3e$e
e$e)fe1d<de%e2e5fde2fd„Z6de2de5fd„Z7de2de5fd„Z8de2de5fd„Z9de2de5fd„Z:de2de5fd„Z;de2de5fd„Z<de2de5fd„Z=de5de2de#e5e5ffd„Z>de5de#e5e"e5ffd„Z?de5de"e#e"e5dffd„Z@        d?de5de"e5de"e2de#e5e5ffd „ZAde5de2de#e5e2ffd!„ZBde5de#e5e"e2ffd"„ZCde.deDfd#„ZE    d@d$e.d%e"eDd&e2ddfd'„ZFde eDeDffd(„ZGde eDeDffd)„ZHde"e eDeDffd*„ZIde#eDeDeDffd+„ZJd,eDdeDfd-„ZKd,eDde eDeeDge0fffd.„ZLd/eDde"e#eDeDffd0„ZMd1eDdeDfd2„ZN    dAd3e%e2e.fd4eDdeOfd5„ZPe «de eDe%eDe#eDeDffffd6„«ZQd7eDdefd8„ZRd9eDd:eDddfd;„ZSd:eDddfd<„ZTGd=„d>«ZUy)Bz
Utilities.éN)ÚDecimal)Ú    lru_cache)Ú in_table_a1Ú in_table_b1Ú in_table_c3Ú in_table_c4Ú in_table_c5Ú in_table_c6Ú in_table_c7Ú in_table_c8Ú in_table_c9Ú in_table_c11Ú in_table_c12Úin_table_c21_c22Ú in_table_d1Ú in_table_d2)    Ú TYPE_CHECKINGÚAnyÚCallableÚDictÚListÚOptionalÚTupleÚTypeÚUnion)ÚMySQLConnectionAbstracté)Ú
HexLiteral)ÚDEPRECATED_TLS_CIPHERSUITESÚDEPRECATED_TLS_VERSIONS)Ú
StrOrBytesFÚ__MYSQL_DEBUG__Ú NUMERIC_TYPESÚbufÚreturncó.—t|t«r|St|«t«}}|dk(r|dS|dkr0||dd|z
zzz }tt    j
d|«d«S||dd|z
zzz }tt    j
d|«d«S)z&Unpacks the given buffer to an integerrréóú<Iéú<Q)Ú
isinstanceÚintÚlenÚ    bytearrayÚstructÚunpack)r$ÚlengthÚtmps   úHH:\Change_password\venv_build\Lib\site-packages\mysql/connector/utils.pyÚintreadr5Ws€ä#”sÔØˆ
ܐc“(œI›KˆC€FØ ‚{ؐ1‰vˆ Ø ‚{Ø ˆsW  F¡
Ñ+Ñ+Ñ+ˆÜ”6—=‘=  sÓ+¨AÑ.Ó/Ð/؈3˜A ™JÑ'Ñ 'Ñ'€CÜ Œv}‰}˜T 3Ó'¨Ñ*Ó +Ð+óÚicóX—|dks|dkDr td«‚tjd|«S)z^
    Takes an unsigned byte (1 byte) and packs it as a bytes-object.
 
    Returns string.
    réÿz int1store requires 0 <= i <= 255ú<B©Ú
ValueErrorr0Úpack©r7s r4Ú    int1storer?es.€ð     ˆ1‚uC’ÜÐ;Ó<Ð<Ü ;‰;t˜QÓ Ðr6cóX—|dks|dkDr td«‚tjd|«S)z`
    Takes an unsigned short (2 bytes) and packs it as a bytes-object.
 
    Returns string.
    réÿÿz"int2store requires 0 <= i <= 65535ú<Hr;r>s r4Ú    int2storerCps.€ð     ˆ1‚uE’    ÜÐ=Ó>Ð>Ü ;‰;t˜QÓ Ðr6có^—|dks|dkDr td«‚tjd|«ddS)zb
    Takes an unsigned integer (3 bytes) and packs it as a bytes-object.
 
    Returns string.
    réÿÿÿz%int3store requires 0 <= i <= 16777215r)ér;r>s r4Ú    int3storerG{s5€ð     ˆ1‚uH’ ÜÐ@ÓAÐAÜ ;‰;t˜QÓ   !Ð $Ð$r6cóX—|dks|dkDr td«‚tjd|«S)zb
    Takes an unsigned integer (4 bytes) and packs it as a bytes-object.
 
    Returns string.
    rìÿÿz'int4store requires 0 <= i <= 4294967295r)r;r>s r4Ú    int4storerJ†s.€ð     ˆ1‚uJ’ÜÐBÓCÐCÜ ;‰;t˜QÓ Ðr6cóX—|dks|dkDr td«‚tjd|«S)zZ
    Takes an unsigned integer (8 bytes) and packs it as string.
 
    Returns string.
    rìz!int8store requires 0 <= i <= 2^64r+r;r>s r4Ú    int8storerM‘s0€ð     ˆ1‚uÐ(Ò(ÜÐ<Ó=Ð=Ü ;‰;t˜QÓ Ðr6có¨—|dks|dkDr td«‚|dkrt}n*|dkrt}n|dkrt}n|dkrt}nt
}||«S)zÍ
    Takes an unsigned integers and packs it as a bytes-object.
 
    This function uses int1store, int2store, int3store,
    int4store or int8store depending on the integer value.
 
    returns string.
    rrLz!intstore requires 0 <= i <=  2^64r9rArErI)r<r?rCrGrJrM)r7Ú formed_strings  r4ÚintstorerPœs_€ð    ˆ1‚uÐ(Ò(ÜÐ<Ó=Ð=àˆC‚xÜ!‰ Ø    
ˆeŠÜ!‰ Ø    
ˆhŠÜ!‰ Ø    
ˆjŠÜ!‰ ä!ˆ á ˜Ó Ðr6có—|dks|dkDr td«‚|dkrtjd|«S|dkrdtjd|«zS|d    krd
tjd |«dd zSd tjd|«zS)z|
    Takes an unsigned integer and packs it as bytes,
    with the information of how much bytes the encoded int takes.
    rrLzRequires 0 <= i <= 2^64éûr:rAóürBrEóýr)rFóþr+r;r>s r4Úlc_intrV¶sŽ€ð
    ˆ1‚uÐ(Ò(ÜÐ2Ó3Ð3àˆ3‚w܏{‰{˜4 Ó#Ð#؈E‚zØœŸ™ T¨1Ó-Ñ-Ð-؈H‚}ØœŸ™ T¨1Ó-¨a°Ð2Ñ2Ð2à ”V—[‘[  qÓ)Ñ )Ð)r6Úsizecó—|d|}||d|fS)zi
    Reads bytes from a buffer.
 
    Returns a tuple with buffer less the read bytes, and the bytes.
    rN©©r$rWÚress   r4Ú
read_bytesr\Ès €ð ˆaˆ+€CØ ˆJ˜Ð Ðr6cóâ—|ddk(r|dddfSdx}}|d}|dkr|}|d|zd|d|dzfS|dk(rd}n|dk(rd    }n|d
k(rd }t|d|dz«}|||zdzd||dz||zdzfS) u›
    Takes a buffer and reads a length coded string from the start.
 
    This is how Length coded strings work
 
    If the string is 250 bytes long or smaller, then it looks like this:
 
      <-- 1b  -->
      +----------+-------------------------
      |  length  | a string goes here
      +----------+-------------------------
 
    If the string is bigger than 250, then it looks like this:
 
      <- 1b -><- 2/3/8 ->
      +------+-----------+-------------------------
      | type |  length   | a string goes here
      +------+-----------+-------------------------
 
      if type == Ã¼:
          length is code in next 2 bytes
      elif type == Ã½:
          length is code in next 3 bytes
      elif type == Ã¾:
          length is code in next 8 bytes
 
    NULL has a special value. If the buffer starts with Ã» then
    it's a NULL and we return None as value.
 
    Returns a tuple (trucated buffer, bytes).
    rrRrNéúéüééýrFéþr*©r5)r$r2ÚlsizeÚfsts    r4Úread_lc_stringrfÒsɀð@ ˆ1v‚}àAB˜ˆÐàЀFˆUØ
ˆa‰&€Cà
ˆc‚z؈ؐA˜‘JLÐ! 3 q¨6°A©:Ð#6Ð7Ð7Ø
ˆc‚z؉ؠ    ŠØ‰Ø     ŠØˆä S˜˜U Q™YÐ'Ó (€FØ ˜‘ Ñ"Ð$Ð % s¨5°1©9°vÀ±~ÈÑ7IÐ'JÐ KÐKr6.có¸—g}ddddœ}t|«}d}||kr§||}|dk(ry|dk(r|jd«|d    z }nz|d
kr(|}|j||d    z||d    zz«|d    |zz }nMd}    ||}t||d    z||d    zz«}|j||d    z|z||z|d    zz«|d    |z|zz }||krŒ§t    |«S#t$rYywxYw) zXReads all length encoded strings from the given buffer
 
    Returns a list of bytes
    r`rFr*)r_rarbrr9NrRrr^)r.ÚappendÚKeyErrorr5Útuple)r$ÚbyteslstÚsizesÚbuf_lenÚposÚfirstr2rds        r4Úread_lc_string_listrps,€ð
')€Hà˜! !Ñ $€Eä#‹h€GØ
€Cà
Š-ؐC‘ˆØ CŠ<ðØ CŠ<à O‰O˜DÔ !Ø 1‰H‰Cà˜Š|ؐؗ‘  S¨1¡W°¸#À¹'Ñ0BРCÔDؐq˜6‘zÑ!‘àð Ø! %™LEô!  c¨A¡g°¸#À¹'Ñ1BÐ!CÓDØ—‘  C¨!¡G¨e¡O°f¸u±nÈÈaÉÑ6PРQÔRؐq˜5‘y 6Ñ)Ñ)ð/ ‹-ô2 ‹?Ðøô  ò Ùð úsÁ2C à     CÃCÚendcóΗ|€ |€ td«‚|    |j|«}||dzd|d|fS| t||«Std«‚#t$r}td«|‚d}~wwxYw)zr
    Reads a string up until a character or for a given size.
 
    Returns a tuple (trucated buffer, string).
    Nz&read_string() needs either end or sizezend byte not present in bufferrrz.read_string() needs either end or size (weird))r<Úindexr\)r$rqrWÚidxÚerrs     r4Ú read_stringrv/s€ð €{t|ÜÐAÓBÐBà
€ð    HØ—)‘)˜C“.ˆCðC˜!‘GI  A c 
Ð+Ð+Ø Ðܘ#˜tÓ$Ð$ä
ÐEÓ
FÐFøô ò    HÜÐ=Ó>ÀCÐ Gûð    Hús“A
Á
    A$Á AÁA$có,—t|d|«}||d|fS)zMRead an integer from buffer
 
    Returns a tuple (truncated buffer, int)
    rNrcrZs   r4Úread_intrxHs%€ô
#a˜+Ó
€CØ ˆJ˜Ð Ðr6cóh—|s td«‚|d}|dk(r|dddfS|dkr|ddt|«fS|dk(r!|ddtjd|dd«dfS|d    k(r$|d
dtjd |dd
d z«dfS|d k(r!|ddtjd|dd«dfStd«‚)z
    Takes a buffer and reads an length code string from the start.
 
    Returns a tuple with buffer less the integer and the integer read.
    z Empty buffer.rrRrNr_rFz<xHrar'r)r(rbé    z<xQz%Failed reading length encoded integer)r<r-r0r1)r$Úlcbytes  r4Ú read_lc_intr|Qsé€ñ ܘÓ)Ð)à ‰V€FØ ‚}ؐAB˜ˆÐØ ‚|ؐABœ˜V›Ð%Ð%Ø ‚}ؐABœŸ™ u¨c°!°A¨hÓ7¸Ñ:Ð;Ð;Ø ‚}ؐABœŸ™ t¨S°°1¨X¸Ñ-?Ó@ÀÑCÐDÐDØ ‚}ؐABœŸ™ u¨c°!°A¨hÓ7¸Ñ:Ð;Ð;Ü
Ð<Ó
=Ð=r6c    óԗt|t«s#dj|Dcgc]}d|d›‘Œ
c}«Sdj|Dcgc]}dt|«d›‘Œc}«Scc}wcc}w)z"Debug function for showing buffersÚz\xÚ02x)r,ÚstrÚjoinÚord)r$Úcs  r4Ú_digest_bufferr„ks]€ä cœ3Ô Øw‰w¨sÖ3¨!˜#˜a ˜Wš Ò3Ó4Ð4Ø 7‰7°Ö4¨1cœ#˜a›& ˜Ò&Ò4Ó 5Ð5ùò4ùÚ4s   A ÁA%ÚabufferÚprefixÚlimitcó–—|r3|r|dkDrt|d|«}n t|«}t|dz|z«ytt|««y)z2Debug function printing output of _digest_buffer()rz: N)r„Úprint)r…r†r‡Údigests    r4Ú print_bufferr‹rsI€ñÙ U˜Q’YÜ# G¨A¨eÐ$4Ó5‰Fä# GÓ,ˆFÜ ˆft‰m˜fÑ$Õ%ä Œn˜WÓ%Õ&r6có˜—i}tjjdd«}tjj|«s|St    |d¬«5}|D]]}|j d«}t |«dk7rŒ#|dj«}|djd    «jd
«}|||<Œ_    d d d «|S#1swY|SxYw) zsParse the contents of /etc/os-release file.
 
    Returns:
        A dictionary containing release information.
    ú/etcz
os-releaseúutf-8©Úencodingú=r`rrú
ú"N©
ÚosÚpathrÚexistsÚopenÚsplitr.ÚlowerÚrstripÚstrip)ÚdistroÚos_release_fileÚfile_objÚlineÚ    key_valueÚkeyÚvalues       r4Ú_parse_os_releaser¤€sÁ€ð  €FÜ—g‘g—l‘l 6¨<Ó8€OÜ 7‰7>‰>˜/Ô *؈ Ü     ˆo¨Ô    0ð °HØò     ˆDØŸ
™
 3›ˆIܐ9‹~ Ò"ØØ˜A‘,×$Ñ$Ó&ˆCؘa‘L×'Ñ'¨Ó-×3Ñ3°CÓ8ˆE؈F3ŠKñ      ÷ ð €M÷ ð €Mús ÁA#B?Â?C    có˜—i}tjjdd«}tjj|«r{t    |d¬«5}|D]]}|j d«}t |«dk7rŒ#|dj«}|djd    «jd
«}|||<Œ_    d d d «|S|S#1swY|SxYw) ztParse the contents of /etc/lsb-release file.
 
    Returns:
        A dictionary containing release information.
    rz lsb-releaserŽrr‘r`rrr’r“Nr”)rÚlsb_release_filerŸr r¡r¢r£s       r4Ú_parse_lsb_releaser§•sÀð €FÜ—w‘w—|‘| F¨MÓ:ÐÜ    ‡ww‡~~Ð&Ô'Ü Ð"¨WÔ 5ð    $¸Ø ò $Ø ŸJ™J s›O    Üy“> QÒ&ØØ ‘l×(Ñ(Ó*Ø! !™ ×+Ñ+¨DÓ1×7Ñ7¸Ó<Ø#s’ ñ  $÷    $ð €Mˆ6€M÷    $ð €Mús ÁA#B?Â?C    cóö—i}ttjdd¬«5}    tjd|¬«}|j tj««j«}|D]^}|jd«}t|«dk7rŒ#|d    jd
d «j«}|d jd «}|||<Œ`    ddd«|S#t
$r Yddd«ywxYw#1swY|SxYw)ztParse the output of the lsb_release command.
 
    Returns:
        A dictionary containing release information.
    ÚwrŽr)Ú lsb_releasez-a)ÚstderrNú:r`rú Ú_rú    )r˜r•ÚdevnullÚ
subprocessÚ check_outputÚOSErrorÚdecodeÚsysÚgetfilesystemencodingÚ
splitlinesr™r.Úreplaceršrœ)rr°ÚstdoutÚlinesr r¡r¢r£s        r4Ú_parse_lsb_release_commandr»©sø€ð €FÜ     Œbj‰j˜#¨Ô    0ð  °Gð    Ü×,Ñ,Ð-BÈ7ÔSˆFð— ‘ œc×7Ñ7Ó9Ó:×EÑEÓGˆØò     ˆDØŸ
™
 3›ˆIܐ9‹~ Ò"ØØ˜A‘,×&Ñ& s¨CÓ0×6Ñ6Ó8ˆCؘa‘L×&Ñ& tÓ,ˆE؈F3ŠKñ      ÷  ð €Møôò    Ø÷      ð  ð    ú÷  ð €Mús.ŸC.¡C¸BC.à   C+àC.Ã*C+Ã+C.Ã.C8cóŠ—t«}|r5|jdd«|jdd«|jdd«fSt«}|r5|jdd«|jdd«|jdd«fSt«}|r5|jdd«|jd    d«|jd
d«fSy ) aNTries to determine the name of the Linux OS distribution name.
 
    First tries to get information from ``/etc/os-release`` file.
    If fails, tries to get the information of ``/etc/lsb-release`` file.
    And finally the information of ``lsb-release`` command.
 
    Returns:
        A tuple with (`name`, `version`, `codename`)
    Ú
distrib_idr~Údistrib_releaseÚdistrib_codenameÚdistributor_idÚreleaseÚcodenameÚnameÚ
version_idÚversion_codename)r~r~r~)r§Úgetr»r¤)rs r4Úlinux_distributionrÇÀs΀ô(:Ó';€FÙ à J‰J| RÓ (Ø J‰JÐ(¨"Ó -Ø J‰JÐ)¨2Ó .ð
ð    
ô (Ó )€FÙ à J‰JÐ'¨Ó ,Ø J‰Jy "Ó %Ø J‰Jz 2Ó &ð
ð    
ô Ó  €FÙ à J‰Jv˜rÓ "Ø J‰J| RÓ (Ø J‰JÐ)¨2Ó .ð
ð    
ð r6Ú unicode_strcó>—|rtj|d«dvryy)zÈGet the readiness direction of the unicode string.
 
    We assume that the direction is "L-to-R" if the first character does not
    indicate the direction is "R-to-L" or an "AL" (Arabic Letter).
    r)ÚRÚALúR-to-LzL-to-R)Ú unicodedataÚ bidirectional)rÈs r4Ú_get_unicode_read_directionrÏås+€ñ ”{×0Ñ0°¸Q±Ó@ðEñðØ r6có—t|«}|dk(r/t|d«rt|d«s td«‚dtiSdtiS)at
    1) The characters in section 5.8 MUST be prohibited.
 
    2) If a string contains any RandALCat character, the string MUST NOT
       contain any LCat character.
 
    3) If a string contains any RandALCat character, a RandALCat
       character MUST be the first character of the string, and a
       RandALCat character MUST be the last character of the string.
    rÌréÿÿÿÿzvInvalid unicode Bidirectional sequence, if the first character is RandALCat, the final charactermust be RandALCat too.z7Bidirectional Characters requirement 2 [StringPrep, d2])rÏrr<r)rÈÚread_dirs  r4Ú_get_unicode_direction_rulerÓós]€ô+¨;Ó7€Hð8ÒܘK¨™NÔ+´ ¸KȹOÔ0LÜð)óð ð JÌ;ÐWÐWð FÄ{Ð SÐSr6Únormalized_strc óh—ttttttt
t ttttdœ }    |jt|««|D]0}|j«D]\}}||«sŒ|dk7sŒ||fccSŒ2y#t$r}|t|«fcYd}~Sd}~wwxYw)aªCheck for Prohibited Output according to rfc4013 profile.
 
    This profile specifies the following characters as prohibited input:
 
       - Non-ASCII space characters [StringPrep, C.1.2]
       - ASCII control characters [StringPrep, C.2.1]
       - Non-ASCII control characters [StringPrep, C.2.2]
       - Private Use characters [StringPrep, C.3]
       - Non-character code points [StringPrep, C.4]
       - Surrogate code points [StringPrep, C.5]
       - Inappropriate for plain text characters [StringPrep, C.6]
       - Inappropriate for canonical representation characters [StringPrep, C.7]
       - Change display properties or deprecated characters [StringPrep, C.8]
       - Tagging characters [StringPrep, C.9]
 
    In addition of checking of Bidirectional Characters [StringPrep, Section 6]
    and the Unassigned Code Points [StringPrep, A.1].
 
    Returns:
        A tuple with ("probited character", "breaked_rule")
    ) z4Space characters that contains the ASCII code pointsz&Space characters non-ASCII code pointsz(Unassigned Code Points [StringPrep, A.1]z.Non-ASCII space characters [StringPrep, C.1.2]z,ASCII control characters [StringPrep, C.2.1]z(Private Use characters [StringPrep, C.3]z+Non-character code points [StringPrep, C.4]z'Surrogate code points [StringPrep, C.5]z9Inappropriate for plain text characters [StringPrep, C.6]zGInappropriate for canonical representation characters [StringPrep, C.7]zDChange display properties or deprecated characters [StringPrep, C.8]z$Tagging characters [StringPrep, C.9]Nr­)rrrrrrr    r
r r r ÚupdaterÓr<r€Úitems)rÔÚrulesruÚcharÚruleÚfuncs      r4Ú"validate_normalized_unicode_stringrÜs¯€ô2AMÜ2>Ü4?Ü:FÜ8HÜ4?Ü7BÜ3>ÜEPÜS^ÜP[Ü0;ñ €Eð(Ø  ‰ Ô0°Ó@ÔAðò"ˆØŸ+™+›-ò    "‰JˆD$ِDz˜d c›kؘTzÔ!ñ    "ð"ð
øô ò(Øœs 3›xÐ'Õ'ûð(úsÁB    B1 B,Â&B1Â,B1Úa_stringcó¶—|Dcgc]}t|«rdnt|«rdn|‘Œ }}dj|«}tjd|«}|sy|Scc}w)a(normalizes a unicode string according to rfc4013
 
    Normalization of a unicode string according to rfc4013: The SASLprep profile
    of the "stringprep" algorithm.
 
    Normalization Unicode equivalence is the specification by the Unicode
    character encoding standard that some sequences of code points represent
    essentially the same character.
 
    This method normalizes using the Normalization Form Compatibility
    Composition (NFKC), as described in rfc4013 2.2.
 
    Returns:
        Normalized unicode string according to rfc4013.
    r­r~ÚNFKC)rrrrÍÚ    normalize)rÝrÙÚ    nstr_listÚnstrs    r4Únormalize_unicode_stringrãCsj€ð*öà ô˜DÔ!‰¬[¸Ô->¡rÀDÑHð€Iðð
7‰79Ó €Dô
×  Ñ   ¨Ó .€DÙ àà €Kùòs…#AÚpayloadrcó—t|t«r|St|t«r t|«St|t«s    t|j    |¬««St|«S#t
$r}t d«|‚d}~wwxYw)z(Initialize a bytearray from the payload.rzpayload must be a str or bytesN)r,r/r-ÚbytesÚencodeÚAttributeErrorr<)rärrus   r4Úinit_bytearrayréhs}€ô'œ9Ô%؈ܐ'œ3ÔܘÓ!Ð!Ü gœuÔ %ð    HܘWŸ^™^°X˜^Ó>Ó?Ð ?ô WÓ Ðøôò    HÜÐ=Ó>ÀCÐ Gûð    Hús¿A%Á%    A?Á. A:Á:A?cóö—dddœ}tjdk(rtdtj«dvrd|d<n6dtj«dvrd    |d<ntj«|d<d
tj«d ›|d <|Stj
«|d<tj «d k(rdtj«d›|d <|Sdjt«dd«|d <|S)z4Return a dict with the platform arch and OS version.r~)ÚarchÚversionÚntÚ64rÚx86_64rëÚ32Úi386zWindows-rrìÚDarwinzmacOS-ú-r`)
r•rÃÚplatformÚ architectureÚ    win32_verÚmachineÚsystemÚmac_verrrÇ)Úplats r4Ú get_platformrûysü€ð=?È2Ñ3N€DÜ    ‡ww$‚Ø ”8×(Ñ(Ó*¨1Ñ-Ñ -Ø#ˆDŠLØ ”X×*Ñ*Ó,¨QÑ/Ñ /Ø!ˆDŠLä#×0Ñ0Ó2ˆD‰LØ$¤X×%7Ñ%7Ó%9¸!Ñ%<Ð$=Ð>ˆˆY‰ð €Kô  ×'Ñ'Ó)ˆˆV‰ Ü ?‰?Ó  Ò (Ø &¤x×'7Ñ'7Ó'9¸!Ñ'<Ð&=Ð>ˆD‰Oð €Kð"Ÿh™hÔ'9Ó';¸A¸aÐ'@ÓAˆD‰Oà €Kr6Úfullpathcó"—t|t«s td«‚    |jdd«\}}t    j
|«}t ||«}|S#t$rtd|›d«d‚ttf$r}t|›«|‚d}~wwxYw)a(Import an object from a fully qualified module path.
 
    Args:
        obj (str): A string representing the fully qualified name of the object.
 
    Returns:
        Object: The imported object.
 
    Raises:
        ValueError: If the object can't be imported.
 
    .. versionadded:: 8.0.33
    z]'fullpath' should be a str representing the fully qualified name of the object to be importedú.rzNo callable named 'ú'N)    r,r€r<ÚrsplitÚ    importlibÚ import_moduleÚgetattrrèÚModuleNotFoundError)rüÚ
module_strÚ callable_strÚmoduleÚobjrus      r4Ú import_objectr    s¤€ô h¤Ô $Üð $ó
ð    
ð,Ø#+§?¡?°3¸Ó#:Ñ ˆ
LÜ×(Ñ(¨Ó4ˆÜf˜lÓ+ˆð €Jøô òFÜÐ.¨x¨j¸Ð:Ó;ÀÐEÜ Ô/Ð 0ò,ܘC˜5Ó"¨Ð+ûð,ús6AÁ'BÁ< B        BÚcipher_as_osslÚ tls_versioncó’—|tj|i«j«vr!d|›d}tj|t
«yy)aIEmits a warning if a deprecated cipher is being utilized.
 
    Args:
        cipher: Must be ingested as OpenSSL name.
        tls_versions: TLS version to check the cipher against.
 
    Raises:
        DeprecationWarning: If the cipher is flagged as deprecated
                            according to the OSSA cipher list.
    z$This connection is using TLS cipher ú[ which is now deprecated and will be removed in a future release of MySQL Connector/Python.N)rrÆÚvaluesÚwarningsÚwarnÚDeprecationWarning)r
r Úwarn_msgs   r4Úwarn_ciphersuites_deprecatedr®sR€ðÔ4×8Ñ8¸ÀbÓI×PÑPÓRÑRà2°>Ð2BðC&ð &ð    ô
     ‰ hÔ 2Õ3ð Sr6cóV—|tvr!d|›d}tj|t«yy)aEmits a warning if a deprecated TLS version is being utilized.
 
    Args:
        tls_versions: TLS version to check.
 
    Raises:
        DeprecationWarning: If the TLS version is flagged as deprecated
                            according to the OSSA cipher list.
    z%This connection is using TLS version r N)r rrr)r rs  r4Úwarn_tls_version_deprecatedrÂs:€ðÔ-Ñ-à3°K°=ðA&ð &ð    ô
     ‰ hÔ 2Õ3ð .r6có\‡—eZdZdZdeddfd„Zdedefd„Zded    eddfˆfd
„ Zdefd „Z    ˆxZ
S) ÚGenericWrapperz<Base class that provides basic object wrapper functionality.Úwrappedr%Ncó—||_y)z Constructor.N)Ú_wrapped)Úselfrs  r4Ú__init__zGenericWrapper.__init__Øs    €à$ˆ r6Úattrcób—||jvr t||«St|j|«S)zçGets an attribute.
 
        Attributes defined in the wrapper object have higher precedence
        than those wrapped object equivalent. Attributes not found in
        the wrapper are then searched in the wrapped object.
        )Ú__dict__rr)rrs  r4Ú __getattr__zGenericWrapper.__getattr__Üs.€ð 4—=‘=Ñ  ä˜4 Ó&Ð &ät—}‘} dÓ+Ð+r6rÃr£c󸕗d|jvr||jd<y||jvrt‰|    ||«y|jj||«y)zSets an attribute.rN)rÚsuperÚ __setattr__r)rrÃr£Ú    __class__s   €r4r#zGenericWrapper.__setattr__ésRø€à ˜TŸ]™]Ñ *Ø(-ˆDM‰M˜*Ñ %Ø à 4—=‘=Ñ  ä ‰GÑ   eÔ ,Ø à  ‰ ×!Ñ! $¨Õ.r6cóB—|jjjS)zGets the wrapped class name.)rr$Ú__name__)rs r4Úget_wrapped_classz GenericWrapper.get_wrapped_classös€à}‰}×&Ñ&×/Ñ/Ð/r6) r&Ú
__module__Ú __qualname__Ú__doc__rrr€r r#r'Ú __classcell__)r$s@r4rrÕsRø„ÙFð% ð%¨ó%ð , ð ,¨ó ,ð / ð /¨Cð /°Dõ /ð0 3÷0r6r)NN)Né)r6rŽ)Vr*rr•rôr0r±rµrÍrÚdecimalrÚ    functoolsrÚ
stringpreprrrrr    r
r r r rrrrrÚtypingrrrrrrrrrÚmysql.connector.abstractsrÚ custom_typesrÚ tls_ciphersrr Útypesr!r"ÚboolÚ__annotations__r-Úfloatr#rær5r?rCrGrJrMrPrVr\rfrprvrxr|r€r„r‹r¤r§r»rÇrÏrÓrÜrãr/rérûr    rrrrYr6r4ú<module>r8sýðò:ãÛ    ÛÛ ÛÛ
ÛÛåÝ÷÷÷÷÷ 
÷
õ
ñÝAå$ßMÝà€ÓðØ    Ø Øð    Q€ ˆuT˜#‘Y  U¡ ¨T°'©]¸DÀÑ<LÐLÑMóð ,s˜EzÑ"ð , só ,ð ð ˜ó ð ð ˜ó ð%ð%˜ó%ð ð ˜ó ð ð ˜ó ðð˜óð4*ˆcð*eó*ð$Eð ð¨¨u°e¨|Ñ)<óð2L˜ð2L %¨¨x¸©Ð(>Ñ"?ó2Lðj%˜Uð% x°°h¸u±oÀsÐ6JÑ0KÑ'Ló%ðT ØñGØ    ðGà    %‰ðGð 3‰-ðGð ˆ5%ˆ<Ñó    Gð2%ð˜sð u¨U°C¨ZÑ'8óð>Uð>˜u U¨H°S©MÐ%9Ñ:ó>ð46˜
ð6 só6ðEGñ 'Ø ð 'Ø!)¨#¡ð 'Ø>Að 'à    ó 'ð˜4  S ™>óð*˜D  c ™Nóð( H¨T°#°s°(©^Ñ$<óð."˜E # s¨C -Ñ0ó"ðJ ¨Sð °Só ðT¨SðT°T¸#¸xÈÈÈtÈ Ñ?TÐ:TÑ5UóTð81Øð1à ˆeC˜H‰oÑó1ðh" sð"¨só"ðL<CñØ 3˜
?Ñ #ðØ58ðàóñ" ƒðd˜3  c¨5°°c°©?Ð&:Ñ ;Ð;Ñ<òó ðð*˜Cð Cóð>4°ð4À3ð4È4ó4ð(4¨Sð4°Tó4÷&#0ò#0r6