+
    im                    :  a  0 t $ ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RIH
t
 ^ R	IHt ^ R
IHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIH t  ^RIH!t! ]'       dO   ^ RI"H#t# ^ RI"H$t$ ^ RI"H%t% ^ RI&H't' ^ RI&H(t( ^ RIH)t) ^ RIH*t* ^R I+H,t, ^R!IH-t- ^R"I.H/t/ ^R#I0H1t1 ^R$I0H2t2 ^R%I3H4t4 ]! R&]]]]3,          R'7      t5]Pl                  ! ]74      t8R( R) lt9R* t:]Pv                  ! R+]Px                  R,]Pz                  R-]P|                  R.]P~                  R/]P|                  R0]P~                  /4      t@R1]AR2&   R3 R4 ltBR5 R6 ltCR7 R8 ltDR9 R: ltER; R< ltFR= R> ltGR# )?    )annotationsN)Any)cast)
Collection)Dict)Mapping)Optional)TYPE_CHECKING)TypeVar)Unionschema)text)
expression)ForeignKeyConstraint)Index)UniqueConstraint)_InspectorConv)util)is_index_sig)	is_uq_sig)ops)PriorityDispatchResult)sqla_compat)ReflectedForeignKeyConstraint)ReflectedIndex)ReflectedUniqueConstraint)quoted_name)
TextClause)Column)Table)AutogenContext)_constraint_sig)DefaultImpl)AlterColumnOp)ModifyTableOps)Plugin_C)boundc               4    V ^8  d   QhRRRRRRRRR	R
RR
RR/# )   autogen_contextr"   
modify_opsr&   r   Optional[str]tnameUnion[quoted_name, str]
conn_tablezOptional[Table]metadata_tablereturnr    )formats   "ڂC:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO\maestro-backend\venv\Lib\site-packages\alembic/autogenerate/compare/constraints.py__annotate__r7   5   sW     D+ D+#D+D+ D+ #	D+
  D+ $D+ D+    c                  a aaaa-a.a/a0a1 S P                   pSR J o/VR J o0S P                  P                  o.VeT   VP                   Uu0 uF'  p\	        V\
        P                  4      '       g   K%  VkK)  	  pp\        VP                  4      p	M\        4       p\        4       p	\        4       p
\        4       pRo1RpSEe4   \        4       p\        4       p \        V4      P                  SVR7      pRo1V Uu. uF+  pS P                  VR,          RRSRV/4      '       g   K)  VNK-  	  ppV F  pVP                  R4      '       g   K  RpK   	   \        V4      P!                  SVR7      pV Uu. uF+  pS P                  VR,          R	RSRV/4      '       g   K)  VNK-  	  ppS0'       d   \        4       p
MV Uu0 uF  p\#        S.VS4      kK  	  p
pVV.3R
 lV 4        Uu0 uF  pVf   K	  VkK  	  ppV'       d   \%        V
VVV	S P&                  S.4       S.P)                  V
VVV	4       V Uu0 uF  pS.P+                  V4      kK  	  ppV	 Uu0 uF  pS.P+                  V4      kK  	  ppV
 Uu0 uF  pS.P-                  V4      kK  	  ppV Uu0 uF  pS.P-                  V4      kK  	  ppVP/                  V4       Uu/ uF7  pVP0                  '       g   K  \3        \4        VP7                  S 4      4      VbK9  	  ppV Uu/ uF  pVP8                  VbK  	  ppV Uu/ uF  pVP8                  VbK  	  ppVP/                  V4       Uu/ uF8  p\:        P<                  ! VP8                  4      '       g   K+  VP8                  VbK:  	  pp\        V4      P?                  V4       Uu/ uF  pVVV,          VV,          3bK  	  ppV Uu/ uF  qwP@                  VbK  	  ppV Uu/ uF  qwP@                  VbK  	  ppV Uu/ uFC  p\:        PB                  ! VPD                  S P&                  4      '       d   K6  VP@                  VbKE  	  ppR V V/V0VV13R llp R V V/V0VV1V3R llp!R V VV3R llp"\G        \        V4      PI                  V4      4       F  p#VV#,          p$\K        V$4      '       d   V$P@                  V9   d   K0  V#V9   dt   VV#,          w  p%o-\L        ;QJ d    V-3R lV 4       F  '       d   K   RM	  RM! V-3R lV 4       4      '       d&   V%P@                  V9  d   V!! V%4       V!! S-4       K  K  K  V!! V$4       K  	  \G        \        V4      P?                  V4      4       EF  p&VV&,          p'V&V9   d$   VV&,          w  p%o-\O        V'4      '       d   S-p$MT%p$M	VV&,          p$\Q        V$4      \Q        V'4      8w  d   V!! V$4       V ! V'4       Kk  V'PS                  V$4      p(V(PT                  '       d   V"! V$V'V(PV                  4       K  V(PX                  '       dD   \O        V$4      '       d   R	MRp)\Z        P]                  RV)V$P8                  V(PV                  4       K  V(P^                  '       d   EK  Q h	  \G        \        V4      PI                  V4      4       F  p*VV*,          p+V ! V+4       K  	  V F  p,V,V9  g   K  V ! VV,,          4       K  	  \`        Pb                  # u upi u upi   \         d     EL\         d     ELi ; iu upi   \         d     ELi ; iu upi u upi u upi u upi u upi u upi u upi u upi u upi u upi u upi u upi u upi u upi )NFr   Tnameunique_constraint
