Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-psycopg-c for
openSUSE:Factory checked in at 2026-05-18 17:48:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-psycopg-c (Old)
and /work/SRC/openSUSE:Factory/.python-psycopg-c.new.1966 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-psycopg-c"
Mon May 18 17:48:17 2026 rev:15 rq:1353777 version:3.3.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-psycopg-c/python-psycopg-c.changes
2026-02-23 16:14:48.442919701 +0100
+++
/work/SRC/openSUSE:Factory/.python-psycopg-c.new.1966/python-psycopg-c.changes
2026-05-18 17:49:09.883148795 +0200
@@ -1,0 +2,11 @@
+Mon May 18 10:30:30 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 3.3.4:
+ * Fix possible spurious connection timeout in systems with very
+ long uptimes in C extension (:ticket:`#1280`).
+ * Fix client-side adaptation of enums whose name require quotes
+ (:ticket:`#1298`).
+ * Consistently populate ~Cursor.statusmessage after
+ ~Cursor.executemany() (:ticket:`#1302`).
+
+-------------------------------------------------------------------
Old:
----
psycopg_c-3.3.3.tar.gz
New:
----
psycopg_c-3.3.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-psycopg-c.spec ++++++
--- /var/tmp/diff_new_pack.5qbrTS/_old 2026-05-18 17:49:11.715224500 +0200
+++ /var/tmp/diff_new_pack.5qbrTS/_new 2026-05-18 17:49:11.731225162 +0200
@@ -19,7 +19,7 @@
%{?sle15_python_module_pythons}
Name: python-psycopg-c
# This needs to upgraded in lockstep with python-psycopg
-Version: 3.3.3
+Version: 3.3.4
Release: 0
Summary: PostgreSQL database adapter for Python -- C optimisation
distribution
License: LGPL-3.0-only
++++++ psycopg_c-3.3.3.tar.gz -> psycopg_c-3.3.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/psycopg_c-3.3.3/PKG-INFO new/psycopg_c-3.3.4/PKG-INFO
--- old/psycopg_c-3.3.3/PKG-INFO 2026-02-18 13:34:29.624893700 +0100
+++ new/psycopg_c-3.3.4/PKG-INFO 2026-05-01 22:43:45.509269700 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: psycopg-c
-Version: 3.3.3
+Version: 3.3.4
Summary: PostgreSQL database adapter for Python -- C optimisation distribution
Author-email: Daniele Varrazzo <[email protected]>
License-Expression: LGPL-3.0-only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/psycopg_c-3.3.3/build_backend/psycopg_build_ext.py
new/psycopg_c-3.3.4/build_backend/psycopg_build_ext.py
--- old/psycopg_c-3.3.3/build_backend/psycopg_build_ext.py 2026-02-18
13:34:18.000000000 +0100
+++ new/psycopg_c-3.3.4/build_backend/psycopg_build_ext.py 2026-05-01
22:43:36.000000000 +0200
@@ -9,10 +9,12 @@
import os
import sys
+import logging
import subprocess as sp
-from distutils import log
from distutils.command.build_ext import build_ext
+log = logging.getLogger(__name__)
+
def get_config(what: str) -> str:
pg_config = "pg_config"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/psycopg_c-3.3.3/psycopg_c/_psycopg.c
new/psycopg_c-3.3.4/psycopg_c/_psycopg.c
--- old/psycopg_c-3.3.3/psycopg_c/_psycopg.c 2026-02-18 13:34:28.000000000
+0100
+++ new/psycopg_c-3.3.4/psycopg_c/_psycopg.c 2026-05-01 22:43:44.000000000
+0200
@@ -4027,7 +4027,7 @@
struct __pyx_obj_9psycopg_c_2pq_PGconn *__pyx_v_conn;
int __pyx_v_conn_status;
PyObject *__pyx_v_conninfo;
- float __pyx_v_deadline;
+ double __pyx_v_deadline;
PyObject *__pyx_v_encoding;
PGconn *__pyx_v_pgconn_ptr;
int __pyx_v_poll_status;
@@ -4047,7 +4047,7 @@
struct __pyx_obj_9psycopg_c_8_psycopg___pyx_scope_struct_1_cancel {
PyObject_HEAD
struct __pyx_obj_9psycopg_c_2pq_PGcancelConn *__pyx_v_cancel_conn;
- float __pyx_v_deadline;
+ double __pyx_v_deadline;
PGcancelConn *__pyx_v_pgcancelconn_ptr;
int __pyx_v_status;
double __pyx_v_timeout;
@@ -17807,7 +17807,7 @@
size_t __pyx_t_4;
PGconn *__pyx_t_5;
int __pyx_t_6;
- float __pyx_t_7;
+ double __pyx_t_7;
PyObject *__pyx_t_8 = NULL;
PyObject *__pyx_t_9 = NULL;
int __pyx_t_10;
@@ -17879,14 +17879,14 @@
/* "psycopg_c/_psycopg/generators.pyx":41
* cdef int poll_status
* cdef object wait, ready
- * cdef float deadline = 0.0 # <<<<<<<<<<<<<<
+ * cdef double deadline = 0.0 # <<<<<<<<<<<<<<
*
* if timeout:
*/
__pyx_cur_scope->__pyx_v_deadline = 0.0;
/* "psycopg_c/_psycopg/generators.pyx":43
- * cdef float deadline = 0.0
+ * cdef double deadline = 0.0
*
* if timeout: # <<<<<<<<<<<<<<
* deadline = monotonic() + timeout
@@ -17931,12 +17931,12 @@
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_7 = __Pyx_PyFloat_AsFloat(__pyx_t_3); if (unlikely((__pyx_t_7 ==
(float)-1) && PyErr_Occurred())) __PYX_ERR(8, 44, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_7 ==
(double)-1) && PyErr_Occurred())) __PYX_ERR(8, 44, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_cur_scope->__pyx_v_deadline = __pyx_t_7;
/* "psycopg_c/_psycopg/generators.pyx":43
- * cdef float deadline = 0.0
+ * cdef double deadline = 0.0
*
* if timeout: # <<<<<<<<<<<<<<
* deadline = monotonic() + timeout
@@ -18874,7 +18874,7 @@
PyObject *__pyx_t_4 = NULL;
PyObject *__pyx_t_5 = NULL;
size_t __pyx_t_6;
- float __pyx_t_7;
+ double __pyx_t_7;
int __pyx_t_8;
PyObject *__pyx_t_9 = NULL;
PyObject *__pyx_t_10 = NULL;
@@ -18902,7 +18902,7 @@
* def cancel(pq.PGcancelConn cancel_conn, *, timeout: float = 0.0) ->
PQGenConn[None]:
* cdef libpq.PGcancelConn *pgcancelconn_ptr =
cancel_conn.pgcancelconn_ptr # <<<<<<<<<<<<<<
* cdef int status
- * cdef float deadline = 0.0
+ * cdef double deadline = 0.0
*/
__pyx_t_1 = __pyx_cur_scope->__pyx_v_cancel_conn->pgcancelconn_ptr;
__pyx_cur_scope->__pyx_v_pgcancelconn_ptr = __pyx_t_1;
@@ -18910,14 +18910,14 @@
/* "psycopg_c/_psycopg/generators.pyx":92
* cdef libpq.PGcancelConn *pgcancelconn_ptr = cancel_conn.pgcancelconn_ptr
* cdef int status
- * cdef float deadline = 0.0 # <<<<<<<<<<<<<<
+ * cdef double deadline = 0.0 # <<<<<<<<<<<<<<
*
* if timeout:
*/
__pyx_cur_scope->__pyx_v_deadline = 0.0;
/* "psycopg_c/_psycopg/generators.pyx":94
- * cdef float deadline = 0.0
+ * cdef double deadline = 0.0
*
* if timeout: # <<<<<<<<<<<<<<
* deadline = monotonic() + timeout
@@ -18962,12 +18962,12 @@
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_7 = __Pyx_PyFloat_AsFloat(__pyx_t_4); if (unlikely((__pyx_t_7 ==
(float)-1) && PyErr_Occurred())) __PYX_ERR(8, 95, __pyx_L1_error)
+ __pyx_t_7 = __Pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_7 ==
(double)-1) && PyErr_Occurred())) __PYX_ERR(8, 95, __pyx_L1_error)
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_cur_scope->__pyx_v_deadline = __pyx_t_7;
/* "psycopg_c/_psycopg/generators.pyx":94
- * cdef float deadline = 0.0
+ * cdef double deadline = 0.0
*
* if timeout: # <<<<<<<<<<<<<<
* deadline = monotonic() + timeout
@@ -91865,7 +91865,15 @@
CYTHON_UNUSED_VAR(__pyx_mstate);
{
const struct { const unsigned int length: 9; } index[] =
{{21},{13},{36},{8},{9},{17},{19},{8},{4},{179},{15},{21},{11},{22},{9},{21},{25},{27},{54},{13},{23},{13},{1},{1},{0},{1},{2},{8},{40},{46},{36},{56},{44},{30},{6},{17},{21},{22},{40},{17},{22},{39},{19},{21},{28},{39},{13},{24},{6},{19},{19},{21},{24},{22},{26},{24},{38},{40},{34},{33},{31},{32},{30},{22},{7},{6},{62},{31},{9},{45},{42},{2},{37},{9},{22},{70},{9},{8},{9},{19},{27},{42},{36},{51},{31},{50},{28},{27},{33},{32},{30},{24},{28},{27},{26},{14},{35},{36},{25},{14},{35},{36},{38},{35},{37},{15},{22},{29},{17},{32},{24},{24},{9},{45},{28},{5},{20},{16},{4},{3},{17},{35},{37},{11},{29},{31},{2},{6},{19},{37},{39},{27},{27},{23},{41},{43},{14},{32},{34},{15},{33},{35},{23},{23},{19},{37},{39},{22},{40},{42},{16},{34},{36},{16},{34},{36},{10},{28},{30},{16},{10},{28},{30},{6},{17},{35},{37},{11},{29},{31},{17},{35},{37},{11},{29},{31},{17},{7},{25},{27},{12},{15},{13},{15},{7},{25},{27},{12},{17},{35},{37},{19},{17}
,{7},{9},{13},{16},{34},{36},{16},{34},{36},{10},{28},{30},{10},{28},{30},{20},{38},{40},{28},{14},{32},{34},{22},{24},{42},{44},{18},{36},{38},{7},{19},{37},{39},{13},{31},{33},{19},{14},{18},{36},{38},{18},{36},{38},{12},{30},{32},{18},{36},{38},{17},{35},{37},{12},{11},{30},{29},{32},{31},{18},{11},{29},{31},{6},{8},{4},{16},{34},{36},{16},{34},{36},{10},{28},{30},{4},{16},{34},{36},{16},{34},{36},{10},{28},{30},{4},{16},{34},{36},{16},{34},{36},{10},{28},{30},{15},{33},{35},{10},{9},{28},{27},{30},{29},{17},{16},{17},{9},{27},{29},{10},{22},{40},{42},{16},{34},{36},{20},{38},{40},{14},{13},{20},{38},{40},{14},{32},{34},{19},{37},{39},{4},{19},{37},{39},{13},{31},{33},{19},{37},{39},{13},{31},{33},{19},{37},{39},{13},{31},{33},{21},{39},{41},{15},{33},{35},{3},{4},{8},{17},{19},{37},{39},{19},{37},{39},{13},{31},{33},{13},{31},{33},{15},{33},{35},{16},{7},{9},{7},{5},{9},{7},{15},{8},{16},{8},{20},{1},{2},{2},{5},{3},{9},{27},{29},{9},{27},{29},{16},{8},{16},{19},{37},{39},{22},{
40},{42},{15},{34},{33},{36},{35},{10},{13},{31},{33},{16},{34},{36},{16},{34},{36},{9},{28},{27},{30},{29},{4},{16},{34},{36},{11},{10},{29},{28},{31},{30},{16},{34},{36},{24},{16},{34},{36},{10},{28},{30},{18},{10},{28},{30},{18},{36},{38},{12},{30},{32},{21},{39},{41},{15},{33},{35},{21},{39},{41},{15},{33},{35},{23},{41},{43},{17},{35},{37},{18},{36},{38},{12},{30},{32},{11},{29},{31},{22},{25},{24},{22},{22},{20},{21},{25},{28},{28},{24},{7},{3},{4},{16},{34},{36},{11},{10},{29},{28},{31},{30},{1},{4},{13},{1},{8},{3},{8},{9},{10},{8},{10},{18},{6},{1},{8},{8},{9},{10},{4},{6},{7},{9},{6},{11},{9},{5},{9},{17},{18},{5},{3},{3},{11},{8},{4},{13},{11},{7},{13},{10},{8},{17},{7},{6},{4},{4},{8},{4},{8},{5},{7},{9},{5},{8},{5},{2},{4},{13},{10},{7},{1},{6},{8},{9},{6},{3},{7},{2},{7},{4},{5},{10},{27},{5},{6},{13},{5},{6},{17},{15},{7},{12},{11},{6},{5},{8},{3},{7},{3},{9},{10},{17},{17},{7},{10},{46},{12},{2},{1},{5},{8},{3},{12},{12},{12},{12},{19},{7},{8},{4},{13},{11},{7},{5},{
6},{4},{8},{9},{13},{6},{7},{6},{7},{8},{8},{3},{12},{3},{10},{7},{9},{4},{8},{7},{4},{7},{11},{6},{6},{5},{3},{6},{3},{2},{3},{6},{16},{14},{8},{16},{6},{10},{5},{20},{11},{3},{7},{8},{10},{4},{7},{18},{14},{17},{11},{9},{18},{10},{12},{3},{7},{10},{7},{5},{14},{12},{11},{10},{24},{24},{14},{12},{5},{1},{5},{6},{7},{10},{17},{13},{7},{7},{3},{6},{7},{6},{3},{4},{4},{10},{10},{11},{6},{2},{1},{6},{3},{7},{4},{4},{16},{16},{11},{12},{12},{10},{12},{19},{5},{4},{5},{3},{5},{6},{3},{3},{8},{3},{5},{4},{9},{7},{8},{9},{13},{2},{5},{10},{6},{6},{6},{7},{12},{3},{9},{5},{5},{6},{4},{6},{7},{8},{1},{4},{9},{18},{19},{19},{20},{47},{13},{14},{1},{2},{0},{2},{1},{1},{4},{66},{35},{46},{290},{352},{42},{10},{110},{5},{123},{26},{26},{25},{78},{94},{28},{27},{27},{81},{113},{505},{295},{299},{220},{65},{65},{364},{7},{17},{9},{32},{9},{226},{10},{466},{129},{191},{5},{2},{8},{5},{60},{12},{36},{60},{5},{55},{11},{213},{248},{6},{5},{8},{3},{1},{9},{3},{4},{5},{5},{3},{3},{4}};
- #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (6366 bytes) */
+ #if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >=
0x030e0000 /* compression: zstd (6567 bytes) */
+const char* const cstring =
"(\265/\375`\tM\355\314\000\372\305p)I\340\3208\0070\314\363D\236\2170\216\301\370\010\003a
\014\230\035a
\014\306)\357\006kcK\221\266E\272!\261\326I\204\270pz\227\203\337\316\374\014o7f>G\242\263!8\305\004\314\006P\000R\376\210\177\024\341B\033\001@\002U\002\266\002U\344:|\247\303\2747\264.\267_*\376\217\361\367\302\257\303\227\357\360U\371\1779s\0246\266\232o\235\361\267d\"H\201B\267m[\007t5w\301\333\366]\270m\3264\303\204C\274\261WM\034\260)\206\351\356}_\334u}\235\021\255\326\337\362\211\345\235\027\267#\260\314l\217g\375\256\216[\260\332\026\375\255\353\362:\277Dlu\006\301p\363kc\365\337\303\267k\301\300\226\020'{j\211\033\254\326\265\253\367\261W\370\2722\373\212\340R\367\nK\245Y\365T\r\372q\016\372\\Z\343\377\217\263\373z>\036\266\257W\246\321i\341\261\324\327\2563\021H\274\240\252\266/\262,K\375\226\266_\315\331\313\272\273/\357\267\350MX\301\241\335\036\344\266\313\337g\275/\004\361}\205\233k\313\275\337\231\377O\227\367^\3712h\271\356\353\316\23
7g\252\231\205o\020\213\225\303\356\263\036\310\303<\343\375w-\253~\337w5A\034|Y\276_\227\177\"\347\301\271\261\031\375\365\177k\013Vn\222\275\324\031\334\272\373C\374\3735\370\272\212\332\342\313\325\177\205x\363\333\272\036\376\347b\217\271}i\357\277\223}u\361\026\376/\226\265\207\337V\316\362j[\036\0163\353\276fD\320\263\334o\236g\353L\313\311\203\017\307\327G\304\251\026\337\341\017a\317\263\237\213\\\215\360\362\"{a\251%zr,\337\336\367\227Uk\t\025\317\353\026\337\331\207\357\373\241\330\341_\270_\337\350t7:\247\216\263>-0\376\033\225\316\351\367gC<\320\325\327\253\033\316\227[S\345\277+\376m\301\232\371\343\032f\261\262p\352i?(r\376\335\220\253\254\\\367\357m\277\216\013w\335\274{\030\257\253\207m\215\221\211q\321\261\321\251X?\357\304\357\271\325\317yu\337\212\263\213\2134\225[\027\257\317s\216gs\tS\013_\315\267\345\326\25358==\325\273\237\005\3028\"\277\370\2620\216\213I?\370\nkL\357\345W}|\277\007/X\361\255\336\357\260>Wy\306\330vu\205\316\t\032\375,V\010\342q\316\2512\252\2
11\313\236\343L\303A\353\245L\001""\034\021\266\275\211:\022\\]m\221PO\210:,\225\327\026\237\026.\\p\344\330\034S\3675\025(\347T\336\235\250\340\363\324V\230\252\037\016GTQ\203\251\252\255\211\312}\210\212\355\010\027\223\314\314\214\351\345\345\305\205\013\254m\254\333\266w\303p\353x\370;\004C\276-k\223q\236y\346.\316[\342\326|w\367\0037g]\327\336v\267\271\377l\2677\220\336\250\027\254C\276;\373\201\257[\262\337\372\263!\014\350\277\237\356\2028|\205\373\247{W\267\3116\021\024\3050o0p;m\234\005\255\216\355S\367\032\204\201\033\337\031\344\254\377\300\014n\341\326\002E\020\246\005\356\227\325\026\334\031\006\227E\220\333\360\017\2073\216\375\313\342\356\342\3143\316\257\375_\350\345\327\226\331\327\377\340\273=\313\356\375210\333~\315\335{c\372\201\362\266\357\366-\2737n\323\337j\345\022\333\326\341\220\305\372<\235\367\306\0027\327\316\227\245;\354\317v\371\333p\0227W\307\237\365<\354d\335\376\377\2559\270\275\353m[+\344\336\363\266\370\235\376m\177_\356\366\327\375t\226\373\316j\2
76\341\273u\333\266_\337\356\203\356\366\360\263B\356\313\231\303\317=\367\333r\334g\2018\267\373\361\345a\326\271;\345\333aq[\357\346m\353\3578\233Y\030\347qf\241\342?\316\362\253Sl\374\332\024)Z\340\266w,\353\355\353\266W\326\254\317\352\347\367\333\266=\351\017\342\226\177\357\365h\353\352\264E\361/\233\2439\317\266=\313\362\304\362\216\350\331\337I\261\203bg\207\365;\\\3669\033\357n\215L\324\3316\361\225\265\016LG\245\322Y\251\260Ym7:\336=\301\303Aq\225c/T\270\200\322\311\261\3119\221\343\275\354\232\330,\320gqgY\372y\364\211\034\231\030\030.\023\303C\324\004\255r\316\377\266\234\215\345\226\323\254\036\350n\035v\277C\263\321x4\033\304\363\034\302V\232\363p\331\257t\013\014\305\377\331\370\267j~[\020\333\212\235T\016\016\010\032\020\333\326\235@\244N\254zR\326$\343\302\342\241ws\004\034\313\370\007\207,\242g_\357\220o\375\034\307\267{\317\347t:\325\226\017\014\353\014\007\235-$\2244j\240\201dP\0139P\251h\255S\203Y@ur\250\241L\031\327I\232\242\261NW\201\216\242\361\323\236\035J\2
50=c\346-5\2308\350%R\t{\242\274\210x""\214\"vT\031IJ\235\000Yr\226\316\231\007\350\003Ty\"\225\226J\017\344\311\000\016\020\006h\250\344@\362\224\0024F\201\310\rIB\006\361\2143\250\221\0312-\204\240\007R]\264a,I\245MGu\024:5\2063;\013\351\234\264d\003\220\332\250\\u\217\276\2121\200\206\210\320P\311u\225\276\303\221\001\310\n*\375bf\340\003F\326\214$\220\032l\214\001)\275\256\352+!\263f\002\tjg\025j\224zG\377
Q\302I\313\223nC\236\210\240\240!\0226\256\214*\t\343HOu\222\376\200\003EC\346G\311C\272N^\230\230\033\312R)a\264#\202\321ff`\000\007\201\033\260\021\344\3119:3\224\320\221i\242P\262\341sr\200\200B\020\241)ZM\014\232\241\234\300\201\302\372%5\324R#\003)j$\001IK\3436!M.\224#\345\252\343\220%\223\245\374\310\006$\013&(\214\024@\2125[RG6:Z\313\031\203\005%M\235\033*Zi@\247\314L`\242j\232\352*\025BZR\013\231\020J\226\376\340\344\246d\320K%\030\314\010%\206^\200,9}\312T\271\325H\036\211\200D$M\361nc\310\221p\0240\212\204z\013\030\231@\301\000\216\217\033!\223+\021\300
\035\240NnZ\3
63B\210Vs\2120IL]\306\224\013T\214)c\307h!D\373`KWo!\027\210\244#\023\205\000E\2217c\206R\331\323U\234\214\252\232\212\226B\373L\r\345MW1IC\247\314\tzBJG\264\013\247\214\211\242t9IC\275\236<HK\320\022R-U\262\272\213lP\222\252N
SV\n([\220(\244Xy{\214$1\222L\2242T:
MDj!\262D\244g\004\232\035\000IC%\254\3241\220|\334\031\021\220\310\020ia\274\231\201|\324J\2447&\370HG}E\246H\006\343\310\000\216\220\033(\263B\n\232\362Q\033\231A=\246\253\224N\317T\231\026DRK\252\220!F\222Q{\030K\343\010H\252\"S\310\030\263\230Y\201\030\030\031C\226\310\005\037\251\312$\2316%\252D\321I\275\364\221\246L\021\205\021t\344\243\206\"\031\210P\030\271B\216\310\013#\237\035\370HC&\254\\)G\345\205^\352)\0038\002\334@\365\024\021\272y\330n\333\266\333\026\037j\216-\336\237e\335\333m+\023b\205\203C\303\223\332J\250xt\366\312\314\314^\031\025@a\3475\003\204<\254\240\251\216k\326F\216\013\312\000\235AJG\nF\241\017\022\003D#c\220\250\006C\254\361\341\301!r\303\204\2328\320\232\371\243\0364\332\024#\214L-Cl\205$PRu\02
5!jV\232\025(\205\016P\224\245\205L\3000\312""\020Af\030ID\351\216\n\375\241i8\013\230/\025\255\221\262\201[\254\031\022z\221\rL\014&\364&\010q\230\025\020\245\026<D5\033!\264\017'\364D6\340@\003x\244\245\232\366Q/q\240\035,:V\254\350\330\331\351\020!\242\243\246\246#\325\221\n\311\340\340\270\021\203\243<\243\371\007\375q\241\256\016\355\\\240.T4\0227\357\350G\302\001\224\365\350\277@_\254\320\225\016\312c\303\303\206\002Z\220\031c\0020-d\260\031S\314\200j\010\010!Jm\214\005\343j\026\342Q\003f\006Br#\033\005%\325F<)g\n\232\002\"E\221P\004\006T'\314\371\246\253\014\260
\255!\010\261\264\n4\0004\330\231\000\210\004\002\010\323\310\0341K\312\316\3431\240\"gP#\200\005\233\357\324\230\254\262\002\357J\2437\032G\002f\003<JeG\251\240?\200\215\030I\"=\226\204N\330\212\016\344\301\201\366\225\223UK\321P\264?myBu\031\341\3504\221\202\2154*$(\252\004P\"=\374\244\036\306\t3\002\2424T\243\300\250\214
B\035\034@ETRj\241W\010\310\312\244\257R\231\322\331q~\2305\265\223\307L\351J\225\024k\313\220\
376\241*]\030\240
f\311\354\311\360\252\022\246|\032R$snhAQ\272'\032\331pQB%C\221<\325%\220\013\320\221\303X\220(\251\201\256BBAz\r\t\242\3020\"M\230\224\244\016\032\224J\235\205\334\270fI\004\002F$2\225)\2151\030\300\221\340F\357\271Q\361\310$@S\345\003\007\006\036\010VZ\013\241\006cgG\327\354\200\315,6\243h\034\215\202TX\300F\231\352\36489\310\372\006\225\n\243se\246\314\024\245\nk\252\230=\035\246\247\224\300\220\255\024\004\006\000\\LO\325i\214\nzN\251\357\224s\233;&\214\311K\232R\024\343#k\026\202\342gL`b(#\270
=\310\222\003eMWQmX\247\351)l\254\r\221\r\030\247\352\234`\232\224\253n\340A\214\252\234\320c\214h&\0225X)\203
\000\302\311b\306\350$`g\014\n\032#t*X\221(\"i\210v2S\035$\2074\250\263\250\202\246\224\214\315\210\210$IA\322\030cP@p\330\300\200@\034\017u\345\003\303\003\243l\222\2438\010\207(\010a\204x\204(\201\010\r\221I\222d:XU\310\225\343\034>\211\303\346\304\005\030\205Pm&\3740\331\267\020\350u%\221Z\211;\222\213g\301\377G\032S\276\257\347Y\013<*N\340\327x\243\307st\025
\207\327\255IM\253+\351e\246+\246\010+6G\374%u\320wa""\367#\031\200`\223O\365V\034[\006\230\\\304\306=\3468E\210\211\033k\037\326P\006\177\301\255&g{\003p6\315y\265\003Lm*\302\032\364>\302J\331\215\314@\017O\310\205\227<@\325\243\013\247\221\003\213\277\222msE\211^\331\354\200\032\237N\007\033\202\337\332\254\215\201\250\334\254\274\327\035\010\224.\262\317t\273^\240\004;}Ywu\374\260=\210/\365\301\017o\371\270\337\300\230\027\327*\247^\010_\221\352\263F\227{\035\245\n\253\254}\326A\033\207\024\260\343\251\322\024\237\026W\300\205\354.\304\322H\312b\223~\301\204\000n\350\2009J-\tU\244(\343\3645{\365\tj\252
\027\027\3220I\311\202.\302\206\324ex(\030GH\002V\224\226\033\216\357A\271\2653<\363\372\344!\324x\2616Gnz\362\026\336\032\266P\265Ro|\304\244\234{Fu1\241=0_\204\016\330\275+\200\323\244`\333\355ZN\262\304\253\033d\302\244\"\250\344\370\305\304\030\340\223\246x-\343\374Tg\r7\255\244L\367\346\030\235\n\021\036Z\303m\002*\300\022\215\3725cV\247\"j\222\257\326\255g<\366\216\272\344\37
3\367\354NA\014\231\215.(\371\343\210C\265umFe@\361\375\236\001\202\274\362B\001\220\252\326\3568`\023o\235\374\214\310J'\255\202T\342Yi\306\311\371\262>\025\346\203\210\365hKM\271\303\334\t\200\362\217\362\306\360i\215+;I\223\2152fM\003\370\316+\026\010\"\252\373\376<\343\000\332\347\210/~r8\376\001\367\276z\206a0'\001H\002lI\234\212\340D\342\351\212'\037\257\027*\327\006Y\n+\266\372\303\331\212Rw\016u\314\225\376\344\215\253\275\207b\013)[Yi'\\\3703)`\000#8.\2376c\225xN\243\335\306\372\257\301\217\230\361v\304)\014'\310\001\207m\256(t\234]/\326\362\217s\372Yb\312\315\266\276\356\323\354\233\205_q\200\352\016\251\233\314\247G\000f\310h}\270\306\211]\251\330l\036\201G\343\177'\273$\223\250;;\025l\236F\302\023\206\332\306D\220\20467\0144\033\036\200D$:S\3627\206FP\236\236\251\306\262\333\225\031Z\245vy_\230\016\344J\273\354d\354\262k\000a\0264\371\253B\n\254\365p\325\240\333\0049\364QR\302\\\211!\243\361/\366\004*\204[\213\363\210_A\364h\004\223{^r\265\222>\250B\n\251\t\222\222Q3\rA\
310\302.sy#\252_\312`\304o\377\327+\211$\247p\032\264rU\016""\245\301\300\312\346\r\331\367g\201-\002.B%\354\211\376b.\206\262{\371&Y-3\203\354Vp\265*\353(\324:\256s\2736\233\354\217\264\303D+\276\363\346ISE\206\365Yb\323\001\370\264\337\332O\323\n(%L\026-8\341\311\325\360\004C\316\2679\301/\330,Vc\033Y0\021Spqq\274\"\261(\3127\212\202\002\225\241a\321\207\276\004\352g(Ai\242\266\014\300a\345\313b\224\220[y\034\030\231\214\230\023\226~\022\245\264\316\004d\274P\370[`\260\3171\237`E\213Z\337\200=\274\377\264HZ\335\345\371!+\314\3014\016\247\007\243\021\242\243\n(\007*^\352K\006\357PX\350\250\016a\261\237\201\312\374nuO\240\202\273p\235y\315\030\t\201'\315D\033u~\032\343\"\004\201\252\201\306\323\003\010\031d\373GF\026,\300\022\202ge:n%\273\034\033\363g\204\237\214\030\341\214\231\261\335\2659\013#\212\360\025d\317\233\257\007\010\014\203?\326\320\004\022\3532\344,4\020&\234\234\002\353\321T\344\216`\177\246\t\016\023\347\245d[^\237\036X\264zOt\246\014h\326D\375\"\245\r\301\202\332y\3
12\276[\261k\2578r:LEL\356_;4\215m\216\352\343((\024\t/\001\3131\234\331\254\206\211\025Y\361L\362\017LEK\021\000\010\340\226\277\274\027\273w\220|\025\352^\335Ay\231%8\306\356=@B\325\352T,z=\263a\270\032/\256\205\310\035\240y\021\333\rb\344'\361\251\335S\363m\025mj\030\232D\0335\331\250xFU3W\277\355B=kJ\3026Hc
6\2739*v\250Eb\300+\270\234\262\305\351\234\372p\003$\257\3614\215\331\324\306.\202K\005\211\212@\216\304*\232:%\n\207F\372\340{\027+\003\023\370\032\325\306\310\353\246\013\345\330\242i\002@\336\223\354i\226\201c#\0343\315\005\372\023?F\036\3527\252\374hz\246\033\241C79\252C\037\255
\321\260\315\315\021\002\342rza\356\330\023\207\203\014MW5\2650K<\234\003\370\301\345\217\200YjC\030\377Cb\214]F\310k\224\343\326L\232\r\215Q\377\334b\014K\270\022->\316]\327\243HEwa\t\323\003\370q\255D\301B\317*Z\212\226.\315y\354\272ERh\273$y
@aFI\304F\354\274\242\375\215\036T\357\341\243\364\314\250^\231\243\271Js\213\274\354D\240\332#\2677<p\267\314\224\037\017\315\367\343\275\223\363\032\253
\210.\030t\343\005M6\274\242\341@\244\003\306\376\034\261ooo%&\377""\304\354\006\014u\205\036\331\204\362s\023\2322B\000\325\3228\027Y\300K\247l\213t\036\022\021JY\264\032=&i\361\007\371\003\375\360/\2367\247\231\3033\321\025\234=\0054k\t\020\332p\233\323\334\364b\237\023\001\2034\000\274\242a\306\324\377s\233\000\257\013
\210\302[_\031\265\360\372\353\021\\\247\275\221\2610\206\276\233\361\021\314\340\236\235s\375\247\004\212\324\374$\375\275T{\243\271\275\214W?\036|2
\020\227\314\377\216\236\206/\230\244k\210\333\261JSs\n\366Rs\366\014N\352\344\224[\025\2518\253[0\334\375P7\017z\220~4\363M\265\234Q\335\013\215q\244\022\206\364Iw\345ia0\237D\355\274\372\275\372\256\334\260\3059\016\213\007\332\251z\010\350\2202\201\025a^\342eF\250bA\225\tL-\241\235\237\256u\212\340\335\250\003E\232#B\036\037$&24_a\357\240\371\252\001\344\250\007ZW2\352\334\323n\360\034\032\324\000\017m@q\202\376S\356\037\305\234<\212\354\002\021\256>\214
\246\"\024j\302\034\342\323@\251.M\226Y\212\203W\240I5gv5\244
!\2028\345\t\226,\347\255w\002-J\261\nR\265\024u\224\352v\031\255\260?h!jo\331\3612,cygo\303\351\334$tW\265\203sn\217\0107\337\036\261\222EFh\236\326<N\316\245\242DE\215\027\265\233\301\327\007\020\353\177yi\330\016\314N\224\274l\033$\344\2260\025\222`\376q\271{\030\215ThIf\017X\004\322+\005\345Z\222\327\234\3560\333\355\306\253\246\207J\302m\3602\263\240F7-\315\0132Q,\2605\230!=\306\220\014\300\230\372N^\221\020\017\014'\230@\253\257\2320\312\331~\032O\230\203W\225\302\302<\233\3306\360n\221B9R\363R\264Z`4\213\324\244\2612\0038\244\010\203\224\222\307\255\345L`\330\355,?\365\305\213\237\020\323\264B\201\247\316\365sOn\226\301\206\022\221KO\354\227\376SY\020\346\320O\352(fU\306u\n\2154\250\\V2\257+\036\234\206\356\327i\316\213\330\366\345\346\017x\017\213\314*\316\"\014\261T\253\006\334_\016]\275A
\223\353I-p\302\267\321\371\007%+\261\323*\027\023\344\236\376J\211\367\377?\213\313\323\337\353\241\372\013\"Y\3377g\003\2100\364\030|\003\340\223p/+\024\023K4\005\347\350\346\205\033\224
\243\203\031\312Q\370\222o\374\2762\234\017,\340O\225\3346S`f\300\314\243""\225\325\240\371\362\024\214\210_e\346\324\025]\3553\272\211[\364\336\270\024\252\231KKb\\4d7\202\245\374\203\250/{\375\304\002\027\334\201\016\022\364Z\355\212\345\260(\211\3478\335L\253D9\243\213\226\242\326\n\347\033\036E\302\376\2459tz\317\356\372>\317\342U{U\201\263\372wG\320\021\375)\372|\261\271\306\326\035\303A\236\216\234\307\201&,\310\270v2\322\372\314\342\262
7>\325\373L_\017\342pq\324\373\345gbP\255\305\005(\252\331}Z\200iF\316\346\207:\371S\177_aP\377\303U\033\261e\302\260\251d?\353\250\322\333\253\246\315Rk\204V\337N-\342\334$\205[_\2051\347\214\3006,\207\241\331\317\233\224\n\310\214W\301\264\326*\305\325\211>N$B\325\262b\014\312D\000\232\243\031\\V]\246\037\023\016\2329@\371m\246\354}\204e\002\216\004\265\025
\026\334\221kZ\025\245\305\024\263v\006\307]\357\331Z\025\352\327\000\\A\314\206\247\257.~6\006_S\201\021\305,,\260\242&\201\2132_\323\350\032\304\016C\313|:\321\013D_\201B\331\201<\272%\
225N/\243j\020\331Y\000_t]\224\337t\310\357\251LU\346r]\224\235\245\037\025i\213\325\257\341!u\024\270\266\274\225;\272x)z\255pA\346q\n\030\024\016%d\215\313m$\216\330-^\242\346\253Z7\206*\262\314\345<\022-7\312\327\222}\245\337\217\241\210,\340p\037jT(4d\366f\r\224\200p\n11\374\235\322\365j\245bY\3544A.C\341\303W`\2006R\211W\362\"\326\347)>\320cT\217'\351\356\316N\032\376\034p\271?\007\373\221\207\335\362aQ\211}5\312J@k\222\371\227\372\373\355\035\242\275d\010\231\200\003\255R@\033\244\002\324\202\255hQ\031#\360\034\237\361\005\354\360\253\272u&\325a\314@4f!\320\345\222:S\034\315\237\232?\003[Bv\237\210\220\264\323-\013-z6\275\353\177\303;
\0329\234\3029\033\266\220\014\372\242wHt\017\005\221\351\314\275+z\353:8\037\331O\001>\263\345D&\224Q<\004O\356\265\242\302l>;\370#\232\335\201%\223\305\272\tF\214\202\333\004\004\252\016\005\255\331r\212\013N\242j8PjwV\004\230q\3209\245\226,*.\030!\313\232\031A\254)\232/U\177/\265\032sg\236\206\357\266Bx\274,Q\007\210\236\\\316\2065\352\313\n\2
13\263\317\205\322\345\354&\373\003:\332\202\310%\232f\243`\2647k4:\247T\204\315""\356c\205e]\254\355g\373P\277\211\332\227o\263%L;\035\350w\213\352\025\367y^\300\322\177\224\330)gc\356F\022\366qu\275H+\262\360e\347\316\346G\013\247\3069\231B235H_\303\323K\340\274doH3\372\244\267L0\241\014]\223\273\213uR1\377\206\213\275\265\023\366:\312O\306\rOL\3223\022:m\216\376\034\346TC\020\376\240\321\353t\246\256\314H\277\376I\344\373\302\003s\326\344QM\260\322\2639\005\242\020H\2009\367\244YX\215Siy\351R\000\005\201`aP\260X\037\303\300\366A`\306T\021\313_\021]n\262\025Z\3504\036A\2049;8\034\331O\325\377\"f\0042c\375\207\354\177\035M\204\217\365\243\327\341\226\217\343Q\232\227\016Z>\3132x\256W\251!\211(%\203h\223\333\013M\372\3515sH\316\226\326YY\235\ttO\372O\272b1\367,\360(\026HE\246\014(\"\365x\301/\007\245\006,\242\342\252\270\212\210\"b\343V\205\214\006\216G\255\241\240\022Bh!\212\0228\267\224\307F\245yY\024\255r\322\024no\355@\372\214\237\017\323\370\352\336&\272\177$\224\r\201\0074\024
-\222\310\212\t\027\000\002\003\177\247\021\377\003\003\272\317\010\262(C\234\t>\252/\325\0250JS\335[\013)\032\035r\0330Yz\262\247\325\030\204\351#~\345\001A\276|\014\265\3200\303\202\222IJ\314\367\300\235\210\266\206\211\242\273\013\276\022\232\346/\232\305;\276K>c\245\233\315{\177\260h\022\036\214i\027\037\262\210sE\210\246\272\"y4\261\247\367uH
\370W\311\217/v\370\227\2458\3537\014-\006\241\344t\"\233C\213`X\222\027rB\221~6\010\312\374#|\177\234\323\rx\215q\007\037\006\312\341\255\350_\022b\234?\201\227v\342\t\027\271\254\257e\037|\336\2121\017\231WC\r\264s'w\256\202\374o\3679~\332\346\263\216\310\266r\305\245']\023^kR\246\031XrQ\274\263+\211\025\232W\251s\035\330\333
[\306S\255\302\032,\037\261`D1\220\373\263n\t8\212\237\301B\207\370m\206[\t^\033\316\261\241q\316\370\250\355\220\236/\347Va\375\010[\307!\3344\376F~\371\352\362}\001\2416\271@\356\232\304DW\202\204\206u\272\034(g\356\221\0071\035S\221\"\237\245\331\000U}>\312\305\024\334\354\336,\312\324!\364\224<3\260U(2`}\230\372
C!\221\225\036\251\271O\277\244b\336\030\301Bn\214\355\006\213\306\344\372}\242\247T@""\300\371C}\t\312\336X\262\330\323\330d\326.\302VAQ\037\267!\226\220\030\005H{\221\006\006\313\232\336\010*9y\216\331
\377\253\\\313\n\355#\024\316
\200\306o\0257E\260I\\>\210\0058E7\210Qf\022\207\373\206\227\314S|\024\201|\330R\245\201f@\217\320\030\253\354A\374]\353w\002\305\026\026\302\214qR\216lt18c\010\364\2163j\0013\336\233\035\002\200\306X\036\032\203|\366lS\237\320\315\327=B:\231Zh`2\374\030eE~\233\267\217em\300\253\344\217\262\035\022\206hK\270\375\342\335\373\314pj\224\026\030`\r<\322\2503\274:1Ad\035\270\201v\205\301X\277\310\034?,\205\215\345\336\374*\025jl\260:8c\004\0171\026\362\340\031D\203\216\255\265\013\200\365\326?\277X\001\245\220\005p\242G5k$qZ\247x\024A?\006\036\222kP\217\256\341\236
:";
+ PyObject *data = __Pyx_DecompressString(cstring, 6567, 3);
+ if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
+ const char* const bytes = __Pyx_PyBytes_AsString(data);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1,
__pyx_L1_error) }
+ #endif
+ #elif (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (6366 bytes) */
const char* const cstring =
"BZh91AY&SY\021b\"\302\000\004\031\377\377\377\377\377\377\377\377\377\377\377\377\377\377\277\377\377\377@@@@@@@@@@@@@\000@\000`\034=v\350}2Z\001z\303\355\357}\237t\344\357Mb\243\273\265\313\254;t\273)\323\227Z\356\003\234\300B\213i\273\206QT\216\273\214WR\310\322\264\322\230\365y\n\000\017\241\200\004\241\010\232\232SL\233Hz\217$d\332&\236'\222e6\010\332S\314\214\000B#C\311<L\322\023\320\231\244z\236\246&\030\211\240\224
\002\001@\215\024\315\245\037\352\232zA\246\241\352i\344\323S\324\3204\323\324\032z@hh\r\003@\000mOSe\r\251\352\006\2324$\246\224\310~\251\351\241\246\247\251\351\017S\324\323O(4\310\000\001\352h\320\032\000\032\r\000\003@\032h\001\352\002MHD\310\0212&L\236\232\232\004\311\246\232h\003@h\3204\032\032\032\000\000\000i\243@\032i\243CB\"\232\t\211\223CODa\000\321\221\206\246\230hh\214\232\000\321\243\t\211\2010\206
\323M4\323A\240d\320$HF\201L&\004\320\0235\r50\224\374\224\360\247\351\252=O$~\251\352\000\000\000\000\000\000\017P\000=rr\360
46\211\032\243z\274\213r\367\275\332\277u\213\216(0\237\366\n$\210l\341k\210\357?\027\267\205YP`\342@r\034m\302{\232\002\220Q\210+\017\240\213\274:\200j\201\227m\320\242\254I\262,G+\313\345\373\034\335\321\2424s{\371e\226Zhn\320\332o\365\347\256\0021E\235a\022-UE\014\363\234M\206\315%\262!$\t\010H4H\216\344O
\004`\250W\243\001?\361P\212\025\224\330N\033\310\212\310\2021b\301\214\021\214\212\261d\030\310\202DdY\021\026(\244Ub\032de\224\327x\001\203\247Hn\333\244\343\225\362\212,\200\244G\006\ru\327-\t\264\223r\210\253!\024\004H\301PDT\214\005\0206\260D\021\207\214X\3324\030\343\214\221j\310\275UL\261\365\254B\313\r\2460\220\323\207/Si\262\t\220C5QH\2420\310\261`\327t\201\304E\212(\261c\024`)3\031s>-\016k\204\002\366\204N\220\242\3113\014\300\221\211\240gX9
@Vh=We#\030\303\242\366X\022\234Q\202s\233\263C\002\302\030\n\213B\261\251\010\n\262\022F\313\300\021\004Q9\023C@55\327\020\343\016T\025TU\021\233V-\2670\324v\206\244\3245\327\2062\231i\334\264%\307x\020\t\246\217\332d\214\025v\200
\351\245\366y-b\207\233AXaS\246""\016\0348,i\350\273@r\352hm\214\300\331u\312\345|\232/\322E*\252\245
\265kc2s\303H\035K\027K\017\262\240\355\362\270\"j\021\0222\305\323z\314\230:\321*\025J\320G\235;2N\303\226\270`\362\305\220\233\246\325\034P\\J`\341`\222j\312\023\306\274\032\031\323\314\264\3654!\326\360l\177\037\341\357\373\007\252\247~K\374\373\322\366\275\270\300
\022w\201|?L\367\210sb\006l\323\237{\017\367\225{\260m{\325wX+\341w}t\233\26612\231\262\274]\273\254xq\373\277l\250\232U\215\351\245\234;\264\356s\373^\374\240e\233\033\353\342\177_\r\243\301\205a!\260\006\177\002vx[\010\036\t\033U\270k\214~N\024\212\325\033\235\277WD\336\343\032k\235\022N\315SR%\024\316+\"\224\025\223\272\305\343\250M\226\315\357M\236\336+?\305\264i\226B\330\255)\204h\3703\240\221|f\340\025\236\261\032K\233\3449\032I\3070q\255\266m\270\252\277\2168\317s#[\221lb<\354\250\360wEe\275\266\333\262\333\255\222\221y\004rr.;\274_\305|\360\272\tnnJ\314;Y\t\323I\231d\374\201\014TC\027\033*L\251\020\\\203\332}\n
\373\312\324\266}\361B\256a\365VNJ\214)\021t\345F\300Q\205TV\202\212\217s\224\214\032\r\326\310\354zX\032\316c\211I.\205\222\231\344J\230\341\333y\365*U*m\267\257\275\205\023\330\331L\203dL\317fi\262\236\322\370\224\335\256\241\221k\03454x\376\016\023\334\277M|\215\335N\205\372G\365\024in\035*M\247\037\373\343\363\204\034pr\031\375\303cn\224\272\212\210O\232}\343\212~I\371;\177\017\223\373~uUU]\265\255LJ\2568\347\334O\252i\023\000\002\220\231\363\004\345\314\206\270\n\305\005\017\2641\201\323\345\341\300\274I\304.tCX\321W\241\200`h\215\006\241\336<p\363|\273|?\242\274\273\276\034\266|\276\303=\266!%\014y\341\000(c\210\020\037\021\206W\226\317E\"\205\2156\360\363o\345m\326\333\010\262\034\335\256n\256P\313UQ\240[\367\246\016\004\233\230w/Niex\272\301\321\206D\246@\275\021\363N\260\034\244C\014\307\020\337\361>\r\017\013\024/\020\335\177\tfB\005C\227\240\235\324\260v\264\020BC\310r\223\026\271\236X\253\225\277\365\252\240\252\247gR\372\303CI\263M\204\314\231\2239\227\350\366?\024\337\
345}]OA\024P\024Q\361\250\335
n\223p""\034a\200u33\214\221RI)\007k\202\242q\211
\214cD\242B\204P\217V\306VO\260\240\214\246\374\210I(\274\346\022\027dQ\027{\270\022a\031\002\342\351\315xvI\270\272w\212\322\231\356
-\"\377\242\274B0\232\232\247\236g\017\210?y7\266\r\376?D\306D\243\301\322\265\261\"\0218\267\032\233:\247\247;\205\017S\340\347\362?Gq>\316\013\257\374\357\256\376\3749\354\303\261\346\3462\0036\233\016\010\206\332A\036_\304\322F\255\304\002\330\207\212\262D\222E\300\030\030z\241Vf];\251\t\313\222\034\035\006\346\020\31465s\217F8\272\374\347\354\343\277\343L\300\337R\234\256\255\240A\322\232\332\225{\334Rs\255\207\274\255\230\213\247\0325\235[B\016\252*\322\226pqY\320\225\250\315\ny\227\227\257s\331\274\357\033Z\354\320\275\343k\027\275\347yZ\327j\306\355\332\347\273q\273\177
\242\305\301\332\253(\212,\347;>\247\363\306\ry\264=JP\220\325\243\203\3419\002}|\021\221\320t\034\177\233\354\022\273#&1\261\262\362\252;\351\026UUQR\326\267]\246_\223\300p\366\372k\n\366\034=\343\2
65\350l\3647z\036\227'&\353\360k\213\265\332\367\266\327\025S\206\314\260\357\275psWLQj1uv/\035K6+%\222\275W\026\300[\255\327\027Y`\303\311.$\007\342\355\365b\330\305\252\243w\030\253\253\243\207k\233\271\263\301\273\253\301\311\311\273\271[q\311\022x<\037$\3246\333\235\361\020\271+JWq\273r\334t\366\346\362~'B\321\240\331\334\375\336\200\314\031\2036b\376\203OF\330\201\261\261\260\030\362\370\010\374-\260b\264\207\372\240a\231\022Y\221\231\031\273{g\277\375\204\274^U\307_\037\235\263k\361\355\322-\332\370\304\nwW%\255\323T,\261*\263\252\026(\031\2645U\337UH\213\031\215z\367\232\221m\r\344\217xP$\0229\266p\rX.\267\216\350\316\315\2157\017\027\277n\341\361\037\t_\026\257\213\\\273\261\327\\\354\246lSW[\025wWE\324\326\306\214\247[Vi\261\213\207WV\356\035]U\326\257\213e\\zNs\2539\355\304\355O\036\261\327}:\241E\024QE-\263\234\267&\t\\F\221\263Q\264\020pw\272\270w\303\274\010\021\021\326\207H;\304(\034-}\235\023\251\274\315\211\245\023\177HC_o\313\324U\300\004n\266*'\237\030|\242q\234\25
2m\216Xz\260\035\276\201\325\014`\330\013""\224\342\217\017R\351)J{,\230M\241\223\225,\245\025\034\247\022\234I\202A\231\242\224\305J\220]\335m\355\371\337F\227\361\316o\347]\264\364\364\266K\226\341\345\234g\0357I\350\313\212\333\1777\307\322v\314,y\233a\r1\303\223!\222~\230$\264\346\027\003<9=\341\355\003X\317\367:Mo\337\356%B\303\026\251\244U\252\240\252\024QN\005P\242\215\212\032\241E8[\205\316\277-\323*\307\237Km\266\333\364\232M\"\322\264\232\315\"^]\236\234\361\321\274\202Y\375M\021L\304.E\210b\037\013\220\214D\3221\214i\320X\224\221\023\315K\275\3457n\336\272<w\300\224\214\223\234\267\221\021\370\261\022\210e(P\346\307\252k\267\257\253\273\014qg\217\271x\345BO\303\321\274\304\344\346\234C\217fO\313\352\320>'M\216O\036\326\345\252\024\273M\252\244\202\361I%2{\334T\201d)%$Y\003\225!\347&h\267B\231I\ru\242\310@Xd\223\035P\251\006\020Y$TI\005\026\010\2022\022\314)\"\212\002\254\000UH@f\353\2239GazQS\333jGy\220\240\253o\016\206`sf\340\260`\033z\352\222\020+\347,+\201\177L\256(\"\
374\212\271\345R\373l\240$\n\302\017w\273\335$\323\034\27148cl.h\3149\357G\214\"\235\226\n\252\304\367\010\262=f\334TX\\[B>\304W\0132,\230\002Z\360\226\r\303e\332\371$\335\240!Q\306V\326\352\335Z\362\016\333)n\001/<\212<\272\267\254\006\250(M\rz\302\027\220\325l\212\335~6\031\376\261&\242\201=\376\032\3430\"\000\002\342\312\207_\010v\001\260I\364u\275\263+\376\036\205#\030\303\230\240\340\347Tq\302\303\026\224\026\335?e\036v\353mE\333E
\276BC\377\236\274/B\371\241dt\322(\217\246\251+\346[E>\300\267h\037\365\002\366w1u\006\333\321\276\266\010\322\271\004\200:q\321\177\037x\035\214\221\266\210\032\366\036Ns\212t\311\024\202\304\342\233\347\200\212j\365\215\265\t\211X\201\n6\024\224\246$2-\254Z\235\256p\327,\203%\"\335\226!G\315\366\301\362$y\004I\037n\203\350\370\354\235
\244\217\245\307\323R\326Jn\322\265UzLX;\211\270\020\326\003\210\026\244\232\305^\237\206Fmh:\334\010\324\337;u\214\034\322\363\005z6w\320;\016\037k\240\275\034\236{\356\321vg\206S\202J
\327\265j[n\0135\025\223@\320\2
26NWhy\310\204\262\365z\344\2635Ea[\2729`[P!\031""\275\001Q\032]\002\222\023'\035\210h!\214(g\\LI_D\237\305a\217\033\341RJ\2068]g\024=\030\303\022\021\222\321\027et1\233B2r\357\010#\203\233q\3759\225\226za\230\313T\371\346@\332\006\301gj\307T$\013\305\317\300\341\335\356\315Sh\223h\316\354?\315Y\205\355{b\"Z\325b\230-\342\026,wH\241\237i\323R6\262\307\371L\246\353\274\363\213\356p\254\216\020\006\351\331\303\260\262[\253\006\211\"a\315\262\000\003\243\013\363\007L\221\022\240\356\333\232\221WP\244\340\346V\262\214\312
B\266\341\235\006|\371\"\306\212_\\1G\016\002\355G9\317\345\343\2643\035cE>\226\226\301\251e\3004\023+\275\250j\351M\001\307\312\000\310\310\021\252\365\223\r\001;v\3540((\252\256\023eL\302\225\226.\nAB\261l8q\251T\264\222\375wYm\202\344Q3\264\024\233\014\256M<m+\006\327
\330\\\261\235V\206V\275\263\2413\310\270\252\242\242\252*\210\252\250\250\252\210\252\252\252*\212\210\250\2521\210\210\252\252\252\210\252\250\210\250\212\212\304TDEUUUUTDTTE\021UQUV\264\236\013\362p
\006\273\274\266w\000\276\352|{=\363\247U\224\005\332\342Y<v2@P(\367\230\247\235t\321\013\014u\026\324`nFr\252,\221eX\255\234\211y\223\200\202\t\234T\250\371\331\253wd\256{QOL\315\370\227bn\226K\261\027\331\202\316\024\010J\363\304\315\006\277B\n\313\202\007\3347\302\2531\262\335+3\324-\246\252N\371\243\333\257C\322Z\246\014\236\232\3050\213\241\274\347\304U\214UY\025EQE\212#\001QQ\025PI\252T\021#\004A\210\250\244UUQ`\252AQX\252\2100\246T\005J\246
\323(\214@\241T\263QUdU\025E\026(\214\221QQ\025PIj\250\222\"D[U0V\345\362\276\353\225\317]\005\265\316@*\266:dsq\034\262\026\365KA9\370\027\205\200NF\324o\273\315\303\030:\231\327i\343cJ$\032\220\213\372jgLh\030\233\316\234Z\002\254e2\032H\025t\224J\314\316\372\2323\234\366MI\203\006X}I\2616/l\004\236d^\034N\345\335\335\361\033?\367\301\007\327\201\317\263B\355\3275\340m\216\010\355\354\337Dd_\203\332RwI#\363\023\260b\260&\216\210Y\260t}h\240\225\t\371\345Jr\031D\263\"\375\032<\373\367\357\337o\035\316\211;\222##\020\234\255#~`\337\343\363
c\213\257|\274\270\330u\3500\366V\214\334\253fb\374\301""\231\"\314B\024\322\213
\350\3215\334o\213\244\224\002ld\245\3374\222\005\"P\267\026\207\243z\337\274\276\337'\r:\322\003>\221\370\217\016b\226\233>$\303\247\251\030vw\335\272z:;\025|\013\350#Pw\266\333`\333m\252\252\252\203\"\253\"\221\324J\022$F\002\"(dr\323\236\217m\353\314\313\256\210\000)\"\325D\241\237p\344\345^a7J\322\3027s<\034\373\242\213\302\"\3146\346y1\r\351Q\367q\344n\351\253!\344r4&\357\365\205\272\220\316a_/n9\231\256\323Cn.z\305x\265v\230\336\265\026\351\032Z\014\341\t\352\225\354\243\006\355\306\343s\2632^\223\223\227\207\025\341AS$NV\227)`\353\361Sx7T\250\373\005UUTUU\212\252\034\215\273\316\310[t\014\345\242\355\335\335\007r\340\266\263g\313\206\036b\260\216\313\027\0136Y\367\361yd\302\211c:\030ru\023\361\025e\346\023\014\370\016\344\311\"\336\313]\317\007\225(\025p\372_/\304\203\2710\007\377\206\243U\365\345,\243\314I\232\204d\226\231IL\204O\247}.\234\032\214\345\3025]o\321\323\2308\252\224Ik\333\216\005\34
0\322@\306\t\205\021\t&%
Ad\204\005\236k\251t\350d\256r\251l\271\351V\013\024\031$\204\343D*\212\255\232hv\372\231\231\347\235p\326RZ\3158\240\256S\000b\351\340\326R\305\034\266\213\032\220\2013\032\n\253\034\265c>\255\221\262b@\0242\250\030\211\337\246\302H\225\220\332\240\254\211R4R\033y\214\024\010\200\216D++S\212\305\275\366-&\r_\013\310\003d\321\nH\027A\202e\246\0167$\274\371\202\342Hn#\267\261\245u\365\n\005\007~]\311-\251\267v\r\262MJ\276\360\005\000P\006\315@L%($4\322d\205=x\343o\256\007\353|\224\245\347\266\3463\207\223\277v\235\206zB\242\034\276\340\230\235\331\0170\222\021dd\201\344\366\2509\\w\275\020M\242#+\2547\323b\315\231%^\361\273\017\250\221\032\003\275\243\030\201\202@\234\246\360\362\016c\3742Q\243\267-L\344\213\016K\024Z2\360<?o\010\325\210M\203\016c\20204\343r\360\263<Qb\010\204,g\226s\226\010\217/\261K\2649P\264\326#\270P\366\307\303\303q\310fQ\301\366\207\r$\345\214\311\207\316\201\276X@\333f)1u\371+\265\001\247@\030\347\210\323I\256\323\316\201\364\204\322B\
027\311HF\350\005\316\205\203H\333\243V\231\231
\211\023-3e""\221\234\312>\017X]\352\027\316S\017B\353\345F\3258\354\227\033\326\242\032,@a\262\r\020\253\245#NtO\353\237',\322\320\203\277WS=:\222(+>\033Q\301\240,\031\330\016C\001\310\r\306\332\021RB!\344\321\363\002\243h\221\022\346\245\304g-b\315\361\225\013k
\336\245%\251\263U]b\033\371\267\212\242\305\001a$\262\240\004U\000\017\242tQ\314\021\220\302\260(\200\302\024\250\002\2023\013\333\225
R@-z\203\350A\003\234\275\242_\035\003\235\n\353\005\317;\202\254W.\276\236\027\2776~\325\1772H\0279t99\227\331\360E<_D\232\256yg\213*\315\000\310i\00113\357\342\r-\210\007N^\317\201jH\326ZWN\317\306\316\277J\244\0243\301\344\224\034}\027\254\360\361\010\235I\364$a\305\226
\3274\251\225\356+V\t\332\261
\007\202qK\267\267\250\263L]v\311F\251\322Z\253\024`\373\363O\316P-m\215\336\310xW\243w\301L\307\014\254/\003\343\t9\220\2150\205\356r]\357*\004\246\0020\355\2673\034\247\"\226\323\223\2375\327\005\025\264\236\374]\013!\323\226\311\t\002\355zRS\
302PKR%\221\2519ooF\201\205UvwCI\343\023X>\225\274U\333\";\324\3621z<\266WFA\310\210;\034\313\016Q\020\022\212\367\020\216AH'b>\236\320\302\222\024G\253\\\2274\370\210V\362\364\245\322\007\231xu\371\371L\264\354\301\365\357\260\371\315d\032\0315\341P\313\261\214\300\276\203-{c*9\215\322B\225UUUX\014b\252\221EU\264\322\356-\214QT\245\025J-\025Q\004A\021\004D\026\300\211J\256\227\242\220\260\276\330q\"\224\225E\r\020\305\014\272\302\331\020\255\0235\262\336x\256\021z\020\005\262\234\202\245\035\367\353\306S\235\025Z0i@4\306$\205\332\202&Ti2e\267\221j}\r\026\006K@\236L\tT\r(\210&oA\312\266\036ba\215\2027<\232\214b2\214D\220)\364\312)\373\227
Pb\375\377\322\343\007\342k,5\3501\277Z\033m\246\336/M\310\215\020\202t\255m\3273\336$\266f\355\212\346\027\336a5-\331\363\312\327{\246\200\202pe\032g\214^\032\321\304pp\206i*\3230q,\230\321ml\006\333m\264\333u\273\345\354\021\330#\260;\027ga\354\2471\361\352\\\247\215\002\027b=\312\304\203<?&3\306{\307\315\351\334\032\235\275\302\301g\212\364\001\
344\300\212\234P^\361\t!\264!\202\221wm\3079\365\263\326\314<\277s""\370<V\324\256\366\001\307\306i9\335\tlL\310\261\301\221E\343j\313\036\252\3141\356\016\245\342\237X\217F\r\314\027$\302\374\2411a~\311\200yF\033\223u\000,\250\227\307\247\256\320G\213\001Z\262\020d\305\217.H2\026_!\252\346\223ZS\355\030\224\2201\013+\325\367\367\340\030\\q\334\256{;\367M\033\312Z\210k\223\345\252\022\007a\023b\006\242\002\252\000\316\224bIeH\267\010\202K\200\tN\264\252\016\224#\037H\210\005h\354\273\003\300M\244\317\026\\\300\220*\303\000\350\330,\014D\304\304\320n\006h^we\210\335\265l=\223&\033\325\r\345\377&\340\276\333\231\257\346\373<~\250\363\376\262\334\244\253\325\227\375\007\351O\342\177\177U\330\317M\212AAV\010\220}(\300\334\236\221o\204|\202\255'\346\004=%\241$\352$\373\"\300b\2138\026\2530\241\224*\t\353\036\315\352\376s\252E\021e\022\322\314\252\214\213\344\351\217l,F\020\367F1\325\005Tp\343k\312A\224\3519V\330\243z\327*\254\022\231\333JALO\301k\036\242`\265TJ\240\363\017F\365]\305JM\35
7\336h@\335w\344Jb5
\211\030\236\263\244\311s^l\004]\342\t\023\033#8\252\216-H\342\002\001-\317\335\363}C\363\006SN\337\232\026Qd\003\257gq\300\035\210\350\002
\372\353\262\207\001\302q\370\304\216o\034M\026\260\r\031!\244aD\274@\242j\237\177ye\252\365\273lZ\3302\240\242\242=\025
9E\031\3029w\266\270\023/\256\374\267h4\033\304\324\236F\021\306F\370\221F|\346\235\007)\272\177\246\307\240\033\322\244\374\343>{\234\300\250\303\375c\337\342\272\210uh\021\304(\233\311\333\273\333T3\364h9\324[\372\025\354@fX%5.\205GI\033\026\231U\221\355\351\237I\336\245g\354\251\005\025Aj0T\250\343M\304\315\300\036:`\2010w\007\215\320\362\007'p(\224\0272b\271.`\036yE\005)G\252\203\221\303'\210\321\341\365\252\212\225J\351X\334\211\366\017{\225\205\037\037\024\246\222\333\014Z\033~\333\364\254D\353%\260\202\265\262R\360,\024\037\032\232C\244\025\303U\253\347\263\335\266@g+l9\237\023$\025u\"\315\305\257\\\246U\366\271\210\016g\245\261\360skU(\325\223\022\260\325+\326\344\357\327\226E\tb\313\261\027\305\020
\320k\251q%>\345Z*\035\316Zr\321^\330\303\201\3056]\017~}H\351\301\264)7+""\211\245-AR*c\006\216\366)\360\242Q(\246\273**\334\225\017\236\244k\260P*P^7q\225\240\300\337#\205\030d\244\367\275\344\375S9\225\223\313>\206\215\356\323\225\372*TY\022\233\366S\273yI\253\025)\242\213S\330\315\267#\244\224\325\024\256h\312E\254\233\034\034'\245l\327TU\260\273\213\266=\212D\341,)]\252\326sWb\001Y\353j\305\343\335\301\010\374\005e,\334\030So\333i\344[I\007\246\332\232\205\313\367\022\236j+\267.\264\347W_B\352Z;\335\226\030\360\312\354\276\nAR\251\354\357\332\345\272\313\234\346[q8\333\365q\331\005m\307[m\346\210{?\276\256\324\311\260\241Q\231*\326g\243\254*\332\030K\005\205\317\320\260X=NJiV\314C\310\342\320\347\351.\201q\316\252\342\231\374U\204c-*\031\332\032\t@\321\250\355\254\342\206oLW\261:\201<\243>\207\217c\007\360l\354\354\014\251\315\327\325~\256\006\357c+\302j\215\255;1'@\0333\245\3465\265\263'D\213\341\27605e\311
\014\3268\356`B\256\\\242\007\336&\2372\306^;\221\270<a\267@\340\261\2
71\031
C\\\240gU\200B*\033\257\2671\224c\204\304\303\2314Y\215\r\214\031\237\216\037Rl\337\206\037j\316
\377!_-\030\256l\364z\013F\356\267C;\235\366y\263jw>\271\306\342\2274\362O\035\\\"_\226\237<(\251\232\356r.\026{\231K\347\237C\336c\354\241vn\3237\324\024\324C2\312\034\340\3271\216\257l\242\221\235\323\005I\311\330\277\226\306\2573\315\"m\230I\364\343\231X\374\323\016\03164\214\233$\317\004\337\267>/%\366M\271\206\031\324c\225z\367g\315|\037\362\305r\250Pr
\263\352\274\302\213\273\247bMT\213\027\024\005\013\023k^\351H\201A\336\232F1D\014D\2749\252\026\366mDL\250\223\004\232\254]\323]\031\205S,D\250R\021\263WPT\t\016\363\016\021\024j\347\360J\350\336\036e8N\361dN\014\000\3230\366\351\315\221UvTM\210\231
Z\251AUH\026\245\010(I\024\005\321\263r)\027\270\213UO\035BXy\224H\271\030|#o1%\351\013Sj%\353j\256U\312\213\301\206\235\214\231PX\247\310!@\271#\017*2\240\367q\023\002\330;\264\333\340Q\026\241\023\002!\315\tF\246\351]\245[\306\034\252\240d\330\301%\362\312\203\271%\010\005\212P*$
\372\023:\016\322\177\361w$S\205\t\001\026\", ";
PyObject *data = __Pyx_DecompressString(cstring, 6366, 2);
if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/psycopg_c-3.3.3/psycopg_c/pq.c
new/psycopg_c-3.3.4/psycopg_c/pq.c
--- old/psycopg_c-3.3.3/psycopg_c/pq.c 2026-02-18 13:34:29.000000000 +0100
+++ new/psycopg_c-3.3.4/psycopg_c/pq.c 2026-05-01 22:43:45.000000000 +0200
@@ -35255,7 +35255,15 @@
CYTHON_UNUSED_VAR(__pyx_mstate);
{
const struct { const unsigned int length: 8; } index[] =
{{1},{179},{17},{19},{23},{22},{29},{20},{2},{2},{2},{1},{1},{1},{1},{1},{1},{0},{8},{6},{7},{18},{6},{12},{30},{28},{15},{23},{31},{24},{24},{37},{33},{32},{38},{40},{35},{33},{29},{25},{28},{33},{26},{7},{6},{28},{26},{48},{23},{45},{22},{33},{24},{29},{23},{22},{17},{41},{2},{4},{9},{20},{18},{50},{24},{14},{12},{18},{28},{24},{25},{25},{25},{23},{25},{16},{28},{32},{31},{26},{25},{34},{31},{33},{22},{32},{28},{30},{14},{31},{24},{22},{22},{5},{10},{8},{14},{17},{21},{14},{8},{26},{28},{21},{26},{23},{22},{23},{10},{6},{4},{17},{16},{8},{12},{30},{32},{33},{21},{19},{30},{17},{18},{18},{26},{28},{15},{13},{6},{24},{26},{18},{22},{19},{21},{14},{19},{20},{20},{22},{24},{23},{26},{12},{18},{20},{25},{13},{12},{17},{20},{24},{17},{14},{24},{15},{23},{11},{20},{14},{20},{19},{12},{17},{18},{24},{26},{27},{29},{25},{19},{17},{24},{26},{28},{26},{22},{12},{14},{8},{12},{8},{26},{28},{14},{20},{16},{13},{14},{14},{15},{18},{14
},{26},{18},{19},{23},{8},{26},{28},{14},{16},{13},{15},{22},{21},{19},{18},{21},{10},{14},{17},{19},{15},{8},{20},{4},{5},{10},{28},{30},{9},{5},{6},{18},{5},{9},{6},{8},{3},{6},{10},{17},{5},{1},{5},{6},{11},{7},{4},{4},{8},{15},{9},{20},{5},{8},{18},{12},{14},{3},{8},{13},{8},{7},{8},{4},{7},{12},{13},{18},{8},{13},{4},{6},{7},{4},{6},{5},{15},{17},{12},{8},{5},{8},{8},{7},{1},{8},{9},{16},{20},{19},{6},{6},{5},{11},{13},{6},{12},{17},{14},{13},{3},{9},{5},{11},{13},{11},{18},{1},{7},{9},{6},{6},{5},{5},{4},{5},{6},{4},{5},{6},{9},{5},{8},{9},{10},{13},{12},{17},{10},{9},{12},{1},{2},{8},{3},{7},{13},{5},{7},{5},{6},{5},{6},{7},{8},{17},{13},{10},{4},{8},{6},{7},{8},{7},{3},{4},{3},{13},{12},{10},{11},{12},{16},{5},{6},{8},{6},{10},{8},{4},{13},{8},{4},{3},{7},{11},{7},{18},{12},{10},{17},{15},{3},{13},{12},{12},{14},{12},{11},{10},{23},{14},{12},{10},{17},{13},{8},{3},{5},{10},{11},{13},{6},{10},{2},{1},{4},{17},{19},{20},{22},{18},{12},{10},{17},{19},{14},{21},{12},{19},{15},{1
0},{12},{19},{4},{3},{5},{5},{6},{3},{6},{3},{7},{8},{5},{10},{5},{6},{14},{7},{6},{12},{4},{1},{3},{6},{7},{14},{1},{0},{66},{53},{109},{19},{108},{90},{189},{110},{67},{53},{45},{34},{67},{99},{87},{99},{53},{43},{39},{65},{24},{52},{39},{145},{106},{163},{145},{190},{105},{110},{167},{177},{204},{215},{14},{19},{49},{44},{75},{39},{101},{61},{161},{171},{19},{60},{29},{19},{19},{57},{52},{9},{55},{19},{59},{9},{95},{50},{41},{40},{37},{97},{28},{38},{38},{87},{29},{33},{19},{24},{19},{11},{55},{22},{30},{75},{33},{80},{42},{53},{52}};
- #if (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (4553 bytes) */
+ #if (CYTHON_COMPRESS_STRINGS) == 3 && __PYX_LIMITED_VERSION_HEX >=
0x030e0000 /* compression: zstd (4523 bytes) */
+const char* const cstring =
"(\265/\375`g.\r\215\000\212\212\010\035G\340\322\266\0010\314\347i\010\203k<\221\347#\014\204\2010\020\006\327B\030\316!\266\010}M\231\331DY\346\262\273\223r^7\252\005\327WUc\304\350\356\334\030\177\233\362tB\2001\235Y\241\253\225.\315wsBc\001\221\001\235\001\340\001\275\363\023(\235\316\273\034\332\352\266\212\272<\232m\267\033\005W\036\014\364N0.\017\346\326\225\327]\220{\340\276\032\323mw5:g_\274\333VmYN7d\256g\235/g\363\353Ew\372\333h\255\370~\265\322N\313\250\221\341\341\320\300\350<s\333]m\234\3257U]\rr\215\301\335\277\213av\343\236\271\355\325uz\343\254\312[\346)T\303\306\024\337\234\367\326\230\347-\225\367\006\373t>\261;\317\373@\256k\274\367\307u\234\352(\r\336\027s\252;\375\331\212={y\247\242`\367Z\270S\351\314\255\no#r\354\3558\316\322\256\2427\356\353\237\327\3728\336\272\226\227\275\ro\353\341\355Q\314;\356R\r\033\326\330\353\264\326\335\245\234\275\264w+\352\262a\017\206\351\306*\325\356\350fq\347:S\314\245\354\313R\0310\n\272n\233\365@9|`
Y\361\300\262Ba\320\256\263\014\216;\230\202\201\257\326\3310\227\255\212\362\335\273\246\242\323\316\361\347\302*X\374\343Dl\032sT\016\326]\n\332CU:\367q\274G\344\250\2340\347\254\010\374\312;oTe\245s\325]\356\266wZ[\025\3321\247\032s\353\321\256\323\rcM\277\016\244\252\033z\342\330\003;\325\271s\371KQUG9\346\334r7\365q\312\373\3054\360\246\233\2664f&\346%\307&\207\352\215\373\315\273s\nr\270\333\215S\231\303\033\345\231\352\216\325A\032\332-\253S\334\273\024\2471>\006D\247\313\034q\372\247\004?\301\350\004\221\024H>\211\3504\225\032B\277r[\001\260\360\n\346\264P\352\322Bq\300\234\025\332u\206\275\366\346}[\356\334\252j\345
\3468\257*\016s\376\332z\177\035\206+g?\327\013s<7{\372\343\271\230U\353\345\271\305]\336\211\237j\365:\257[\316\273\032\203^\205\225\267\361\356u\265\326\300\334g;\326\331\266*\007\3738\234\262\034\210yx\253v\315y\255-\347\272\352N\350OU+\306\273\323Wua\230\257xk\333\327K\343\212q\255\267\333\336\266\357\275\340\376\270\247m\253\325\335-o\234j}\272\352\326\247/
\347.\317\265)\235/g\365\225\326""\026\327Z\357\275\367^^\353V\353\356^M\251\276\224\345\270\333]\2566\347\313m\213\325\363\356V\234e\261\343\302fG\205Ut\030NQ\373\31550\320%b\207Fg\333:\026\213\256w\373S\241PtT\316M\216\246\2433b\303|E\016*'\004\252\177\275[\017\344\272\333md\256U\033\267-\346.\250\277\225\305\327\356^k\257U\343\217\343NW\314c[
\377R\225\347\372q=\303j\255\025W\316\326\212W\025o\325\346\270\316\303+\3139nU\026\317:\253n\305\373\343\032o\354\341\330\350\210\340\237\216\376\272\355\274\326{\262\251\035\257j\335\336\311\004N\255I\241\241@\201C3\363\242\352\237\214\0328\277\300\335\265p\213\272p\336\327;\253{\300w\177\035\347\2009\316\223\3425\272\315\243?V(\323E\351Q\316\250|\023oS\362KZ\343\310\270c3\262P\206\234\256\322\226\037\245\312_!\225|\033\222\204\350\210
^&\354>\010|\213\017WX\342A^\202\216\317\001\0028\344\246\214\007\351\032S.\210&\361D\024\323D\221\017\344u\302\327H\207)\302\344\243\274\346\035\200P\220\017\"cB
3\321i\362`\345G@\360\265rDJ\030[\354\270\20
0\000\200\002;D\227\177\021\216\200J\010\243L\314\251\3510\215\233X\372\031|F\004\000\214v\230<\203\254\354q\221\030|\020\210(\374\232\021\024\246\310\003cM+\02431BIx\241\\@\302\210'\241\017\372!q\341\243\220\2442\206\035O(R&\364C~\211\222N\320X\"\232\020|T\270\262\245\0073\204\313\327\247\235\000*gN~\212\260\024\222\002\022\313L\232\354\357\214e\207\226\337b\372)\021\363cN\376\211\005\016#\203\257\215.\241/
\2549\263Ptj?\237\231b\206\250\360\267\0215\2768\370\016D1+\216\210(Vd\"\366%<4\361\363&l<\211\360$$\205$\021$\236\010K\241\rGB\033\237\221(f\n\003d?=\345\007\226\317r\275\211\253\374\360\362W2\262G\264\242\2136\266
\221Y,\3633af\366\220\030$|\224\230\242\340\024\371\"~e\332X\370}\264\343\311\206(!\006\320\317\2112+g\214%\220H\311\n'\177\363(\177\023\226Dg6N\010}\223H\022m\204%\242\030\310\004q\372(#id!\205\327\307\202H\3627\334\200\"\035\214\240\361\344\031\204\234.r\000y\0227o\301\033\010CF'J\224p\000\300\307\016\323\330\262\340\203\274\002Q\350g?&2\374\035R#cBNMD\021\371\246\
320\345\023\240\n\017FR\204\246\207\t""\222&\243\276\231q\211*\241oW]\215)b\022\000\t}S\223\033<\206\260g&t\252@}\036sCi
\024\033_(F\177t\242\244\026\036GH\022+Y\2202)\037\306\207\t\242\307C
\265\210b\"\215/Z\276\013\377@\023C\031d\0160a\220\253\221\305u\301w\227/y\233\227\216\001!\027/\"\314\302\021>\243\320\216\317\001\017\035\231\210\223\211&#g\007{\242L\344\212\353\007\247\303/\245\374\025\361$\234\340S@C\226\303?\250q\215\036$\014\t\235
\035(\322\305\030A<Y\225#%\314ML\033\265G\361$\277\200\004\022E$!\311\013\36044\323\337!a\242\277fE\262bx\217\030^n`\371;\242k\204\031Y\362B\312\177\345\210\2212\322\010\343A&%\231\257a\304
Q\202F\242\0210\3220\211174r4\272\304\001\226\2049\221\005<\020\204!\027VP\343K\354\204w\320\023\306B?\302\357\336\226\264\021aI\023[b\250\362\206\374\306,~\220~bp@\371$\374\027\256\010=H\345&a.\242\214p\304$\212\271,\371\000\202_\340k\204\034>\306\027\022\230\037\023\322\204\031P#\210Hk\310\027\343\215H\302g\276A\211\262\205\\0\262\2244\010\210\264t\272\304\
227\231\017c\324
\262\2108(\0319\025\224\254\260?\037?\"\363Df\342I\001\002\247\006\"\006a\004FZ\262\306H\022\343\251\201\372\321~ZL\222\251e_t\276\270\2346\014\021\266\360\001\021\305H\245\r\231\341\203\007
*\235\2317\225\250\322\005\351A\202b\203\337`\224\"C\220'$\006\316\263b\007F\310\314\304\345\001Rf\354\022\"\234\370\225R+EJS3I\224\037\216\260d\024\263f\204\322\250SX\272(\226\014\r\215\210$IA\322\030\203`
`\340\200T:!\327\330\017\303\303\3420.\020S\024FR\204\031\210\214X
\"\"\242$)HA\322\030\223\013\326Jo\211\225\207P\370g\367\272\r\000\256\256V3\321\272\203\033\2476\002\024t[\014\345,\276\341\274q\360\301C\327\330YS\226\360@:Y\2501\3024\261g\241\021]\201\035\242\267S\243\016;\343\373&V]\365\315\276\246x\007\353\354\236\244VHh\032\330acI/{~\323\362\202\224\216j\326W|/\227\231z\032Y\031
\375\357\247\374\252a\n\324\337{\357.\352\271\220\317\303\025\037\350b,\301\212c\033\270\034\254\331_T\032\261L\236\271\231j\200\236\267_\023\010\315{\004a\310Z1\215\202\230\366\014\261\026\366\
325\016~\367<\211\030\3730~\316\274\375$<q""\312\312\306\272\177h3@[9\372\016N\373\367Q\225\362\337\006\210\362C\020f\306\322\210\233\360\265\2622\366\003\013:snK\264\221Gb\253r\241f\347\301\373\027bC\360&\036\014H\362ks\220\2255-\356\352\230\370\271\260\267@\0045\271\260\000\2201\014\013\016\210h\317\344\014'\305\352\315_\353\266?\344\001\235\320gP\233\231R\360\324i\242#\376\207n!#\223\300p4\023Vy\222\000\345\000]\345-)\025\031\272\261\2741b\002PM\005u%\314\020\327\006x\016\"\356x\316y.\006\212t\277\261\255\323o\201\201RR\213\013\215\347\370\373\241\305s\020\333>\265n\250\202\302\321<\267\214\006\222T\232\260\000\232\226\206\233\333\253\367\031h\310\217\027\361F\217\026\236\356\021\247h(\352L\322\264\331\274S>\332\373::\\\337D\223\203\000l\264\341\212\024]`\264\033\371\265\362\004\304\341f\200I\210h\303\254\344\353\364\001\242\202\255\270Mo\363\265vkY5\315\016\3732\275\336k\330\324Fa\300\220+\356\363\326\230\023o\276\033\330:]\263\234\336\014~\031\251\244A>\014m&\367\330\337\363\30
6\305\363\233\017073\254\321:0\212B\277V\255\322&\366\343#\325\324\267\202\231;,
\253\256\365\367^\274\317V\367\334\224\241\220h\353\274D@\263\377L\327\200\207<\032\247\304\231\346\361i\220\006p\013k\002\016\205\204\221\300<BU\020y#\014j\224\360\357a\351c\370\344\021\n\215N\002j/dea\305\255t\270\222\372\305T\225\362\267\210_\006\251\311)\327\266B\254\340\013\017\221_\"C\333\3005\004\320\304\253\373\344\313\262\217\263\010\000p\236\253\374\365\303\267\311ij\224\363\314\"\270\004\030\027\300\365\"\327\007\263z\203\366\254\377\340\276\272m6\256>\010\262%\002\306\003\302\311_\0047\201\226\004\267\327\316G\373\301!\362v\257\316P\343\240\254\r\212\246\320\026B[U[\030ZZ\002lG\212l\347j\224\237\034\220\327f\363$\233E\205\0028\340\005\354\304)f?\275\244\032\331\241y\207\352\253e\363|\330\271\017\234\241\377\037#\343\374
\322m\315\"\257\231<*r\271\244B\252\026\360c^\326\307#\370\002\264\021\260\350\264#\200TL\335\235\220\353o@i\356\344\027|\3519h\236\314\365\300\016\337\001J`\027\300i\273\236
\362\\\010\342Q\2257\240\034)\300[\351\026\213Z8$""\210\035;OV\224\340\007\025NI\273,\3526Z*\007F\254\225\324\230f\300'=\034V!(\327ff\242c\023\033H\365bM#\007\036\322\0354\\|\355\033\267z\254\340}\333\253RtE1s\264\337\005\013\353\200]\007\021\327\305^4\371\317BCC\033K\017i5\236\000\013Q\334\236\202\274-v\300p\001\251\222z\204[t\323$\317\245\247\256\233S\303\"_\210\247\223i\335D\003\234\217\336\366X\003\333\035A\260\361\225;9\341kP\006.\205##\214\026\336\213\254bts\306Xw\231\256\037F\241\331\014S}\357\215x\326P\177X\010\366\230\025Z\226!5V\000\312\354a\007\376>y\030\204\231\000\003\003\027#\356.H\314\214~\250\256\366m=\035\205>\354\270yt\256\322w\346h\300C\037+7\374\3773=\254J\215\367\344\003U\257$\224\200S\370y\271\324\355\335\004\013%^bc-\016\323(\361\335\360\001\034\364:\274\377hX\333\271g0\310\245Js\277
\213n8].\003v\361\336*\001\273n\357\250V\030\304\333\210\354\r\325\257S\326\261\236\212\3252\263}\253\251Y)\211\247\375q9%e}6\345\253|P\362BP\254~\024\0215\025\000\244vb}u13\3105S
c\332\267\365:J\277\240&H\343\3013\263\370J\230\207?\376\030\020\014\207H0\251\200\267mX\346>\360\344\037\307\270\303.\203\210M\010
\r\275B\210\212\203\"\262\306\027\215\245\023T%\207\326g\004G`\t\325\220!\322\001\255\377\326\273U\203n\264\030\376\032\313\327\350\247\206\027\024#\3655\254\341\261,\025Gv\366\257Wu=\34186\014\200\"\257j\366\306\255\001\363\200\230H\2179\355C\363h\235\326.\237\025\310\333^\014P\231BG1\376\3777\370N\010lr\201\0173c\202\307\t]\364\351.p\211n\013\373XI\233\266\272N\221\212\275I\0044\373+\2044\244K\365\016\031\32052\256\244\313tKh\2147\321]u\204\004\007\376$\346\317X\021\203\350\024\311\006./\231\3264\033~h\002\334\203\027\253AZ9\304\312\207\003\244r\"v\237\353\253\307\2436B\205^\031\025\352\211\254\254\260f\027
28\000*\223\352\277\221\021\222\020<2bS\210\250\251\t\356\323\375Q9x(\237\202Y9\201\350Ce(12\003\035\252\363\200\241\0029p\340\254\000\334d\250\"\025m]c\\\344g\027\343]j\n\2051\017\373\244\000\304\243\004=z\273YB\343J\365\346\345\003\200\344\353\22
1\331\353_oJ?\333\362\307\322\254\210\002\206vZJT\243""\251\036\307W\377\256m\236O\\\250\223}\2524-\355\336\261\274\353\350\316\311Sp\353\023A\263\322\201\243F\227l\310\300\2465\302h\372\014r\201a<\221`4\260s7\340\214\257\266\242,@\300d\265J\355\216\367\334\216\373\361W\017\037\351k\256\226\370\264\355q\327C\261\345`BKD`\3053Z\3278\237v\023\033`\327\023A\236\006\354\256\207?\342eP*\357\240\301\222f\3621\320\252\376\357\241\312\263L`\000\366\360B\326\n\302\331\373.t'y\007\307b\217#E:#\343\203\206\014\t\376\315\323\235\037\210\217\322Z]\026\237\245\352AF\265\307zD\307u\203\3741uI\204\020\210\013\r\375\354\225CF\370\t:A
\360CJw\345\327\032#\221z\2028S\307q\201\007\316`3\031\342\307^X\232\222\3039\004>((\243\022FF\205\001\241(]\005c\245\032CSN\205\273-\261@\235\016\0347\020\001Z,oL)\315\257]{\302\025S\223\213\3077\333\000Ts_\300\231\373\227#a\215A1\007m\314\274\251\372\222\266\331\352\231#\027\256\253\304\303]\3445\230\2665\3124\255q\to\320\323\325\2278\036d\313\251\320$\275\031\377\016
\341\006i\250\364\277^:\353\207,\330\206\305\334\033\023\365\374\275\367\252w\301\010\225\233}\256
\234\373\333\300\307`[\205f\025\370\260\036p\206\216@\314\3762[\232\016\256T#p\252\250\300$\223$\361.\277-\263\273\nZk\030\022\352\257\2756\376\366\331\302\014\014\217\356Xk\306R0\272l\251\257W\270;\n\263a\242\332KN\376\301\232\352]\247\217\273V\211\2726\372\346\0278\365\303\225\300\324\236Dp\211\331\234k<\336\240\301l\303\262u\243;o\257\226\307\261\227E\362v\253s\307\226\222\320/j\253\203\242\2634\253\327\307\252JD\263hF\213\342^\225\242\035!\321\371\004\272\251\323\325\232\300v`^L\312\027%\245q\253\007A\375\022\206H\371\2469|\220r\224\243\260\344\357,
\341z\004S\336M\025*\224\031k\000\017\363V\204K\016\\\016\177f0X\336z5\344o\023A\247\213\361(\311\252\331\0371d\264\005~#`h\013\257\217$\200\347\242\210\202sfG\002\2634\013\023A\301\201\311\371S\236\005OR+\023\227\352\0036\314\351C3e\030o\317\034\235\375h\037\361\316\230\244n\204,\340\231\307\007\003<\005\205\324\021\242\244\305.-\233\3
20\n8\260\361(WO\003\021/^\256\353\340v\013\341&\201u\t\201""\021\363$\261Vw\037M\355\034\252\230fM\225\332\024\223(G\010\020o\005B\026X\276\275\357\205\007xm\217#\236L\324\344kv\351\363%\216\017?\320\356\342\276\020\327\306{\206]\260\006\201\372\026`\236\026\257\342a\336~C\341\266\003\330&\310B\002\217\203#i\316HK\273\203\331\020\216[\376[\325\327@]\324\035\021\341\235\272\036\271\336y\214\023\351F\262\322_SN\021\024!d\201\207?\310e\033\272\000E\301\346:Xf\227TnE\326\322P\364\306h\216\341\004\221\036*\264
\300\263\204\231\rR\377\377F4\220\366\351\214\006\354\347\033<\307\304\322e\361$\371\225\007\017\026vv}\261e4\010\033\376A\226\031\"\2122\252\335,\356\350\224\216#*\274\033\254\020\240\223<\033\347\351\014\367\002N&\300\244dN\216V*\321\357\253\n\trf\211k>=\354\032\270\322\332\025&?d\004\204[\331I\202k\220\303\n\271\215\274\026\333\327\031\014\005X\010\333MY\262\337SRi\312Zk\275\247\\8\367c\200WwP\260\371\3268w\324\311\277\344\307\376\374\262T\031%x\221px\004\001\\\356L\202\241\007
\313B\354}Rn2\223\006\254\0015\347\302\374\317\010\013<V\320k\227\320\215\273n";
+ PyObject *data = __Pyx_DecompressString(cstring, 4523, 3);
+ if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
+ const char* const bytes = __Pyx_PyBytes_AsString(data);
+ #if !CYTHON_ASSUME_SAFE_MACROS
+ if (likely(bytes)); else { Py_DECREF(data); __PYX_ERR(0, 1,
__pyx_L1_error) }
+ #endif
+ #elif (CYTHON_COMPRESS_STRINGS) == 2 /* compression: bz2 (4553 bytes) */
const char* const cstring =
"BZh91AY&SYI\003yi\000\004\201\177\377\377\377\377\377\377\377\377\377\377\377\377\337\277\377\377\375\300@@@@@@@@@@@@\000@\000`\023\235\317\264O\016\366=\333'\266\023{\236\227\2305\226f(\005
6\301^\211t[r\205(\201\236\240*\200\364\200\004\221\"J~\211\232\204\332\232f\232#O\324\332\231\264B`4L\223=S\322x\221\355SOLS\324m\0315=C\303B\236L\247\223\324\320\322z\236\243\324\022\232@\t\241\020T\317(\312m0S\364\200\324\321\220\031\006\200h\r\000\000\003A\240\000\003A\240\022\232\004\222i'\250\306\243Fi\215F\243h\215\r\036\220\000\001\240\000\000\000\0002\000\000\017S@I\251\n\024\311\243P\000\323&F\203@\320\030jmM\251\240\000\001\240\3021\000\003\322\003\324\036\203S&\231\006L\000\230\004\304\311\223\000\002`L\004\304\3010\000\000\000\002d`&\0040\200\022(L@\200\032M\0011\023'\242d\237\250@d\000\032\006\203@4h\000\000\000\0004\014\331\331\266q\202Jj\266\215K\262*\013\020\357\271\000lt\272\007FM\211\tm\330\241n\246{\006\277\351\221\214J\273\206'\017bm\320\201\344W
BD\013*\014\213s%\212\2072\002\261\317\003\236\314\037\352`t\3145\357\260R%.\303\017\374\222,\010\307\r\352D\322R\230\214\014Z\0046\232hIDH\n\013\021\221Q\212\n\212
\010\301l\030\027J1K\004\n\205\324\013o\343\002\032\322H3\tc1\027\336\222\004\320\320\332\033M\2006%\234\252(V\332\304\302\200PuM\244\330\333L\225\331\214baT\226\001\301\341\201\200\250\013&\301\227\241\240\006\203\026\023\010\253\t1\000\332b\245\244\321\251-\226M\251\265\222g\310g\206V\330f\211|Z\245\212.d\024\"\002Tp\245\327S\340h\305\202\340\314\311\0038\000j\016\r\233\265\364\215\005\220*\201\372\344Xt\223\231\251\226\023\"\324baF\326si\352\\n\002\014\r\221XI\213U\300\271@\2436\003\2545lM:pj\005\264\035\251\020$\204v\302\300\333\207\210D\241\223Y\261\244\244;&@Bfn\305\031\302\244\305&U\230{\332\242$\306UU\264-\356\035\372\233\266\231+y\367\363\016v\267\270\343e0\313z\324\345\363\t\245\362\312\343\307\213\216
#\373\367c\345\231\305\311\354\216[\017aZ\026o)A\262\210\277\022\273\321\245r#\354Nv\247\305\237\225\214\332\3
32\314\022\376\032\317*P\305I<c""\231N\210|\252\030\202\270\217[|i\212\315\330\205I\377\247\221\376nmk\006\324\330\332\333\357\254\376\032'\2027\337\372\3342k!=P\224_\373b\321\213\376j\rTW9\0268\335mkI\\\331)\372\371qoeO\t\345\370\274\243\260
\307\327\344^x\375\220\273\002\263\251\326\035\341\200:\241\215\307nJ\r
fi&\016\\D\324Vu$\313\232xL<\035<aI\301J\231\n3?\231\241\345\352\254@\244\230\364MLD\275\311\014\315s\364\301\202W\2240K\000\264]S\327\360\266\202-\030\352\032\352f3\036\355%u\n\035}5;st$R\037b\302\030\013\017l\266\214\303/V\276\250\350\036\232\252\302\335\334\004t\266\246\025\302\367\270O\322\301\036oJ\r\322x>\223\177\356a\253\2125M\216\256\217xp\340W\2217\013\335?\240B\036!\372\373\327:\3307:;7\366\347W\223\306\341\336\355y\3319\374\243\277)H\224\213\333I\302a&D+\001ALK\241E\322\2250\323fa{8)JS\224\332\025\215\022z\226\243\211\034[\376L7\006\336!.\236\341\2603\243P\331\245=\227z\207q\265\334\243B!O'\262\027`\200\027\017\225\310\3373N\256-~\356;\361w\322x\352\224\352\355\0
10\272\"\364\313=l\364px\305\253Y\222
\210\304\327\242\276\236x\310h\214\024fm\333\346\317\007\333\361~\235\213\000\032\356\333`\271\"\001\251H\024#\364f#OF\203Sl\004\311\306\326=\305\376\221\215tf\243i\247\264\333]\261\244\254j\032\213\277\340k\274\320\214q\014{p\267\277rJ\036\246\337\267}\205\237H\317\262\373z\274q\306Z2%\036\035\343\326\375\037\267\264\333r\311$\265%\3362_[\327k\312\357\316\265\253,p\177>V\322\204\334\276\364\n\005\212\002\202\250N\316\304\222\3234\225\223\005\213\214\227E\375\275\225\\\246S\247KR\177\322a$7s/\253\353\304\316\256\233d\254\272\353\177\260T\267\353\0378u\255a\002\004\265\342\341\263\231\201fz~Tc\343JZ\3626\246\237\201\273\251\271\355\236\217>\336\244x\200\314i\022\350\321\216\345\030rx\221\016`\346\330\213T\353\236p\203\324_\272_\220\356\351\326\210f\376Ey\311\007\253\321k&%\277\262\271\333:\373Es~\235,\371\215\033n.'\253\251V\264\357\002\330\225N\204\345\326\210\214\212\354\302\233\252\030\370R\235\247T\235'\215k\030\016\214\250\365y\364\311\265\2
40\250\327A\245\371\351]\024\353U\373xD""T\274\343zb\023w#w'\177BO\332o7\3358\007k\267\343\235\201\270\314\320\022q\n\230N\203\206\255\004
\244\350d\216\301\030\304\331j\224\301\264\024Q\202\002\004\010\004\3478\2518\305\312:y_w\035_\255\356yN\036\024f.^\247\362\237\233;\014\306\230Aj9,\270\237\016N,\325(P)rG\\/\236S'
\351\330\270J\204\202\252\247\332\247Z\273\362\373l\026m\330i\327\366@j
\272\030\224\270\334\031\324@\307\2556\215\0363\215\026\376\005\246\251t\221\036n\355o&\256\356S\356\312\0051\343\201\230\222\2035\353\014\326\231\211\370e\222\343=\031\244l\"\r`\330\200\324\240\007P@\220L\"W3\024\224\333*z[$\n\022\330\303D\020\231]\301\311\214\234\246\351\307\201DU^\322\275\322\255RE\335&\034\013Y\313E\241\320\363\232\260\3564\014\2306E\225\232\217\221e\014<\017\025\001*\331P\321]5\250A\364\252h<H\027\204\t\2026\020N\251\3130\177xO\326\201\t\212\024\017c\270$\260[\256/t\001\347\317\271/\273\373\346^\225\020TM\006m\216\344\222\264\273\013\027\231`%ti\354\010\034
\002\275\242B\245\\
7\004w\220\221\303\204\362^\255\316\315\234\210e\2431\262\212\226Rx\300,r\022\305\351\261\226}\0326\033C\020\033#\023\240\207z\010\2118\364\353\2217xt;\334^\007y\262\005CT\311w\023Y\270&\250\307Z\267\255\271\327\2221\255\305\325\306\326\373-\373\270FLs
,\375\266\273\347g\226\267\222\212Nn\220y\342@WT\340\374A\236\020\021\343\323\013\341\315}\tS\004\004\030\211%\2045iz\302KrD\026\202)3w4\210\363\323mq\257\211\263\242\013\027\331\266\326\022\356\n\361\315\356\215\tO\375\247[\2517%,\372\263\353\312\362\322g+\000qL\006\026
\243\r\016\302\236\231\030\332O\025\360z\261]\366\2104\333,\322|mLDURi\021\0231\010\004NQ3$\223%\3318\023\264\003\202Gq%\327\276\355\265Pcci$\310B\016\014n\t\270\353\0302\314\222\001\321\314\200\210\247\223C(\360oBw\2540\224\230\022\210\232\333\331\324\007\210V\215\321\0364\325:\232\326\325J\006\214\320j\230\261:\263\024\343h\215\242f+m\306n\310v\035\337\267\235S\241!2\270\214\304~O\r/\nQ\356\365\347$\250\3356\027(\344x.\317\257\247Ep\371\261\211h\032A\260\326N\356\26
0\365\305\361\t\314\251\tb.5b\222I$\222\021""\342\016\320\013\310pp\320\251\246\311$\222I$\226\007\233L\316\006\244\3313\336]\000D\341\215j,z\365\031\032;\rXXp\3026\267\005\0240\312\322\002\022+\010+\262\224\035\223\216\r\025\016\211>\237\336\000O\216'\302\217.\005\323\014\335\r\243\337\2003\362o\236\032\010\354\267F\324\354::y\265\335V\324\306\201f\326\242i\262\265\327\2505\322\270\335!\r\204ry\215\317\000\356lr\216\0350x!\t\r\354/\001\343\310=\353\247\007\3307T\2254\377\t\267\347a\254\373l\356<\r`\320\344O\3379\343\272\252P\207\213\302\020\274\037\237\267y\002\277\032\001\027\214\245\0361O\222J\003\222\003{A\014\306\326&1\200\323\030\231H1\220`\244dP\2704\345*h\223\223\256m'\tJ>\373\233\250\352<[:\373\253\332\353\350\275\260KD\021\227q!\244CDe7\270VX[.\267)@\325q\033\036\315\242$^V\246O\n\271\362\306lc\206S\315p\221\310\301\2466\223I\215`\3272\212i\3604R\3567{\243V<\036j[\251]\005i\237Dq\2530Q\033<\013\301\307\274\354\343\324\225\327\241\244\334\001\244\033\234UJa\325\226\341\032F
V\316\255\344\247\277U\246A^%{\027Z\263\004\263\323w#BV\272\306[\314Ti0\320g`\247\324\316\233S\205\260\264YB\247~\200b-\370J*S\360\032^\033\267\r6\027w\306!\352\361\2365a\222\020\206Z\036X\200\316y\262\307b\272K\214\271\224LM\021f\370\205\366\306\0170\271;\247\201K\253\251t\033yL\312\350\242\357%\226\2461\003\036g\0108B\007u\220\206R5w9;YxN\264\255\260\213*\310\360H\325\316\353\317\tH\271D\250\222m\205\261\215+m\316\003\342\234\020\332]\031\377\027(Uf\234\035\251@x%\212\344\343\301zM\264\214\323!E\225\340\226\226\021\025\346\303kDys\361q\224\254\320j\347|\346Z\320MM\014z\246\224\010\322\260X\357\241D$\221\0176Z\323\206
\330a\335\344\217\014\353P\202f)\3019D\375,\303\304\022Lhi\004]\232a''1\341\226e\010\303\310\261u\242\271$\243\005\022ud\227\031
\214\226\331\002\n\310\342@\266\215\3139fl\226\222B\211\201B\372
\210QL\020)\272\234\225\200R\330k\207o\016\023\277\005\263\0105y\001\266\003r-T\211\"\310l\337\323\331\016<\0236\261\332\305\244\313\243x\211\330d\007\271\031\261\246\306\235U\
335\352\226\007(\231\271\230\320b\346h\205j\026""\222*\024\370r7\334\231\025\020\005\005\001Ad\212,X\021\213\022\314mA3g\324\013hg)\017\034\007Guu\2452U\016\370\305nt\006yB\334\355\347ca^\345\311\034q\033\021\304t:\263\257S\301S)\365\215$\225\0145M(R\021\303\316\033,\007\027\200\r\261;\214P\016f\227m\303\315\252Q\321}\225\336\342\203K\325\244\361\340\026n\225q\325q:+\036L\016\004\315\035\372\032D\314\207J<\004\320\233fY\275\374\033\337&\026g\014\213\267\310\325\237R\334g\311\345\033\020|:\371m\023\026\264\034\254\226+H\246(#\304\315\254\315\323\261\306\344\006\335R\345$\213\273\236J\271\303\017\330\277\211\207\314\315E\2730\343i%\262\346\306A\331U_\022\257\327\365\306\316(\244J\255\332u\233\266\260\003\017FCh\200L@\303\257\2121\232\\q\203:Y2\226\036\034\273\234\364\004qpl\310\352'\256\340\036\020\200\234\344\342\246\326\362N\021\227Y\267]\336\325\352\314\334\251\304\211\273\3031\277
\303\206\020>^.1\277/\027a\270\304\261\276\207c\020\201|\016\366z#H\211\212\272(\214TD63\t\002\205\24
1\ts\220\330\035t\214<\207,\227+\214\372R\016\374\220JF\357VU3\t\r\033\246\030\324d\231b~?>\221\264\306m\211Y\301\265\177\361\006\322\234\236;x>\002\272\353'N\262\216\245ml\315\235b?\320\224\221\241K\252x2
\356:\202\200\036\032\244\327\034x\017\2548\010\022iP\325\216\0359x\226\206_\030
_\004\245\036vC{X\300\204l\364\210\016\324\027&\335T\r\270\020b\032\237\t\351\325`~}4\2363\"\220\275\013Ue\002T\0039\260\032S\250\270\3651hu\344\326\337\317f\327.fQg\201\031Y\000%\300\205x=\336\263#\013\302{r\370\264\312\241\246'W\263Jl\330I\220\320W(N\t0\222h\240o\336\325\262r1\020\340\220a\351@+e\3600\254+V\003`\267\205QY(\351\254ST\200M\254\201q\243:l_\231\275\004t\213\246\367`\037l\202k`\346\020\266\345L\032\273\244\342r\216\260\305iY\364\317p[\360\343\246H\215\351\330\201\010\353\207PR\205F*\275\0214\007D\312\305(16\347\321%\242\313/\225\036\310\034\027ga\341\037\230\215\336v\202\320Z\310\244\232`\375\003\373\t\2123H\263V\212\244\206\301\247\222ai\002Z\367\307\300\265\306\273v]\317\214\010\356e\2
03\304\006h2lL\367\025(<\306\363y\226G\213\267N\265s""\317\324t\231K\035\222\316t\303\236n~v\241s\352-\336\206\027\201|\024\366\033=B\3124\231\325\343\202\010\265\027\001;\014\270\364q\246\215\313\3153\307\242\301F!2\310D\024\231\314\326\371\244\254Dy\220\273y\000%\232\353\222\253\026Y\270\305\264\026\"\342\207\024\365\323\317\342\233O\233\310\337`\326\371;\333\215\010\332\3646\237\334\376\177\302\004\374\325Y\004`\014\323\325'7y\305
j\204\342\220\021\006
*;\256\351\036S>\017]\261\002\252X\363\222(\303C\\1\350:\022L\036\3224\276\016D\333\300\342e\224\307d\033^U\003\341\032\326\225\372\354w?,\253\026g\332\253\030\272Eb\307C\322\237\271\2715\304\034^\2602v\235\353\tg7\004@2-\235\327\205^\272\030\315\035%\272V\337d2e~\206$#s\367\210\220\224\\\t`\216\355=1pp\354\\;\317\03581\352a\\q&`\332\222D\370bO>\021\236\303\343#\224\007i
AE\024
\024\007=\322\006\316'\234\272\216\352P\361J\377\241w\306r\363\2362\ry\336\034\207\204I\345\022\242\"\364\225\320\3469\2631\335^\256\026\037s51\273\221x\315
\021\310\357\204<\246\2028\231p$_mo\310[\262\301\301w\032!\340\311\374\221_\207>\007\007\304\257\0324\230l6\200\306\301TJ\034\030\025\333\325\035\330\245\2524\300=\3419\tUeK\023\222\001\211\230\234\022\305\344\256\200\302\256\017\367[T|\255}04\357D\007\300\203\251\247P\226WQ\230\211\346\030\311s\264\312\004\245\215\213\003\341\323g\213=\221\376\204z\271\351\270J\330\253\304\327&\037\023\203x\014\357\001\232g\220\217%\361\215J\336\007Q8
\316w\010\241\207L\371\352\321\225]\374?\203\247F\220\213;\351\014\237\361\244\330xN\2511I\020c9\242br0\033\r\227l\200\207F\010jD].\363\335\212\3740A\343\275i\251W\215A0\027#\260\327J\360.\252Q&\262*\032n\253\004\360e[\002\310J\017CK\256+\203\240\365M\273\307\323'\207\250\237\240\0227T\266\333s(\326\262M\220c\372{\266n\304\341\211\330\345/Cm\333\351\r\256ik\332kO\014\2302\026\273{\310I\224\370\331,\033\206H\367m\343\310\254h\300\271\357\251:\234\362\177e=\010\215\215\013B\346\177\220\243:\206\255\022\204\214f\336\334rPhB\024\352.\355\273?\361yo\314Sh\
251\314/\231y\257\226-K\353f4q\276\252'e\273\035\247,X\334""\252v\255d\333\245\367L\310c\364cg\004\260\021T\371\244\241\323\350\376\275%E\261\035\343jQ\313K^'\216\235!\334\254T\324$ZXx,\305\005UlG(\363\216a\363\206\372\336D\322\300\022Lef\010\350\232l1d\013u\033\271y]\276\247\233\313\3456t\255\217:\364\026\226\246}\215\211\320\324\261\356+\353\003D\303>\200\226M\257R\372A5\245\031r\302\231,\305\006\314i\363u\265\3727[o\272\265\241\266\272l\"b\010\010NF.\005\277\242\020\3278\227\251\242]L&L\360\352RT\356\255\347\004\334\247\2340\367Sqh\223\021R\357\355M\342\356_*\"\221\213\247\312\375h\207\252dNk\3131nW\231\340Y\255\201\212\263Lx\022\020\222e\032O0\367\025)\364\322J\034\033HD\023\205\023.\255\310P<(\034\212CB-\223K\024=\341\252]\3454\3031\201\335\222r\301\354X\273\250\n\273\250\230\227\253j\022\207\300\315\200f\300:zz\265\212\245X\206\303}aFX\007\032\237\016\323\224\342\251T\222\362d)\211(\304\330\313\n\252\236\226%I*\326-\325\332'x[\227\225\332\251a\307\026\022\206\022W\200x\265\377
\213\271\"\234(H$\201\274\264\200";
PyObject *data = __Pyx_DecompressString(cstring, 4553, 2);
if (unlikely(!data)) __PYX_ERR(0, 1, __pyx_L1_error)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/psycopg_c-3.3.3/psycopg_c.egg-info/PKG-INFO
new/psycopg_c-3.3.4/psycopg_c.egg-info/PKG-INFO
--- old/psycopg_c-3.3.3/psycopg_c.egg-info/PKG-INFO 2026-02-18
13:34:26.000000000 +0100
+++ new/psycopg_c-3.3.4/psycopg_c.egg-info/PKG-INFO 2026-05-01
22:43:42.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: psycopg-c
-Version: 3.3.3
+Version: 3.3.4
Summary: PostgreSQL database adapter for Python -- C optimisation distribution
Author-email: Daniele Varrazzo <[email protected]>
License-Expression: LGPL-3.0-only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/psycopg_c-3.3.3/pyproject.toml
new/psycopg_c-3.3.4/pyproject.toml
--- old/psycopg_c-3.3.3/pyproject.toml 2026-02-18 13:34:18.000000000 +0100
+++ new/psycopg_c-3.3.4/pyproject.toml 2026-05-01 22:43:36.000000000 +0200
@@ -24,7 +24,7 @@
[project]
name = "psycopg-c"
description = "PostgreSQL database adapter for Python -- C optimisation
distribution"
-version = "3.3.3"
+version = "3.3.4"
license = "LGPL-3.0-only"
license-files = ["LICENSE.txt"]
classifiers = [