
    ix                        % S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J
r
  SSKJr  SSKJr  SSKJr  SSKJ r  SSKJr  \" \R$                  " S	5       V s/ s H  n \" U 5      PM     sn 5      rS
r\\S'    SSKrSSKrSr\R6                  S   S:H  rSr\R<                  S:X  a0  SSKr \R@                  RB                  RE                  5          SSK$r$S
rSr%Sr&S
r' \R<                  RQ                  S5      (       a;  \RR                  " SS/\RT                  \RT                  S9r+\+RY                  5       S:H  r'S
r0 \R<                  RQ                  S5      (       a;  \RR                  " SS/\RT                  \RT                  S9r+\+RY                  5       S:H  r0\R<                  RQ                  S5      (       a`  S
r1S
r2\Rf                  Ri                  S5      S:X  a  Sr1S
r2O8\Rf                  Ri                  S5      S:X  a  Sr2S
r1OS\Rf                  ;   a  Sr2S
r1\R<                  S:X  a  SSKJ r   \
S<S j5       r5\Rl                  " SS5      r7\Rl                  " SS5      r8\Rl                  " SS5      r9 " S  S!\:5      r; " S" S#\;5      r<S$ r=S=S% jr>S>S& jr?S?S' jr@S( rAS<S) jrBS* rCS+ rDS, rES- rF\=S. 5       rG\=S/ 5       rHS@S0 jrISAS1 jrJSBS2 jrKSBS3 jrLS4 rMS5 rNS6 rOS<S7 jrPS8 rQ\R<                  S9:X  a  \KrROK\R<                  S:X  a  \JrRO8\R<                  RQ                  S5      (       a  \LrRO\S" S:\R<                  -   5      e\@rT\(       a  \?rT\(       d  \R                   S;:  a  \@rTggggs  sn f ! \ a     GNf = f! \# a     GNf = f! \ a    Sr GNf = f! \- a&  r.\.R                  \R^                  :X  a   Sr.C.GNe Sr.C.ff = f! \- a&  r.\.R                  \R^                  :X  a   Sr.C.GNSe Sr.C.ff = f)Cz1.0.1    N)contextmanager)Image)ImageOps)	ImageDraw)__version__)	ImageGrab.F
_useOpenCVT   win32linuxwhichgnome-screenshot)stdoutstderrscrotXDG_SESSION_TYPEx11waylandWAYLAND_DISPLAY)windllc              #   ,  #    [         R                  R                  U 5      nUS:X  a  [        S5      e Uv   [        R
                  [        R
                  /[         R                  R                  l        [         R                  R                  X5      S:X  a  [        S5      eg! [        R
                  [        R
                  /[         R                  R                  l        [         R                  R                  X5      S:X  a  [        S5      ef = f7f)z
A context manager for handling calling GetDC() and ReleaseDC().

This is used for win32 API calls, used by the pixel() function
on Windows.

Args:
    hWnd (int): The handle for the window to get a device context
of, defaults to 0
r   z(windll.user32.GetDC failed : return NULLz)windll.user32.ReleaseDC failed : return 0N)r   user32GetDCWindowsErrorctypes	c_ssize_t	ReleaseDCargtypes)hWndhDCs     ?C:\des-py\RoboSAPF\venv\Lib\site-packages\pyscreeze/__init__.py__win32_openDCr#   n   s      mm!!$'!8IJJ	PI060@0@&BRBR/SFMM##,}}&&t1Q6"#NOO 7 170@0@&BRBR/SFMM##,}}&&t1Q6"#NOO 7s   1DB$ A,D$A-DDBoxzleft top width heightPointzx yRGBzred green bluec                       \ rS rSrSrSrg)PyScreezeException   zPyScreezeException is a generic exception class raised when a
PyScreeze-related error happens. If a PyScreeze function raises an
exception that isn't PyScreezeException or a subclass, assume it is
a bug in PyScreeze. N__name__
__module____qualname____firstlineno____doc____static_attributes__r*       r"   r(   r(      s    
 	r2   r(   c                       \ rS rSrSrSrg)ImageNotFoundException   zImageNotFoundException is an exception class raised when the
locate functions fail to locate an image. You must set
pyscreeze.USE_IMAGE_NOT_FOUND_EXCEPTION to True to enable this feature.
Otherwise, the locate functions will return None.r*   Nr+   r*   r2   r"   r4   r4      s    9
 	r2   r4   c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )z
A decorator that marks a function as requiring PyGetWindow to be installed.
This raises PyScreezeException if Pillow wasn't imported.
c                  @   > [         (       a  [        S5      eT" U 0 UD6$ )Nz9The PyGetWindow package is required to use this function.)_PYGETWINDOW_UNAVAILABLEr(   )argskwargswrappedFunctions     r"   wrapper$requiresPyGetWindow.<locals>.wrapper   s%    ##$%`aa///r2   )	functoolswraps)r;   r<   s   ` r"   requiresPyGetWindowr@      s'     ___%0 &0
 Nr2   c                    Uc  [         n[        U [        5      (       af  U(       a&  [        R                  " U [        R
                  5      nO%[        R                  " U [        R                  5      nUc  [        SU -  5      e U$ [        U [        R                  5      (       aL  U(       a@  [        U R                  5      S:X  a'  [        R                  " U [        R                  5      nU$ U n U$ [        U S5      (       ap  [        R                  " U R!                  S5      5      nUSS2SS2SSS24   R#                  5       nU(       a%  [        R                  " U[        R                  5      nU$ [%        S5      e)
TODO
NzkFailed to read %s because file is missing, has improper permissions, or is an unsupported or invalid format   convertr&   z<expected an image filename, OpenCV numpy array, or PIL image)GRAYSCALE_DEFAULT
isinstancestrcv2imreadIMREAD_GRAYSCALEIMREAD_COLORIOErrornumpyndarraylenshapecvtColorCOLOR_BGR2GRAYhasattrarrayrD   copy	TypeError)img	grayscaleimg_cv	img_arrays       r"   	_load_cv2r\      s9    %	#s ZZS%9%9:FZZS%5%56F>0256  ( M 
C	'	'SYY1,\\#s'9'9:F M F M 
i	 	 KKE 23	1a2:&++-\\&#*<*<=F M VWWr2   c              #     #    Uc  [         n[        U5      n[        X5      n U R                  SS u  px[        X5      nU(       a#  XS   US   US   -   2US   US   US   -   24   nOSnUR                  S   U R                  S   :  d   UR                  S   U R                  S   :  a  [	        S5      eUS:X  a   US-  nU SSU2SSU24   n USSU2SSU24   nOSn[
        R                  " X[
        R                  5      n	[        R                  " U	R                  5      X:  R                  5          n
[        R                  " U
SU U	R                  5      n[        US   5      S:X  a(  [        (       a  [        S	U	R!                  5       -  5      egUS   U-  US   -   nUS   U-  US   -   n[#        X5       H  u  p[%        XX5      v   M     g7f)
a  
TODO - rewrite this
    faster but more memory-intensive than pure python
    step 2 skips every other row and column = ~3x faster but prone to miss;
        to compensate, the algorithm automatically reduces the confidence
        threshold by 5% (which helps but will not avoid all misses).
    limitations:
      - OpenCV 3.x & python 3.x not tested
      - RGBA images are treated as RBG (ignores alpha channel)
Nr      rC   r   r   r   zBneedle dimension(s) exceed the haystack image or region dimensionsgffffff?z6Could not locate the image (highest confidence = %.3f))rF   floatr\   rQ   
ValueErrorrI   matchTemplateTM_CCOEFF_NORMEDrN   arangesizeflattenunravel_indexrP   USE_IMAGE_NOT_FOUND_EXCEPTIONr4   maxzipr$   )needleImagehaystackImagerY   limitregionstep
confidenceneedleHeightneedleWidthresultmatch_indicesmatchesmatchxmatchyxys                   r"   _locateAll_opencvrz      s     %	z"JK3K + 1 1"1 5Lm7M%Qi&)fQi2G&GPQU[\]U^aghiajUjIj&jk1 1 1! 448K8KA8NQ\QbQbcdQe8e]^^qyd
!&D&&D&.1%ffffn5 }3;O;OPFLL-v/B.K.K.MNM!!-"7FG
71:!((()adjdndndp)pqq QZ$*FQZ$*FF#!22 $s   GGc              #   6  #    Ub  [        S5      eUc  [        nSn[        U [        5      (       a"  [	        U S5      n[
        R                  " U5      n Sn[        U[        5      (       a"  [	        US5      n[
        R                  " U5      nUb.  UR                  US   US   US   US   -   US   US   -   45      nOSnU(       a-  [        R                  " U 5      n [        R                  " U5      nOBU R                  S	:X  a  U R                  S
5      n UR                  S	:X  a  UR                  S
5      nU R                  u  pUR                  u  p[        U R                  5       5      n[        UR                  5       5      n[        U
5       Vs/ s H  oX-  US-   U	-   PM     nnUS   n[        U5      U	:X  d   S5       eU Vs/ s H  n[        U5      PM     snU	/U
-  :X  d   S5       eSnSnUS:X  a  [         nO["        n[        U5       H  nU" UXU-  US-   U-   U5       H  nSn[        SX5       H*  nUU-   U-  U-   nUUU	-  US-   U	-   UUUU	-    :w  d  M(  Sn  O   U(       d  MH  US-  n[%        UUS   -   XS   -   X5      v   Uc  Ml  UU:  d  Mt  Ub  UR'                  5         Ub  UR'                  5             g   M     Ub  UR'                  5         Ub  UR'                  5         US:X  a  [(        (       a  [+        S5      eggs  snf s  snf 7f)rB   NzIThe confidence keyword argument is only available if OpenCV is installed.rbr   r^   r   rC   r_   RGBAr&   z`The calculated width of first row of the needle image is not the same as the width of the image.z?The needleImageRows aren't the same size as the original image.TFCould not locate the image.)NotImplementedErrorrF   rG   rH   openr   cropr   rY   moderD   re   tuplegetdatarangerP   _kmp_steppingFindr$   closerh   r4   )rk   rl   rY   rm   rn   ro   rp   needleFileObjhaystackFileObjrr   rq   haystackWidthhaystackHeightneedleImageDatahaystackImageDatary   needleImageRowsneedleImageFirstRowrownumMatchesFoundfirstFindFuncrv   
foundMatchsearchyhaystackStarts                            r"   _locateAll_pillowr     s     !"mnn %	M+s##[$/jj/O-%%}d3

?3%**F1Ivay&)fUViBWY_`aYbeklmenYn+op((5 **=9 v%%--e4K')11%8M !, 0 0K$1$6$6!MK//12Om3356 KPP\J]J]Q1q5K*?@J]   *!, 	 K/jij/ /0CH055  YXY  O Dqy%>"#!2}3DAQ^G^!_ae
F J L7!(1 = F#Gk$9Wq[K<WX(9TUV "'J 8 z1$&6!9,a)m[WW$E)A$0%++-&2'--/-
 #4  "!((()FGG	 q 1s8   FLL&!LLBL!L0 LLA=Lc                     SUS'   [        [        X40 UD65      n[        U5      S:  a  US   $ [        (       a  [	        S5      eg)rB   r^   rm   r   r~   N)r   	locateAllrP   rh   r4   )rk   rl   r:   pointss       r"   locater   x  sK     F7O9[B6BCF
6{Qay((()FGGr2   c                 t   [         R                   " 5       n  [        SS9n[        X40 UD6n UR                  R	                  5         U(       d  [         R                   " 5       U-
  U:  a  U$  MY  ! [
         a     N4f = f! [         a-    [         R                   " 5       U-
  U:  a  [        (       a  e  g NHf = f)zTODO - rewrite this
minSearchTime - amount of time in seconds to repeat taking
screenshots and trying to locate a match.  The default of 0 performs
a single search.
Nrn   )time
screenshotr   fpr   AttributeErrorr4   rh   )imageminSearchTimer:   startscreenshotImretVals         r"   locateOnScreenr     s     IIKE
	  &T2LE:6:F%%' u,}< =  "  	 & 	 yy{U"]200	 3	 s4   B  A0 $B  0
A=:B  <A==B   2B76B7c                     [        SS9n[        X40 UD6n UR                  R                  5         U$ ! [         a     U$ f = f)rB   Nr   )r   r   r   r   r   )r   r:   r   r   s       r"   locateAllOnScreenr     sT     T*Lu5f5F M   	Ms   3 
A Ac                 8    [        U 40 UD6nUc  g[        U5      $ rB   N)r   center)r   r:   coordss      r"   locateCenterOnScreenr     s%     E,V,F~f~r2   c                     [        [        U 5      5      n/ nSnU H]  n[        U5      u  px[        X-
  5      n	[        X(-
  5      n
UR	                  X-  X-  -   5        US   XE   :  d  MO  [        U5      S-
  nM_     X5   $ )rB   r   rE   r^   )listr   r   absappendrP   )r   rx   ry   foundMatchesBoxesdistancesSquaredshortestDistanceIndexfoundMatchesBoxfoundMatchXfoundMatchY	xDistance	yDistances              r"   locateOnScreenNearr     s    
 .u56 -#)/#: (	(		 5	8M MNB"2"II$'(8$9A$=! - 33r2   c                 :    [        XU40 UD6nUc  g[        U5      $ r   )r   r   )r   rx   ry   r:   r   s        r"   locateCenterOnScreenNearr     s'      !6v6F~f~r2   c                    [         R                  " U5      n[        U5      S:X  a  [        SU-  5      e[        U5      S:  a-  [        SU< SU Vs/ s H  n[	        U5      PM     sn< 35      eUS   nUR                  5         [        U 4SUR                  UR                  UR                  UR                  40UD6$ s  snf )rB   r   z,Could not find a window with %s in the titler^   zFound multiple windows with z in the title: rn   )pygetwindowgetWindowsWithTitlerP   r(   rH   activater   lefttopwidthheight)r   titler:   matchingWindowswins        r"   locateOnWindowr     s    
 "55e<O
?q  !OSX!YZZ	_		! AF]lHm]lVYS]lHmn
 	
 !
CLLN%]377CIIszz(R]V\]] Ins   B?c                     gr   r*   )r   s    r"   screenshotWindowr     s    
 	r2   c                     [        5       n[        R                  " U5      nU S   U S   U S   U S   -   U S   U S   -   4n UR                  XS9  UR	                  U5        g)rB   r   r^   r   rC   )outlineN)r   r   Draw	rectanglesave)rn   outlineColorfilenamer   draws        r"   showRegionOnScreenr     sl    
 <L>>,'Dq	q	q	F1Iq	F1I	F 	NN6N0hr2   c                    [         R                  " US9nUb  [        U5      S:X  d   S5       e[        US   [        5      (       aH  [        US   [        5      (       a0  [        US   [        5      (       a  [        US   [        5      (       d   S5       eUR                  US   US   US   US   -   US   US   -   45      nU b  UR                  U 5        U$ )rB   )all_screens   ,region argument must be a tuple of four intsr   r^   r   rC   )r   grabrP   rG   intr   r   )imageFilenamern   
allScreensims       r"   _screenshot_win32r     s     
J	/B6{aO!OO&)S))jC.H.HZX^_`XacfMgMglvw}~  xA  CF  mG  mG  	w  Iw  	w  GWWfQiF1Iq	,A6!9vVWyCXYZ 
Ir2   c                 z   [         S:  Gae  U c1  S[        R                  R                  5       R                  S5      -  nOU n[        R
                  " SSU/5        [        R                  " U5      nUb  [        U5      S:X  d   S5       e[        US   [        5      (       aH  [        US	   [        5      (       a0  [        US
   [        5      (       a  [        US   [        5      (       d   S5       eUR                  US   US	   US
   US   -   US   US	   -   45      n[        R                  " U5        UR                  U5        OUR                  5         U c  [        R                  " U5        U$ Ub2  [         R"                  " US   US	   US
   US   -   US   US	   -   4S9nU$ [         R"                  " 5       nU$ )rB   )   r   r^   zscreenshot%s.png%Y-%m%d_%H-%M-%S-%fscreencapturez-xr   r   r   r^   r   rC   )bbox)PILLOW_VERSIONdatetimenowstrftime
subprocesscallr   r   rP   rG   r   r   osunlinkr   loadr   r   r   rn   tmpFilenamer   s       r"   _screenshot_osxr   $  s   
 	!  ,0A0A0E0E0G0P0PQf0ghK'K$<=ZZ$v;!#S%SS#fQi--*VAY2L2LQ[\bcd\egjQkQkpz  |B  CD  |E  GJ  qK  qK  {  M{  {  K&)VAYq	F1I0EvaySYZ[S\G\]^BIIk"GGK  GGI IIk" I fQiF1Iq	<QSYZ[S\_efg_hSh%ijB I !BIr2   c                    U c1  S[         R                   R                  5       R                  S5      -  nOU n[        S:  a  [        (       a  [
        R                  " 5       nU b  UR                  U 5        Uc  U$ [        U5      S:X  d   S5       e[        US   [        5      (       aH  [        US   [        5      (       a0  [        US   [        5      (       a  [        US	   [        5      (       d   S5       eUR                  US   US   US   US   -   US	   US   -   45      nU$ [        (       a%  [        (       a  [        R                  " S
SU/5        O\[        (       a  [        R                  " SSU/5        O7[         (       a!  [        (       a  [        (       d  [#        S5      e[%        S5      e[&        R(                  " U5      nUb  [        U5      S:X  d   S5       e[        US   [        5      (       aH  [        US   [        5      (       a0  [        US   [        5      (       a  [        US	   [        5      (       d   S5       eUR                  US   US   US   US   -   US	   US   -   45      n[*        R,                  " U5        UR                  U5        OUR/                  5         U c  [*        R,                  " U5        U$ )rB   z.screenshot%s.pngr   )	   r   r   r   r   r   r^   r   rC   r   z-zr   z-fzYour computer uses the Wayland window system. Scrot works on the X11 window system but not Wayland. You must install gnome-screenshot by running `sudo apt install gnome-screenshot`zTo take screenshots, you must install Pillow version 9.2.0 or greater and gnome-screenshot by running `sudo apt install gnome-screenshot`)r   r   r   r   GNOMESCREENSHOT_EXISTSr   r   r   rP   rG   r   r   RUNNING_X11SCROT_EXISTSr   r   RUNNING_WAYLANDr(   	Exceptionr   r   r   r   r   r   s       r"   _screenshot_linuxr   J  s   
 )X->->-B-B-D-M-MNc-de# "'='= ^^$GGM">I v;!#S%SS#fQi--*VAY2L2LQ[\bcd\egjQkQkpz  |B  CD  |E  GJ  qK  qK  {  M{  {  K&)VAYq	F1I0EvaySYZ[S\G\]^BI	 	$45		+T;?@	\\2H2H  C
 	
  X
 	
 
K	 B6{aO!OO&)S))jC.H.HZX^_`XacfMgMglvw}~  xA  CF  mG  mG  	w  Iw  	w  GWWfQiF1Iq	,A6!9vVWyCXYZ
		+
 		
		+Ir2   c              #     #    S/[        U 5      S-   -  nSn[        [        U 5      5       H9  nXE::  a*  X   XU-
     :w  a  XCXT-
     -  nXE::  a  X   XU-
     :w  a  M  XCUS-   '   M;     SnSnU Hi  nU[        U 5      :X  d  US:  a7  X   U:w  a/  XcU   -  nXsU   -  nU[        U 5      :X  a  M  US:  a
  X   U:w  a  M/  US-  nU[        U 5      :X  d  Me  Uv   Mk     g7f)rB   r^   r   N)rP   r   )	needlehaystack_dummyshiftsshiftposstartPosmatchLencs	            r"   r   r     s     
 SCK!O$FES[!lv{f5[.AACK((E lv{f5[.AAsQw " HH#f+%Q6;Kq;Px((Hx((H #f+%Q6;Kq;P 	As6{"N s   ACAC-C=C	Cc              #      #    [        S[        U5      [        U 5      -
  S-   5       H@  nSn[        S[        U 5      U5       H  nXU-      X   :w  d  M  Sn  O   U(       d  M<  Uv   MB     g7f)rB   r   r^   TFN)r   rP   )r   r   ro   r   r   r   s         r"   r   r     sk      !S]S[81<=
CK.C3'6;6"
 / :N >s   AA,A,#	A,c                 n    [        U S   [        U S   S-  5      -   U S   [        U S   S-  5      -   5      $ )aE  
Returns a `Point` object with the x and y set to an integer determined by the format of `coords`.

The `coords` argument is a 4-integer tuple of (left, top, width, height).

For example:

>>> center((10, 10, 6, 8))
Point(x=13, y=14)
>>> center((10, 10, 7, 9))
Point(x=13, y=14)
>>> center((10, 10, 8, 10))
Point(x=14, y=15)
r   r   r^   rC   )r%   r   )r   s    r"   r   r     s=    " SQ//SQ=O1OPPr2   c                    [        U [        R                  R                  5      (       a  [	        U 5      S:X  a  [        S5      e[        X5      n[	        U5      S:X  d  [	        U5      S:X  aN  USS u  pVnUSS u  pn
[        XX-
  5      U:*  =(       a'    [        Xi-
  5      U:*  =(       a    [        Xz-
  5      U:*  $ [	        U5      S:X  an  [	        U5      S:X  a_  Uu  pVp{Uu  pp[        XX-
  5      U:*  =(       a>    [        Xi-
  5      U:*  =(       a'    [        Xz-
  5      U:*  =(       a    [        X-
  5      U:*  $  S[	        U5      < S[	        U5      < 35       e)z
Return True if the pixel at x, y is matches the expected color of the RGB
tuple, each color represented from 0 to 255, within an optional tolerance.
r   zpixelMatchesColor() has updated and no longer accepts a tuple of (x, y) values for the first argument. Pass these arguments as two separate arguments instead: pixelMatchesColor(x, y, rgb) instead of pixelMatchesColor((x, y), rgb)rC   Nr   zNColor mode was expected to be length 3 (RGB) or 4 (RGBA), but pixel is length z  and expectedRGBColor is length )rG   collectionsabcSequencerP   rW   pixelr   )rx   ry   expectedRGBColor	tolerancepixrgbexRexGexBaexAs                r"   pixelMatchesColorr    sI    ![__--..3q6Q;  @  A  	A
+C
3x1},-2bq'a(!,#AG	)jAG	0IjPSTUT[P\`iPij	SQ3/0A5
a-#\Y& ,QW*,QW*, QW*		
	
3x-.0	
ur2   c                    ^ [        U [        R                  R                  5      (       a  [	        U 5      S:X  a  [        S5      e[        R                  S:X  a  [        5        n[        R                  R                  X U5      nUS:  a  [        SR                  U5      5      eSR                  U5      mU4S j[        SSS5       5       u  pEnXeU4sS	S	S	5        $ [        [!        5       R#                  X45      S	S
 6 $ ! , (       d  f       g	= f)zf
Returns the color of the screen pixel at x, y as an RGB tuple, each color represented from 0 to 255.
r   zpixel() has updated and no longer accepts a tuple of (x, y) values for the first argument. Pass these arguments as two separate arguments instead: pixel(x, y) instead of pixel((x, y))r   r   z(windll.gdi32.GetPixel failed : return {}z{:0>6x}c              3   F   >#    U  H  n[        TXS -    S5      v   M     g7f)r      N)r   ).0ibbggrrs     r"   	<genexpr>pixel.<locals>.<genexpr>  s$     J>as6!!e,b11>s   !r   NrC   )rG   r  r  r  rP   rW   sysplatformr#   r   gdi32GetPixelr   formatr   r&   r   getpixel)rx   ry   hdccolorr  r  r  r  s          @r"   r  r    s     ![__--..3q6Q;  R  S  	S ||wLL))#!4Eqy"#M#T#TUZ#[\\%%e,FJ5Aq>JGA!!9  Z\**A622A688 s   #A/C??
Ddarwinz'PyScreeze is not supported on platform 3)r   )N)Ni'  Nr^   g+?)NNNr^   N)redz_showRegionOnScreen.png)NNF)NN)Ur   r  r   r>   r   r   r  r   errno
contextlibr   PILr   r   r   PIL__version__r   r   splitr   r   r
   bool__annotations__rI   rN   ImportErrorversion_infoRUNNING_PYTHON_2r8   r  r   r   r   SetProcessDPIAwarer   r   rF   rh   r   
startswithPopenPIPE	whichProcwaitOSErrorexENOENTr   r   r   environgetr#   
namedtupler$   r%   r&   r   r(   r4   r@   r\   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r   )rx   s   0r"   <module>r>     s-   g    	  
   %    - (<(<S(AB(A1A(ABC
D 	J ##A&!+  <<7 //1) $)    !%  

||w''$$g/A%B:??cmcrcrs	!*!1Q!6 

||w''$$gw%7
XbXgXgh	 ~~'1, <<7##KO	zz~~()U2	*	+y	8	bjj	( <<7 P P, U$;<w.U$45	 		/ 	)X23jiX" <(40 ^ ^" 	 	 " #L<~0Q( 
F9: <<8 J\\W"J\\W%%"J
G#,,V
WW 	!I# 5%	 !6 w C  		  
  (#' ((  	xx5<< 	  	xx5<< 	sz   M-?
M2 2$M? N $AN AO
 2M<;M<?N	N	NNO!OOO
O6O10O11O6