table_nameschema_nameduplicates_indexindexc              3  >   <"   T F  p\        SVS4      x  K  	  R # 5iN)_make_index).0ixr1   impls   & r6   	<genexpr>/_compare_indexes_and_uniques.<locals>.<genexpr>   s$      0B D"j110s   c                   V ^8  d   QhRR/# r+   objN_constraint_sig[sa_schema.UniqueConstraint] | _constraint_sig[sa_schema.Index]r4   )r5   s   "r6   r7   2_compare_indexes_and_uniques.<locals>.__annotate__   s     $ $/$r8   c                  < \        V 4      '       d   SP                  V P                  V P                  R RR4      '       dp   SP                  P                  \        P                  P                  V P                  4      4       \        P                  RV P                  V P                  4       R# R# \        V 4      '       d   S'       g   R# S'       g	   S'       d   R# SP                  V P                  V P                  RRR4      '       dp   SP                  P                  \        P                  P                  V P                  4      4       \        P                  RV P                  V P                  4       R# R# Q h)r?   FNzDetected added index %r on '%s'r;   z+Detected added unique constraint %r on '%s')r   run_object_filtersconstr:   r   appendCreateIndexOp
from_indexloginfocolumn_namesr   AddConstraintOpfrom_constraint)rJ   r,   is_create_tableis_drop_tabler-   supports_unique_constraintss   &r6   	obj_added/_compare_indexes_and_uniques.<locals>.obj_added   s    11		388WeT  %%c&7&7&B&B399&MN5HH$$	 s^^. -11		388%8%  %%''77		B AHH$$ 5r8   c                   V ^8  d   QhRR/# rI   r4   )r5   s   "r6   r7   rL   !  s     # #/#r8   c                   < \        V 4      '       d   V P                  '       d   S'       g   R # SP                  V P                  V P                  RRR 4      '       df   SP
                  P                  \
        P                  P                  V P                  4      4       \        P                  RV P                  S4       R # R # \        V 4      '       d   S'       g	   S'       d   R # SP                  V P                  V P                  RRR 4      '       df   SP
                  P                  \
        P                  P                  V P                  4      4       \        P                  RV P                  S4       R # R # Q h)Nr?   TzDetected removed index %r on %rr;   z+Detected removed unique constraint %r on %r)r   	is_uniquerN   rO   r:   r   rP   DropIndexOprR   rS   rT   r   DropConstraintOprW   )rJ   r,   rX   rY   r-   rZ   r/   s   &r6   obj_removed1_compare_indexes_and_uniques.<locals>.obj_removed!  s    }}}%@ 11		388WdD  %%coo&@&@&KL:CHHeL	
 s^^- 11		388%8$  %%((88C AHH 5r8   c               $    V ^8  d   QhRRRRRR/# )r+   oldrK   newmsgstrr4   )r5   s   "r6   r7   rL   F  s*     ) )/)/) )r8   c                $  < \        V 4      '       d   \        V4      '       g   Q hSP                  VP                  VP                  R RV P                  4      '       d   \        P                  RV P                  SV4       SP                  P                  \        P                  P                  V P                  4      4       SP                  P                  \        P                  P                  VP                  4      4       R# R# \        V 4      '       d   \        V4      '       g   Q hSP                  VP                  VP                  RRV P                  4      '       d   \        P                  RV P                  SV4       SP                  P                  \        P                  P                  V P                  4      4       SP                  P                  \        P                  P                  VP                  4      4       R# R# Q h)r?   Fz#Detected changed index %r on %r: %sr;   z/Detected changed unique constraint %r on %r: %sN)r   rN   rO   r:   rS   rT   r   rP   r`   rR   rQ   r   ra   rW   rV   )re   rf   rg   r,   r-   r/   s   &&&r6   obj_changed1_compare_indexes_and_uniques.<locals>.obj_changedF  s    $$$$11		388WeSYY  9388UC %%coo&@&@&KL%%c&7&7&B&B399&MN s^^S>>!>11		388%8%  EHH	 %%((88C %%''77		B  5r8   c              3  V   <"   T F  pSP                   VP                   8g  x  K   	  R # 5irA   )unnamed)rC   meta_idxconn_idxs   & r6   rF   rG   {  s)      $8 $$(8(88$8s   &)zunique constraintz5Cannot compare %s %r, assuming equal and skipping. %s)2	inspectormigration_contextrE   constraints
isinstance	sa_schemar   setindexes	frozensetr   get_unique_constraintsrun_name_filtersgetNotImplementedError	TypeErrorget_indexes_make_unique_constraint_correct_for_uq_duplicates_uixdialectcorrect_for_autogen_constraints_create_metadata_constraint_sig _create_reflected_constraint_sigunionis_namedr   rh   md_name_to_sql_namer:   r   constraint_name_stringintersectionrm   _constraint_is_namedrO   sorted
differencer   allr   typecompare_to_reflectedis_differentmessageis_skiprS   rT   is_equalr   CONTINUE)2r,   r-   r   r/   r1   r2   rp   uqmetadata_unique_constraintsmetadata_indexesconn_uniquesconn_indexes+unique_constraints_duplicate_unique_indexesconn_uniques_reflectedconn_indexes_reflectedrD   uq_defr?   metadata_unique_constraints_sigmetadata_indexes_sigconn_unique_constraintsconn_indexes_sigcmetadata_namesconn_uniques_by_nameconn_indexes_by_name
conn_namesr:   doubled_constraintsconn_uniques_by_sigmetadata_uniques_by_sigunnamed_metadata_uniquesr[   rb   rj   removed_nameconn_objconn_uqexisting_namemetadata_obj
comparisonthing
added_namerJ   uq_sigro   rE   rX   rY   rZ   s2   ff&ff&                                       @@@@@r6   _compare_indexes_and_uniquesr   5   s     ))I D(O"d*M,,11D ! %00'
0"i889 B0 	$ '

 ~556&)e#51:L&/kL"'27/K 	 >G[	G%3&$$U6$: # +/' 1&0B"33vJ'!5-@ 0 # & -66,--BF? -	%3I%>%J%Jf &K &" 1&0B"33vJ!5-@ 0 # & 5L 54F (fjA4  0
  E 	 
 3&'##	
 	((#	 .'-B 	,,R0- $ ' <L;KR,,R0;K  
 =I<Hb--b1L  
 =I<Hb--b1L   1667KLLA:: 	=S!''891<L   0GG/F!AFFAI/FG/?@/?!AFFAI/?@ )../?@@A--aff5 		@   ,-:: 

D 	#D)+?+EFF
   5LL4Kb::r>4KL!@!@2

B!@  
 2 1B//HHo--
 	

B1    $ $L# #J) )V s:99.IJl+h  $<<00 3L AGX $8 $8   OO+BBG$H% C	 !' K*  N 3 @ @ LM%m4// 3M BGXL))#"!-0H>T,//!l# &::8DJ&&&HlJ4F4FG###  ,H55G;N  KMM&&	 "*****S NV S0;;JGH
Z(# I +,,.v67 + "***k'
L& # 	 	 		2& # 		&

H'

 H@ M s   "[!-[![+ 3&[&[&\ +&\
\
5\!\&'\&)\+	\0)\5	\:8\?$\?;]]	(]/]] ]]63]".]"+\9\\\\\c                N   V Uu. uF  p\         P                  ! Wd4      V3NK  	  ppV UUu0 uF  w  rVf   K  VkK  	  p	ppV UUu0 uF&  w  rVe   K  VP                  V4      P                  kK(  	  p
ppV Uu0 uF-  pVP                  '       g   K  \         P                  ! Wd4      kK/  	  ppV Uu/ uF#  qfP                  '       g   K  VP
                  VbK%  	  ppV  Uu/ uF+  pVP                  R,          '       g   K  VP
                  VbK-  	  ppV Fi  pW9  dB   VP                  W,          4      P                  V
9  d   V P                  W,          4       KH  KJ  W9  g   KR  VP                  W,          4       Kk  	  R # u upi u uppi u uppi u upi u upi u upi )Nr>   )	r   _get_constraint_final_namer   rm   uniquer:   rT   r   discard)r   r   r   r   r   rE   consmetadata_cons_namesr:   metadata_uq_namesunnamed_metadata_uqsmetadata_ix_namesconn_ix_namesuqs_dupe_indexesoverlaps   &&&&&&         r6   r   r     s   * 0/D 
	/	/	>E/    32d2   .-JD 	;,,T2::-   %$D;; 	>..t=$   2>M_TYY_MM ,+D99'(( 			4+   $+55$-'+,
 (//0@0IJ, -  !78 $?
 Ns?   !FFFFF;FF4FF#F"F"ascdescnulls_first
nulls_last
nullsfirst	nullslastzMapping[str, Any]_IndexColumnSortingOpsc               (    V ^8  d   QhRRRRRRRR/# )	r+   rE   r$   paramsr   r1   r!   r3   zOptional[Index]r4   )r5   s   "r6   r7   r7     s,      
-;@r8   c                ,   . pVP                  R 4      p\        VR,          4       F  w  rVVf&   RV9   g   Q hVR,          V,          p\        V4      pMTpVP                  V,          pV'       d6   Wt9   d0   WG,           F#  p	V	\        9   g   K  \        V	,          ! V4      pK%  	  VP                  V4       K  	  \        P                  ! VR,          .VO5RVR,          RV/V P                  VR4      B p
RV9   d   VR,          V
P                  R&   V
# )column_sortingrU   expressionsr:   r   _tabler?   duplicates_constraint)
rz   	enumerater   r   r   rP   rt   r    adjust_reflected_dialect_optionsrT   )rE   r   r1   exprssortingnumcol_namer:   itemoperatorrD   s   &&&        r6   rB   rB     s    35Ejj)*G"6.#9: F***-(-D:DD<<)Dt#MM551(;DAD * 	T ; 
v
	
 h
 	

 
/
/
@
B &(+12I+J'(Ir8   c               (    V ^8  d   QhRRRRRRRR/# )	r+   rE   r$   r   r   r1   r!   r3   r   r4   )r5   s   "r6   r7   r7   '  s,      
8FKr8   c                    \         P                  ! VR ,           Uu. uF  q2P                  V,          NK  	  upRVR,          /V P                  VR4      B pRV9   d   VR,          VP                  R&   V# u upi )rU   r:   r;   r>   )rt   r   r   r   rT   )rE   r   r1   cnamer   s   &&&  r6   r~   r~   '  s     
	#	#+1.+A	B+A%,,u

+A	B
F^
 
/
/8K
L
B
 V#&,-?&@"#I 
Cs   A6c               $    V ^8  d   QhRRRRRR/# )r+   r   r   r1   r!   r3   r   r4   )r5   s   "r6   r7   r7   5  s$     : :):7<::r8   c                B   V R ,          pV R,          '       d   V R,          : RV: 2pV P                  R/ 4      p\        P                  ! V R,           Uu. uF  qAP                  V,          NK  	  upV R,           Uu. uF  qR: RV: 2NK  	  upVP                  R4      VP                  R4      VP                  R4      VP                  R	4      V R
,          R7      pV R,          pV R ,          p\        P
                  ! W4      p	WP                  9  d   \        P                  ! VVP                  .\        V R,          V R,          4       U
Uu. uF6  w  r\        P                  ! WP                  V
,          P                  4      NK8  	  upp
O5RVe   TM\        P                  RRR//  MVP                  P                  V	,          P                  P                  R4      '       d   VP                  P                  V	,          p\        V R,          V R,          4       FW  w  rWP                  9  g   K  VP                  \        P                  ! WP                  V
,          P                  4      4       KY  	  VP                  V4       V# u upi u upi u upp
i )referred_tablereferred_schema.optionsconstrained_columnsreferred_columnsonupdateondelete
deferrable	initiallyr:   )r   r   r   r   r:   r   rT   alembic_placeholderT)rz   rt   r   r   r   _get_table_keymetadatar!   zipr    r   BLANK_SCHEMAtablesrT   append_columnappend_constraint)r   r1   r/   r   r   nrO   r   r   remote_table_keylocalremoteplaceholder_tables   &&           r6   _make_foreign_keyr   5  se    #$E  !"344e<jjB'G***01F*GH*Ge		*GH'-.@'AB'A!E1	'ABZ(Z(;;|,++k*F^E ./O,-N"11 222	
 &)016:L3M&&ME   e)<)A)AB&	

 #.  ++	
 (.	
  
			#	#$4	5	:	:	>	>
 
 '//667GH ()62D+E
ME 000!//$$V\\%-@-E-EF	
   'La 	IB0s   J>J
<Jc               4    V ^8  d   QhRRRRRRRRR	R
RR
RR/# )r+   r,   r"   modify_table_opsr&   r   r.   r/   r0   r1   r!   r2   r3   r   r4   )r5   s   "r6   r7   r7   r  sW     |+ |+#|+$|+ |+ #	|+
 |+ |+ |+r8   c                  a aa
 Ve   Vf   \         P                  # S P                  pVP                   Uu0 uF'  p\	        V\
        P                  4      '       g   K%  VkK)  	  pp\        V4      P                  W2R7       Uu. uF+  pS P                  VR,          RRVRV/4      '       g   K)  VNK-  	  p	pV	 U
u0 uF  p
\        W4      kK  	  pp
S P                  P                  pS P                  P                  P                  W4       V Uu0 uF  q|P                  V4      kK  	  ppV Uu0 uF  q|P                  V4      kK  	  ppV	'       dF   RV	^ ,          9   d8   V Uu/ uF  qP                   VbK  	  ppV Uu/ uF  qP                   VbK  	  ppM6V Uu/ uF  qP"                  VbK  	  ppV Uu/ uF  qP"                  VbK  	  ppV Uu/ uF  qP$                  f   K  VP$                  VbK!  	  ppV Uu/ uF  qP$                  f   K  VP$                  VbK!  	  ppV V
V3R lpV V3R lp\'        V4      P)                  V4       F`  pVV,          o
VV9  g   K  S
P$                  '       d/   S
P$                  V9   d   VS
P$                  ,          P*                  MR pV! S
V4       Kb  	  \'        V4      P)                  V4       F`  pVV,          o
VV9  g   K  S
P$                  '       d/   S
P$                  V9   d   VS
P$                  ,          P*                  MR pV! S
V4       Kb  	  \         P                  # u upi u upi u up
i u upi u upi u upi u upi u upi u upi u upi u upi )	Nr   r:   foreign_key_constraintr<   r=   r   c                  < SP                  V P                  V P                  R RV4      '       d   SP                  P	                  \        P
                  P                  SP                  4      4       \        P                  RRP                  V P                  4      RP                  V P                  4      V P                  '       d   RV P                  ,          MRV P                  4       R# R# )r   Fz1Detected added foreign key (%s)(%s) on table %s%s, %s. N)rN   rO   r:   r   rP   CreateForeignKeyOprW   rS   rT   joinsource_columnstarget_columnssource_schemasource_table)rJ   
compare_tor,   rO   r   s   &&r6   _add_fk&_compare_foreign_keys.<locals>._add_fk  s    --IIsxx!95*
 
   ''&&66u{{C HHC		#,,-		#,,--0->->->)))B  
r8   c                  < SP                  V P                  V P                  R RV4      '       d   SP                  P	                  \        P
                  P                  V P                  4      4       \        P                  RRP                  V P                  4      RP                  V P                  4      V P                  '       d   RV P                  ,          MRV P                  4       R# R# )r   Tz3Detected removed foreign key (%s)(%s) on table %s%sr   r   r   N)rN   rO   r:   r   rP   ra   rW   rS   rT   r   r   r   r   r   )rJ   r  r,   r   s   &&r6   
_remove_fk)_compare_foreign_keys.<locals>._remove_fk  s    --IIsxx!94
 
   ''$$44SYY? HHE		#,,-		#,,--0->->->)))B  
r8   )r   r   rp   rr   rs   rt   r   r   get_foreign_keysry   r   rq   rE   correct_for_autogen_foreignkeysr   r   rm   unnamed_no_optionsr:   ru   r   rO   )r,   r   r   r/   r1   r2   rp   fkmetadata_fksconn_fks_listrO   conn_fksrE   metadata_fks_sigconn_fks_sigr   conn_fks_by_sigmetadata_fks_by_sigmetadata_fks_by_nameconn_fks_by_namer  r  removed_sigr  	added_sigs   ff&&&&    `              r6   _compare_foreign_keysr  r  s    ^3%...))I !,,,Bb)889 	,   !+<< = 


B ++vJ$5-8
	 	
  
 ;H:G%,-   ,,11D %%**JJ
 <H;GR,,R0<  
 =E<Db--b1H   mA&661=>A99a<>5EF5Eyy!|5EF =IILq//2LI-=
-=  !#-= 	 

 ,+avv		+   ,8N<a66		<N $ ?+667JK,11 :::%**0D"D %UZZ066 
 uj) L ,-88I	#I.O+ :::%**0@"@ !,22 
 E:& J "***[
 ?F J
 OsY   "L<L<&M-M9MM-M"M=MM4M$M)#M):M.M.c               8    V ^8  d   QhRRRRRRRRR	RR
RRRRR/# )r+   r,   r"   alter_column_opr%   r   r.   r/   r0   r   conn_colzColumn[Any]metadata_colr3   r   r4   )r5   s   "r6   r7   r7     sX     )+ )+#)+")+ )+ #	)+
 #)+ )+ )+ )+r8   c                "   VP                   pVP                   pWn        WJd   \        P                  ! VP                  VP                  4      '       d   \        P
                  ! V4      '       g2   \        P                  ! VP                  VP                  4      '       d(   \        P                  R VV4       \        P                  # Wqn	        \        P                  RV'       d   RMRVV4       \        P                  # \        P                  # )z3Ignoring nullable change on identity column '%s.%s'zDetected %s on column '%s.%s'NULLzNOT NULL)nullableexisting_nullabler   _server_default_is_computedserver_default_nullability_might_be_unset_server_default_is_identityrS   rT   modify_nullabler   STOPr   )	r,   r  r   r/   r   r  r  metadata_col_nullableconn_col_nullables	   &&&&&&&  r6   _compare_nullabler'    s     )11 ))(9%533++X-D-D  77EE77 //1H1H 
 HHE  "*** /D+HH//Z	 *...!***r8   c                    V ^8  d   QhRRRR/# )r+   pluginr'   r3   Noner4   )r5   s   "r6   r7   r7     s      & T r8   c                    V P                  \        R R4       V P                  \        R R4       V P                  \        RR4       R# )tablerv   foreignkeyscolumnr  N)add_autogenerate_comparatorr   r  r'  )r)  s   &r6   setupr0    sK    
&&$
 &&
 &&r8   )H__conditional_annotations__
__future__r   loggingtypingr   r   r   r   r   r	   r
   r   r   
sqlalchemyr   rt   r   sqlalchemy.sqlr   sqlalchemy.sql.schemar   r   r   r   r   r   ddl._autogenr   r   
operationsr   r   r   sqlalchemy.engine.interfacesr   r   r   sqlalchemy.sql.elementsr   r   r    r!   autogenerate.apir"   r#   ddl.implr$   operations.opsr%   r&   runtime.pluginsr'   r(   	getLogger__name__rS   r   r   immutabledictr   r   r   r   r   __annotations__rB   r~   r   r  r'  r0  )r1  s   @r6   <module>rD     s7   # "            *  % 6 ' 2    ( %  * J;F32,+2/'/0)T/1EuLMN !D+N<9~ -1,>,>z~~
z,,j**j++Z))	- ) 	@:z|+~)+Xr8   