Professional Documents
Culture Documents
Algoritmi Paraleli + de Învatat
Algoritmi Paraleli + de Învatat
!
"
#
$ %&
'
( "
$
&
"
!
)
! &
* $$
$
) $
( )+ ((
$
! (
$ &
!
!
$$
! (
$$
!
&
$$ ",
#$
$$$ ",
'-
$$( ",
&
, .
!/ '(
$$ & '
$$#
, -
$(
! 0
$
*
.
/ '
$
(
( )
"
!
&
(
,
( &
(
($ 1
((
'
( %
&
,
( )
!
0
2
( 3
"
&
! --
( $ )
2
-
($ !
&
"
-
($
-
($ $
($$ &
4
(
($( +
!
($ )
5
3
$
! !
$$
+
0
5
!
$$
! & )+ $(
$ ! &
$
$
(-
$ &4 &
(
$ 6
& +78 )+9 &
&
(
$$
! .&
!
/ ($
$(
&
&
!
('
$
&
-
(
$
(
&
5&
(
( :2
&
($
#
((
#
(
&
'
(#
; '#
#
!
# &4 &
$
#
&
(
#$
&
#
#( 6
&
&
* -
#
#
!
# &4 &
$
# $
!
# (
0
"
--
#
-
# # &
!
&
! -
# ' 6
&
-
!
#
!
&
9 &
& &
5
"
& ! 0
&
,
&
,
!
! !
!
&
"
! 0
&
<
0
!
" &
!
=
59 &
5
* &
"<&
*
!
0
, ,
5
&
> , &
& 0
&
"
&
?
? &
&
9
&
9 &
9 5 "
!
0
,
! 9
&
& 0
&
9
&
&
!
.
, &
/
0
&
&
@
0
9
!
9
0
&
&! &
9 &
&
> &
"
& ,9 45
&9
A2
B ! C& DE9 &
! 0
>
9
!
&
F
! 0
>
&
4&
"
# 1
9 &
9
) &
5 ! &
& ,
0
"! 9
!
&
7
0
&
,
5!
5
"
&
!
"
!
,
9 &
*
!
"
! .&
&
!
0
&
! &
/ 5
4& &
&
)5
> 9 0
"
9
&
&, 0
5
9 0
>
,
0
&
&
9
> -
&
&
9 &
&
)
! >
4
! &
&
&
!<
&
0
9
'
&
<
, 0
&
"9 &
& 4
!
9 ", "
.
9
G
&
,9 "5
/
!
9 0
! & %!9
&
&
9
!
&
4
!
&
1 4
F
,9
&
5
9
& 4
F4 &
&
!
9 &
,
&
"
&
0
4
&
9
&
G
&
!
!
! 5
! !
&
,
! 0
$
# @ & &
&
"
0
!
! )
&
4 &
.2
9
&
! &
9
&
/
49
&
,! &
9 &
4
9 &
, &
>
&
&
!
9 &
& &
4 0
&
,
4! 7 ! 0
0
,
&
2
4!
&
&
" "
&
9 0
,
&
&
2
9 &
&
0
" &
, &
,, !
>
0
&
9 &
&
"
&
9 "
&
&
,9 4 & &
&
9
!9 &
> 9
0
&!
,
9
&
9
&
9
> "
!
!9
&9 &
4!
6
&
&
9 &
!9
<
@
<
! "
&
&9 4
0
!
! 0
5
" . &
&/9 &
0
"
6
4
&
&
&
&
&
&
&
!9 &
&
&
&
)
&
&
*<0
5
HB
9 &
&&
&! <&
I
F4
!
! F4 > &
9 &
"
& I
.
/I
4
!
&
>
! !
.
& /I
4
!
9
&
>
&
9 0
&
4
! &
9
&
.&
& /I
&
4
&
5
&
&
9 "
&
&
.&
/I
9 0
!
&
0
"
9
&
5
!
&
&
&
< ! <
& 0
#
&
9 &
& &
"
9 0
&
" &
9 &
4
&
>
4 &
! &
&
>
4 &
&
&
9 0
", 4! !
9 &
&&
, &
&
"
!
, &
&
! 0
&
! &
> 4&9 &
&
,
0
"
9 &
!
&I
% I &
4&
!
>
%
I
! 4&
9
&
,
>
%I
>
%I
,
,
&
0
&
&
5
&
!9
& 4 &
&
&
>
&
4 ! &
! &
9
&
&
!
"
&
4!
<
&
!9 0
<
&
9
!
F4
>
9
&
9 & 0
&
&
&
&
?&
?
) &
& 5 , &
9
&
,
4
0
&
!
49 &
9 &
!
9 4& J
K 9 9
5
!
-
J- % %
% %
J % %
% %
J( % %
% %
0
H
I 7 !
0
5
&&
@
", &
H
I
&
6) 5
&
> +L 5
> 6L 5
> + 5
> 6 5
6
!
! !
9
!
)
&
,
&
0
9
5
&
"
&9
55 "
!
0
&&
"
&
! !
!
9 " 0
&
!
74 !
!
&
&
!
9
& "
!
.
/ 0
&
!
,
0
! "
0
!
&
!
&
&
> "9 & 4! &
!
0
1
&
<
5
& )<
!
5
&
&&
> 0
&
&
0
5
!
! 4!
9 G! 0
!
& &
&&
9
&
&'
#
&
,
0
$9
&
)
4
!
!
9
<
!
&
5
&
! 4 &
F 0
>
& 9
&9 !
45
6
4
!
0
&
!
.
&
5
&
0
&/9 " 0
9
9
&
5
&
9
& 4
! &
> 4&9
&
,
& &
<
9 &
, &&
<
> 9 "
!
4&9
&
!
0
9 0
! F !
0
&
& 9
,
9 9 0
9
&
$ " "
&&
&
"
!
M-> 4& "
9 )9 )
)59 N&
& -9
0
&!
& 9
&! &
&
0&
0
9 &
&
,
I
!
,
&
9
9 J -
>
&
&
4
.
/ &
> , 0
&
,
,
4
H
$I
! &
H
(I
&
&
H
&
& 4 &
&
&
9
!
&
&
>
0
&
0
&
"
> "
!
!
"!
4! &
"
9
&
&
&
&'
(
!
# 1
&
*9
&
,
0
(9 4
!9
9
.
&
,
0
/
9
&> 0
&
,
!
&
!
"
9
> 0
, &
9
.
/
&9
F &
0
)
& &
> &5
F
0
,
9
&
!
$
6)
&
& )
"
H
I
&
&
.& ,/9
!
&
5
! &
!
F
%
&
,
&
"
$ &
! , &
9
9 5
,
&
.&
/
9
"
&
G
9
> 4&9
&
&
"
9
&
9 0
9
&
!
&
! 0
"
!
&
0
&
* &
4
"&
!>
0&
!
0
5
&
> 4
"
!
,
&
!
&
9
0
,
"
> &
9
&
0
&
9
!
5
&
>
4&9
, &
!
# &
9
#(
&9
&
!
9 &
,
& 9 *
!
9
! &!
,
" 0
F9 ,
!
F 0
"
7
! 0
,
(
+!
H
#I
&
&
"&
&
0
)
---- 7
&
&' !
#
9 !
&
,
0
#9
&
>
4
&
&
,, &
!
9 & 4 &
>
"9
!
!
&
"
H
&
4
&
&
&
F
0
! &
, F 0
L , &
,
&
5
0
!
9
&
9
&
#
"
5
&
&
9
!
, 5
0
(5 &
&
5
1
&
)
H
'I
&
0
5
&
9
0
& &
4!
! " #
$ " %& '
(
( )
"** (
+
#9 &
&
5
.
/
H5
! .&
/ &
"
!
&
,
5&<
&
%--
&
&O & 7L#'G#9
&
<
&
.
/ &, &
!
,
9
!
&
0
&
&
! ./ "
&
>
& & &
,
0
'9 0
!
, &
"! .
B /> &
&
9 &
"!
!
& *9 &
!
>
&9 5
* &
,9
&
!9
9
"!
#
)
, 0
&
& + .+
&
/> 4&
A= )2
)G+ #--9 ) +(---9
6
)+ >
!
&
9 0
I
P & 4
!
& !
>
P
&
"!
& &
!
9
&
. &
& ! &
/ &
&
!
5 *
5
&
!
. P &4
&
/ ,
*I &
" 0
!
!9 0
&9 &
!
& "
&
"!
&
&
!
!
9 !
0
, 4! &
"!
" & " ! 0
&
&
0
5
&
74!
!
"9 !
!
9 0
&&
9
",I
!
9
!
&
,
9
4! &
&
5,
! 9 &
,
"
!
, 4
4
F
&
! 0
!
9
!
0
&
! 0
4!
!
& .&
5
L18 P L
B 1
8
/> &
! "
!
&
&
.0
9 0
9
&,I
9 0
!
/9
&
"
!
0
&&
>
&
!
! 0
9
!
9 4&
#( !9
&
!
!
9
4 0
&
6
"
.
/
! 6
" "
!
3
"
,
&9
!
&
0
!
.
/9 4
0
@
!
& >
&
.
9
, /
5
" ,9
!
&
" .Q/ 4
&
3
"
"
Q
!
. / 0
!
9
9 9 9 " 0
! J 9 J
!
&
9 9
5
9
! 0
&
>
,
9 &
9 0
!
9 .
/9
0
> 0
4
9
.
/
.
/
! 0
&
!
" . / 4
!
0
&
"9
!
&
!
!
> &
9 4
. & &
&
& /
L
&
! !
6
.4 / &
">
" 6
" &
!
6
"
! 4 . &!
/
0
6
"
4 "
&
!9 &
!
, .
0
&4
&
!
&
/9
! &
<
9 0
!
<5! "
>
H
I
&
!
9
0
4
,
, &
5
& &
!9
9 0
&
) &
9
9 " 0
! 0
&
9
"
7
,
>
9
&!
9 !
4
0
&
!
!
!
=
9
&
"=
1 4
F
" .
/9 0
4
0
>
9
.
/ . 4
/ !
.
/ .4
.
/ />
&
"9
!
> " &
, &
&
&
1 4
F
9 &
&
!9 0&
&
&
!
7
&
"
"
&
&
!
9 &
" 0
5
&
0
,
&
!
&#
5
.
/9 &
9
J .
/
J . K /
> 0
&
, &
9
0
9
& 3
Q J 9
.
/9
J
9
> 9 0
"
,, &!
&
> "9
&
"
& .! " , 0
&
M- 0
4&
/
&
! &
9
&
&
9
!
9
"
0
9 > 4&9 !
! &
*
.
/
J &
)
&9
&
9 .
/>
"
5
0
- I
& !
9 & . /
K
&
.
/9
&
0
)
!
!
./ ./
H
I 74&
& ./
( $ ./
( $
&
. -
! -
/9
0
&
I J J 6
&
!
&
.Q J (/9
!
9
&9 9 * 9 9
9
>
" J K 9
6
4&
*
)
"
.
/9
9 &
0
" 0
&
"
,
%
9 Q J (9 J K . ,
/ !
!
9 &
> 0
"
9 "
!
9 6
4&
&
H* )$--- 3
!
&
, 0
$
B %$79
&
9
&
$
+ .
-/ " &&
0
&
5
->
!
"9
!
&
.
,
&
/>
0 " 0
& @
&
9
J &
H
&
>
&
,
-
-
--
-
--
-
--- - --
./ ./
H
-I 4& &
I ./
$ ./
(
! "
&
5
> 4&9 0
&
$9
9 ! . &
9 ! 0
!9 ---
--9 -- ! -- -
9 ! (/ Q J J
9
.
/ !
J
. , &
$/ 6
4&
& &
"
6R7
A&
&
!
>
& !
&
!
5
F 0
! &,! 0
&>
0
&,!
I -
&
&
&
9 &
L &
! ! 0
! "
0
&,! >
"
0
&
,
I J
9
J S > &
!
0
> ,9 4&9
-9 0
&
,
0
F
&
5
9
!
&
>
&
5
9
, &
&
@
" &
9 !
5
&
&
$
"
# "
%& Q
.
/ .
/
3
( .
/ .
/
%
( .
/ .
/
%
$ # .
/ .
/
A&
.
/ .
/
@
&
9 ! & 0
"
! 9 !
!
! 0
,
9 &
!
4 9 ? ?
0
! "> &
&
!
0
,
I
&
!
!
! &
F
!9
> &
0
&
&9
! 4
9 5
9
&
,
! 0
"
&
9 &
&
9 9 &
9 "
&
,
&
>
&
$
,
# %& &
"
&
,
@ .
/ J - I
>
.
/9 ,
"9
"
,
!9
.
/
&
,
./ . /
9 &
. / J -
)
# +& &
&
&
&
,
0
9
&
&
!
!
&
0
>
! &
&
!
$
9
&
&
!
&
-
# +!
& ! -
9 45
& &
0
.
/ 6
"
&
9 &
5
,
0
5
&
& &
&
&
&
&4
! 0
"
9
$
> "
0
!
5
9
&
,
& 4&9
" &
.
M-/9 0
&
&
!
&
,
&
&
.
&
/>
9
----
9 A) --- &
! 3
$---
.
"
&
0
/
# )
! 5
9 & "
.Q
/I
4
"
Q !
; " &9
&
!
&9
&
> &
&
& I
" &
&
!
&
5
!
,,
> 0
"
9 4 !
)
&
!
, 4&9 &
Q J 9
& 7
"
!
0
"
&
&
!
&
>
0
,9
5
!
9 "
&
&
&
& &9
9 !
" & 0
&
9
&
&
!
9
&
.Q
/9 !
!
&
!
"
!
"
# )
0
-9 &
&
& &
!5
& 9
!
* & "
!
&
9
0
!
4
>
&
,
" &
. &
&
,
0
&
"
,/9
&
0
&
9
!
, , %
$
,
*
&
,
9
! " &
&
&
,
>
! &
!
" 0
&
0
!
"!
0
0
">
&
,,
& &
!>
&
"
! !
&
&
& 0
!
&
&
&
5
!
"
!
9 0
&
&
&
"
!
"!
9 &
&
5
9
, &
& & & . & & , 0
"
I & 0
& &
9
&
&
> 0
/ !
?&
&
? &
>
9 !
9
I
9 &
9
,9
& !
> 0
&
,>
&
0
& (
$
)
!
9 4& &
&
!
"
>
& 0
&
&
L &
,
0
"
&
9 4&
&
5
!
!
9 "
6
& D E
'-# H !
"
&
"
"
0
"
&
5 "
!
& !
9
0
!
! "
!
& !
9
0
!
> &
,
9 0
! ./ . /
! &
"
&
"
! 9
0
!
.
55
0
./
! . // )
!
"
" ! &
9
& &
!I
"
9
. /9
4
./9
./9
./ !
"
, 0
<
. / . ./
. //9
! &
./ ! . /<
4&
0
"
!
&
.
, ./ !
/I
4 0
>
9
"
! &
&
! ,>
9
F ,
>
>
9
!
% # L &
,
, "
9 &
"
&
9 "
@
"
0
&
9
9
9
! &
&
&
F
& "
0
& 9
9 & &
!
&
.
" / 6
4&
0
&
!
&
,
0
9 &
(
5
&
& "
>
(
./ ./ ./
H
I ./
0
5
( > ./ "
0
5
9
> ./
0
5
-- -
-
-- -
--- --
./ ./
H
I ./
&
$ ./
0
&
$
&
>
4
, &
> 0
&9
&5
5*9
6
0
>
&
9 &
, &
>
&
9
! . 45
&/
9 &
9
&
0
. "& &
*
&
&
5
9 !
0
DE/
0
&
3
B
F 6
3
B
&
& !9 " 0
"
&
5
.
0
&
/ 4&9 3
B
F
!
9
&
,I J .-
/9 J .-
/9
!
9
"
- & &,!
9
!
9
0
9
"
& &,!
9 J .--
-
-/9
& ,9 0
&
$9 0
& "
0
5
( ( & 0
5
&
(>
( (
H
$I 3
&
T
&
5
. &
/9 !9 "9
9
K J >
4& &
,
0
$ ! &
,
+ ,
"
+ - -
- . (
/,
-
%
0 -
&
1
+ /, (
$
+ /
-
(
$
,
23
%1& (
$
+ /
/, (
! $ + /
L &
,
&
&
&
, &!
=
&
I
!" 49
0
F&G .
H1
&
)
5
&
/ 9
9 0
) .
)
/
&
,
&
! 0
" 0
5
.
&
4I 3 &
<-
&
!9 % &
<- &
!/9 0
!
,
9 "
I
"9
&
&
&
, 0
4 .
#
F
9
!9
,
9 &
!/9 ! &
5
9 &
& .
2/9
, &
0
0
!
! 6
, 1@)U9
!
,
&
9 4&
,
!
+
& ' %F&G9
,
R 8 1=
1
@
1
B9 0
---9 !
,
--- !
#
6
&
9 0
& 0
9
4
&
&
&
!
!
"
&
!
!9 &
,
&
, 9 "
!
5
& 0
&
9
9
4
&
&
! 9
,
&
&
, )
9
&
3
$
&
9
"
! &
&
&
,
9 &
, 0
&
, "
!
3A,> !9
&
"
!
9 & "
, ,
& 3F&G
"
! 0
&
9
0
!
"
! &
L
-- G %!9 ! , 9
"
! 0
,
"9
&
* "
.
0
&
! / !
" 0
&!
L
&
! 0
& $
!"
&
9
! &
L
,
G
L,
! 4
9
& &
"
, " 9 &
&
!
!
&
!
&
&
"=
"
9
"
,
9
, 0
&
! &
&
. &
/ &
&
5
&
&
9 -
&
! 0
&
L
&
,
&
0
+&
0
! , 9 &&
9
F&G 9 & 9
%
!
!
,
&
9
!
,
7
4
0
&
45
&9
,
!
, I
'
0
&
&
7 5
!
749
9
! 0
,
! &
>
&
&
&
&
, 0
&
,
&
&
&
&
! ,
1
& --
9 ,
9 &
) &
! &9 0
*
9 --- &
)
9 &
,
!
B %$7
9 &
$>
&
7 & #(9 "
!
#' A, ! &
"
!
" $ 3F&G .&
!
0
/9 !
3 @
&
&
0
(- ! '# L, 4
! &
0
$ RG9
L, 4
' %F&9
&
,
(--9 "
( &
"
! & !
7
&
7----
9
( &
#( &
6
)+9 "
!
"
! (-- A, !
&
"
!
" -- F&G &
&
#( 39
,
--5(-- G & &
.
&
4 &
/ L, 4
5
&
($ 3F&G . 1@)U/
"
! & !
9
&
4&
6
)
R5
!9
& &
,
&
&
9
&
&
5
0
5
&
&
!
! 0
"
&
&
&
)
&
" 0
! 0
) .
)
& /I &
4
! &
9
,,
&
&
" &
,
0
&
&
9
"
0
&
, &
,
,
! &
*>
&
9 &
&
*
&
!> !
9
! 4&
,
&
*9
! " & &
> &
,, &
)+ .)
+
/
%
0
9
!
! &
* ) . )5
"/
! 0
) &
4 ! &
9
"
&
,
&
I
74!
!
9
&
4
!
0
&
&
@ &
4 !
!
9 ! &
0
0
&
9 ! & 4 "
! 4!
$-
)
&
,
* 0
!
9 0
4
5
9
&
0
!
!
)
# 6
&
4 &
&
5
&
> 0
9
&
9 0
"
!
! ,
9
0
&
&
, !
0
.
5
9
"
! 0
!
&
9
&
&
/ )
-
9
9 " 0
0
4! %!9 &
& 5! F
&
&
9 &
5 &
&
9 &
, 9
4&9
!
9 &
&
&
> &9
!
&
)
& 4
!
"
0
"
!
4&9
&
&
"
!
J $
#
.
# -
&
4
!
# 9 0
&
4 # -
!9 0
9
# Ê
# J -9 J $9
! # J
/
# &
#
9
> ,
0
&
> &
.0
9
/
,
4
&
! 0
F
0
! 0
"
9
"
!
&
,
9
F 0
9
"
" " 0
&
! 4&
9
#
"
,
9
&
4
&
,
!
9
&
) &5
I
&
!
4&
9 &
& 6
&
&
&
)
9
0
4& 9 % &
!
# Ê 9
&
9
#9 0
&
9
&
"
"I
!
J $
$
#
.
# -
0
&
, #
F 0
5
,
9
0
&
&
"
9 0
,
5
0
9 0
"
L
"
9 !
5
F 0
0
0
&
9
&
",
> 0
,
4 # -9 " &
!
&
"& 0
9
4 # ->
>
&
#
9
&
0
9
> "
9 "
9 &
&
9
"
&
5
.
/ F 0
&
9
!
4&
>
0
&
9
4&
&
0
"
$# 1* 0
!
&!
"
"
& "
!
!
0
* &
0
9 ! ! " 5
+,
!
9 &
&
"
,
!
, > # 0
# &
.
"
J9 &
/
" &
!
, "
!
>
!
4
!
) 4 !
4
! "9
.
!
J I
# I 9
&
,
&!>
!
9
!
55
# ) & &9
& 9
4& 0
J I
!
0
&
5
&! !
!
!
4
& 4&
!
4! &
>
&
9
&
$
)
4&
"
,
!9
! &
9 !
4& 0
&9
,
&
&
, !
! "
!
9
,
9 ,9
&
&
!
&9 0
9
> &
& &
9
!
9 ! 0
9
&
5
.
&
&/9 &
&
"
!
!
>
&
5
& &
!
& 1
&
0
4& I
5
!
0
9 0
&
9 &
0
!
!
&
.
/ )
"
"!
!
0
F
!
9
,
!
!
9
0
4& 9
!
# -
'
# &
0
!
0
&
)
& &
>
&
"
9 & &
&
&
0
&
4! &
9 0
0
& >
0
0
&
! "!
0
5
0
&
!
0
!
> 0
4&
0
& 0
&
! !
!
.& ( "
&
/
"
&
&9 " ! !
!
01
9 0
4 "
I
)
9
& &
9
!
"!
0
&
&
! &
< 4&
!
!9
9
"
. &!
/9
5 !
&
"!
& &
"
>
,
9 0
&
&
,9
!
01
0
4! &
5
9
&
! &
!
, &
5
. ,
'/9
! &
&
0
0
&
. / &
.!
0
&
&
!/ 74!
!
01
4!
!
&
$
!
#
!
!
01
! &
!
!I
&
,
!
$$
01
J - I
'
(
!
!
& (
4 0
&
>
0
!
9
! &
4
!I
4
& ' &
J -9 & !
!
&
J
9 0
!
J - I 9 01
4 0
&
& &
0
- !
", , &
& 0
!I
J - I
01
'
(
9 &
! 0
9
!
! 4
0
&
9
! 4
!
!
&
! 9
, 0
9 &
&
&
!
!
9
4
, 0
9 &
* .,
0
&
!
4&/
$2
,!
#
&
9
9
&
!
! &
,
&
!I
4 &
9
&
9
&! 4
!
2
4
.& /
2.& /
$(
)
&9
.
/
,
0
0
F
. 0
,
&!
/9 &
!
* &
! &
"
!>
&
&9
&9 "
&
!
&
! I
9
&9 9 *9 9 9
9 >
5
&
&
9
> &
&
"
&
9
0
- ! !
9
..
I/9
&/
0
&
!
."
! 0
5
/9
&
&
9
& &
4 &
!
L &
&
0
"
, ,
0
9
&
&
,
&
&
&
! 0
!
!>
0
&
*9 0
&9 &
0
5 ,
9 "
&
! &
9 0
,
0
<&
&
<
&
*
)
# 7
&
! 2
&
0
&
9 &
&
>
&
!
&
0
!
&!
&
! 0
5
4&9
"
&> &
&
&
! *
&
9 !
"
!
J
. 9
&/
. 9
/
.
!
J . /
2. 9
&/
$
.
!
J . K /
2. 9
/
0
&
! 29
)
" 0
!
9 &
&9 &
&
>
9 &
9 0
$9 4 2
9
&!
,
0
&
52
"
!
# &
&
&
* &
&
F4
!
9
0
&, &
9
29
0
"
%
" * "
& &
&
&
& &
0
I " &
& &
$
&
!9
& ! &
&
!&
."
"
/> ,
! >
)
!
#
&
! 0
! 9
&
&
&
&
&, &
!
., 0
" &
& !
&
/
9
& &
,
?*?
!
.
&
5
&
!
/> &
0
&
2
9 &
4
&
!9 > & & 2
! " .
0
/9 &
,
?*?
9
& , 0
&
&
!& "
" 9
! 2
&
"
*9
!
!
!
9
!
&
5
) )
*
,
0
5
V
> & 9 4!
5
9 ,
* &
" *
V
!
4 2>
! " &
&
.
"
/9
,
0
&
.
/ &
&
&9 ,
" !
&
!9 4& 0
' )
0
& 0
* & 0
V
!
& 2
!
0
! 0
&
V
9
4! &
5
9 ,
0
* &
"9
4! 29 *
&!
0
,
&
)
3
!
#
5
9 &
! 2
& &9 "
,
*
!
* 2 )
!
!9
"
"
,
,
"
&
4! 29 &
& 4 &
!9 0
&
5
! ! 0
5
! & " !
5
&
V
> &
0
$>
4
!
7
&
!
5
0
!
& F
! " 9 4 F
,
* &
" &
&
, &
!
&
&
4
.&
$#
)
)
!
&
! * * &
!
&
& 2
2
H
I
!
0
&
9
)
)
!
&
! * RV
* &
!
&
& 2
2
H
I
!
&
V
)
)
!
&
! * * &
!
&
&
!
& 2
2
H
$I
!
5
$'
" 0
!
/9 !&
!
!
9 ,
&
5
.9 /
4 &
!
$
!
(
9
!
4 & 29 "
! 0
, &
)
#
!
5
F4 ! "9
0
& 0
, &
4 &
&, &
!>
* &
4!
&
!9
&
9 0
&
!9 !
&
!
9 &
! &
!
> & &
,
9
"
"
0
"
! "!
0
&
!
)2
# )
&
!9
"
5
4 "
9 "
&
!
> 0
9 &
&
9
&
9 &
!
!
" !
0
&
! &
"
4& &
&
9 4&9
&
5
&
J
*
,
!
.
&
&
/
J - I
.
9 /
.+
&
,
&
/ )
!
5
9
! "!
0
&
9
J - I 9 01
.
9 /
!
&
!
9 &
&!9 & &
!
9 &
5
&
5 &
% .2 01
!
# &
&
9 &
&
9 ",
&
!
! I
&
&
* 7
9
&
&!
,
*
@
!
* &
&
9
&
&!
5
9
! 9 &
&
&
0
"
*
$
01
.9
&/
.9
&/ 2. 9
/
2. 9
/ $
!
! 2
L &
"
9
!
.9
&/
2. 9
/
&
,
&
9
"
,9
&
0
& &
! & !& &
& 4
.9
&/
2. 9
/
.
2. 9
/
.9
&/
&
&
9
" &
!>
0
&
&
&
!
&!
,
&
9
0
&
9
&
9
&>
4&9
J 9 0
&
& 9
! >
&
9
& 9
&
&9
! > &
&
9
&
9 0
&9
"9
"
&
> 0
4&
&
)
&! &
9 &
&
0
" &
V
4
+ /,!
%&
5
$
/, 6
,
$
&
9 &
-
9
&
6
&
&
F
&
!
&
&
.
0
)/
&
I
!" # $%
&" # $ '%
9 & &
&
>
0
F &
9 0
,
! '9
,
&
9
5
&
&
&
%
) .
&
,
"
!
/ 0
0
,
4!I ()*(
4!
9
&
,
&
$&#
5 0
)9
&
5
)
"
!
&
! +
!
+
, !
& 0
9 !
& &9
) .
5
!
&
!
!
-9
(-
(!'"-' $!# ,#
! '
!# '!#
! !
# %
!-"-' $!# ,#
! '
!#
#
! !
# # (
$
!%
&
,
0
9
"
%
5
&
, .
/ (!'9
!-
&
,> 4&9 & *
&
V
9
> &
5! &
!
9
)
!
5
9
!&
&!9
/!
&!
5
% # L &
,
4& &
)9 &
(
&
! &
! &
0
!
)
*
&
9 ! > &
&
,
0
( &
!
*
&
9
, &
,
9
&
,
&
) & &
)
& &
9 !
&
,
&
(9
*
" 0
! ,
!
> "9
&
&!
, & ! * "
!
4 .
-/>
&
!
"
! F
&
&
! 7 * 9 !
!
!
,
J #9 &
,
4I
!
0 '! ,
1
!
0 '! ,
!
0 '! ,
!
0
!
&!
&,
0
&
9
4
! ! !
" 0
0
!
& 4
4 !
4! &
&
&
"
!
&
9
"
&
V
9
,
&
> 0
9 &
*
9
(!'
& 0
.!' 0
&
>
!
,
&
&
&
) +
.!
,
5
" &
V
> ,
,
0
"
!
*
&
0
V
.!
/>
0
4&
9
--
"
&
" 0
&
9
9
&
!
"
&
#
)
!
7
5
)
!
# )
!
&
&
!
!
&
&
5
& .
/ 7
&
,
9 ",
9
! &
!
0
&5
9
4
!
9 4& 4
5
&
&9 &
4
L
&
,
0
& ( !
&
&
!
(
-'
"
#
$$
-%
5
6'# 7
6(
!7
!
081 97
6":
# :
-%7
,
!
66
&"66# :6'%7
,
'
!
!
66 !"66# :%7
,
'!
!
!
" 3 ; %
5 " 6' << % '
!
!
0 !
!
"=( !!
! !, ;
!
! >?=%7
!@" %7
A
H
(I )
) &
&
!I &
* &
5
!
($
-'
"
#
$$
-%
5
6'# # '
!
#
7
6(
!7
!'81 9#
!-81 9# !
81 97
6":
# :
-%7
,
!
66
&"66# :6'%7
,
'
!
!
66 !"66# :%7
,
'!
!
!
'
!
< "6' C 1% B 7
'
!
!
'
!
< "6' 1 C % B 7
'
!
!
"!'# =!
0 '! ,
B'=# 6'%7
6.!
6
"!
# 1 %7
6.!'"!'#
,!"!'%C1# 6DE# '
!
# FF# 66%7
6!-"
!-# 1 # 6DE#
# FF# 66# :
!%7
"=B'
B?=# 6'#
!-%7
6+
, !"%7 !
!
A
H
I )
) &
&
!I
&
* &
5
& 9 &
((
&
,
&,! 0
&
) &
&
9 &
5
"9 ! , 0
&5
+
&
&
&
&
5
&
,
9
,
5 &
I
9
.
$/9 &
)
"
0
&
9
&
"
! &
"
&
"
&
$#
)9
&
4
&
9
&
,
&
)> !
9 &
9
5
&
9 0
&
0
&
L
&
&
&
&
> &
"
F4 0
&
9 &
! 4!
&
& ! &
"
#
&
* )+ .)
+
/9 4
+ &
! >
&
9 , D#E
9 0
5
&9
&
+ 74 8
/<0
9 0
&9 &
5
!
&
+8 )+ .
+
8
/<0
9 0
&9
&
&
0
! !> &
,
0
"
I
5 &
!
< @
(
5 &
&
>
&
&
4>
)++%W
5 &
< +R%++W
&
9 "
&
9 &
!
&
!
!
&
0
&
9 "
!
!
. &
! &
/
%
"
)+
&
&
& 9
)+ "
0
%
2# &
&
"
$ K 9
9 9 $
&
! &
" &
9
&
"
5
&
&
9
&
",
&
! $ K L
F 0
9
&
5
, ! 9 !
4&!
9
&
J - I
9 01
$ K
&
&
9 0
&
,,
"
&
! &
&
!> , "
0
%
# )
,
&
& )+9
5
&
&
9 % 9 J - I $ 6
& " &
", % K % !9 0
&
9 % K % 9 &
&
! @
J 9 &
&
,
% K %
!
J-
K
! &
)+ &
&
./ &
4 5
!
9
,
> 0
,
9
!
&
!
0
!
9 0
&
!
&
9 & ,, 0
% K % "
,
&
& &
&
0
0
9
9 0
4& 9 "& 7+78 )+9
4
0
! !
L
, 4&
! &
(#
6
)4
, (
-
7 * ! 8
$,
&
9
! &
!>
9
! " 0
0
&
.
9 / &
! 4
1 &
9
!
0
&
4 & &
"
!
5
,
,
! &
> 0
! & 4 & 5
0
&
! 4
9 0
,
!9
&
!
& L
!
&
&
9
"
"
! .&
0
&
/
,
&
! "
!9
4!
& &
&
&9
& ,
5
9
4
!
0
&
9 &
& &
)
&
*9
! " &
> &
5
&
,
,
! &
!
&
2
> 4
& 9 45
& D6E
L
9 &
0
!
5
<
&
&
&
,
! &
! 9
" &
"
&
!
9
0
&9
!
!
&>
!
!
&
& 4
&
0
&
! L 0
9 0
&9 "
4
!9 ! 0
,
9 0
&
0
! ! &
&
&
" 0
&
!
('
(
!
0
'9
! &, 0
!
,
&
& &
0
&
!I 0
,
! &
!
&
9 &
!
"9 @ ! "& 4
0
&
9
& &
0
&
! &
,
&9
0
&
% &
,
0
!
"
)
& &
I
*5
0
&
9 "
&
9
&
&
*
+
! & 4! <
5
<
" 0
&
( 01
# )
,
0
!
*9
&
9 &
*
&
!9 *
&
0
&
.0
"
, &
!
!
/ @
&
&
!
0
&
< &
&
<
0
*
&
&
&
&
,
! 0
&
!
!9 &
! H
*
&
!
&!
0
5 ,
0
&
9
9
&
>
* .
, ! &
&
/
0
$
>
&
!
&
,
0
*> * <
&9
!
5
!
"
!
"
*9 4&
<
&
&
& &
!> &
&!9
0
5 9 ! &
!
&
!
0
6
&9 "
0
0
. */9 0
0
! , 0
!
9
"
!
!9 ! &
*
9 &
, 0
$ 9 0
&
*
0
&
9 0
0
&
9
&
&
*9 *
0
& &
& "
> 0
& .
,
/
&
0
!
!9
,
& >
&9 &
"
,
0
9 ! & 0
&
(
> &9 *
9 &
,
9
!
4&
> &
,
*
,
0
"
9 4&
$
9
&9
9
*
* 0&
! 0
& .+/9
0
$$9
, .,
9 V
/
!
> &
F9 &
5
&
!
!
*
, &
!
&9
* 0
, > F9 9
,
&
&
* &,
9
& ? ? *9
&
*
F
0
0
&
> 9
!
9
0
,
< ! !<
&
&
&
9 &
F9 &9 &, 0
!
9
0
&
*
%!9
0
& 0
& &
9
0
&
,
0
0
&5
-
&
!
&
&
H
$I
!
"
=
.
&/
&
!
&
&
H
$ I
!
&
!
&
&
H
$$I
! =
9 &
&
0
*
0
!9
0
0
9 "
!
!
&
5
&
,
.
9 &
! *
&
9 ( ! &
&
,
0
& &
, ! ! &
&
,
0
&
,/
9 0
&
9
"
&
.!
9
4&9
/
#
&
! &
&
* 0
&
.&9 9 &
&
"
=
/
&9
5
&
* !
&
0
* 9
"
*> , 0
*
0
&
4< * "
9 &, &
9
*
., !9 ,/
&
&
9 0
&
*
./ J '
' &
,
>
'
9 &
9 ! "9 I
0
( &
!,
.
5&/
> &
9 4&9
! &
!9 &
0
&
!9
&!
, 0
*
9 &
!,
&
*9 "
5 &
&
!
>
9 ( !
' 9
( &
*
&
*
) &
9 (
! 9
&
& &
!
"
0
!!
*
&
!> *
9
F "& =
9 0
9
"
=
74&
.$ /
0
&,
&
!
!
&
2
#
&
&
*
"
&
> 4 &
!
, &9 &
5
9 0
"
0
"
! &
" 0
!
"
=
> 5
9 &
&
&, ,
9
& 0
4&
,
.0
&
,
"
/
0
!9
0
&
!
9 0
& &
6
&
! &
"
9
&
9 "
&
4
&9 &
>
&
9
&
&
! ,9
X , D $E9 C
X A DE9 X
8
D E9 R
2 D$E
9 &
!
!
"
,9 0
&
,
! "
&
, &
!
0
&
* &
!
0
$(
%
*
&
.
55
/
&
!
! 0
&
9 0
9
&
!
!
9 *
&
&
0
%
! *
&
&
9
" .
9
55/
$ %
*
&
&
5
9
"
.55
9
9
&
/ !
&
! ",
"
( %
&
* &
5
&
9
"
"
.
9
I
I ",
I
I
I
I ",
I
I
I +
!
I
I +
I
I +
I + &
I + + + + +
I +
H
$(I &
!
! 9 4& &
J ( &
&
&
6
&
!
&
,
I 0
!9 0
& &
9 &
,
55/ &
!
9
&
* &
&
9
.
9
/9
",
&
, !
&
>
&
",
0
5
",
&
,9 !
&
!
& &
0
, 0
&
&,! &
I
4&9 0&
&
9 &
5
!9 !
&
, &
5
%
&
* &
&
9
9
.
9 &
, 559 & 4
9
&
/
&
!
",
&
, "
&
&
!
!
9
0
!
9 &
! "
!
&
&
&
! 4
&
0
!
(
,
.
,
/ 7
0
4! &
&
9
&
!
0
!
&
0&
&
7
9 ,9 &
,
&
0
&
5
&
> & 4! 9 &
0
&9 0
&
9
4!
!
&
!
,
& &
0
5
9 ! 0
"
&
=
&
4! 9
&
,
0
& " 9
0
0
&
&, &
,
! 5
0
&
0
& 4! &
!
,
"
!9
0
&
,
&
>
,
" &
&
5
&! *
!
&
,
!
&
&
!
!
! 0
! 4
&
&
!
! 9
! 0
!
& & 0
> 0
&9
"
! &
!
0
& &
& %&
9 &
!
9
> &
&
,
&
>
9 !
&
, !
&
.! 4
& &
"
!/ &
,
0
& 9
4&9
&
"
!
! &
&
9
& "
0
&
> !9 &
&
&
& &
"
!9
"
&
&
*
9
9 9 0
9 , 0
&
9
4 *
9
0
",
9
! ! &
& !
&
&
9 ",
!
!9 &
&
&
. &
/9
9
9 & , 0
&
&
!
*9 &
,
!
&
%& 4!
! &
)
&
!9 &
!
&
&
,
&
I , &
.
/9 - &
9 &
9 &
&
&
,
"
!I
&
" &49 . &
" &4>
&
4!
! &
&
&
,,
&
,
! 0
>
9
"
9
& &
0
! -
&
,
& 4! &
",
9 &
&
5
9 " &49 &
9 &
> " ! - 9
&
&
>
&
9
+ F 0
&
&,!9
!
0
5
6
*
9
# &
!>
# & &9
!
4 * 0&
! 0
&9
&
&
,
&
5
9
&
9
&
! # & &
&
9
* &
9
! &
& )
!
0
!
* & &
0
*9 9 "
9
* &
> &
!
&
& " 0
&
*
)
3
3
)
!
#
,
9
! 0
!
! Æ J
.#
# / &
* &
! 9
&
0
&
9
&
.
* 9 &
9
&
/
Æ J
.#
# /
!
.
/ K .
#/ J Æ
!
J
#
./ ./
!
.# /
J Æ
. 9
&/
. . 9
/
.
!
. /
Æ
2. 9
/
!
J #
. 9
&/
$
.
!
Æ 0
2. 9
&/
!
J #
. 9
/
!
9
&
0
&
9 0
!
! 9
F
&
0
!
! &9 &
&
0
",
>
!
!
" &
!
& >
9
. /
J Æ > 0 9
. /
J
. / 0 Æ9 &
"
Æ > ,
$> 0
,
9 ! 0
9 ! &
&
0
0
! !
9
&
"
!
&
, 0
&9
!
! 0
!
&
&
&
,,
*9 0
!
! >
9 &
!
&!
,
! 0
, 9 $ ! $
.
$
, &
& &
0
,
0
4
9 &
&
!
Æ J
/ ) 4
9 0
"5 &
&
!
9 &
&
> 0
&
,
!
0
,
&
%&
4!
$ I
- J Æ> - J Æ' > - J Æ .( K ' /
)
&
& "
9 *
&
Æ
)
9
!
,
!
'
H
$#I %
&&
0
&
! 9 &
&
5
7,
!
#
&
9 * & 0&
! 0
!
&
! 9
Æ 9
Æ >
0
9 &
* 0&
0
5
&
1
&
!
. 1 /
&
9 1 .-
/9 & &
- J Æ .( K 1' /
& *
!
Æ
Æ (
1J K
'
)
& &
&
!
( J - 0
!
"
#
9 &
"
! 0
&
.&
&
*9 0
&
/9
*
& &
0&
! 0
& .*/9
9
6
4& &
,
0
$#9 0
0
&
!
F
&
> & &
! &
&
*9
&
&9 0
&
&! 5 &
"& ",
*
,
* "
9 & &
* 0
! & &
4
, 0
&
"
>
&
&
$'
9 0
&&
9
&
&
&
&9 &!
&
!
! !G
&
"=
=
9
"
!9 !9
&
0
8!
# & &&
&
*
!9 &
>
*
0&
! 0
2 &
9 9 9 9
2 > &
5
&
9 &
&9 2
&
& *
& Æ &!9
& 2 K Æ &!> & 9 &
& &
&
!
I
- J .2 K Æ/ ' J ' K . / '
2 2
./ ./
H
$'I &
&
9 0
,
I
./
*> ./
&&
&
!
&
,
&
&> ,
&
,
&
!
2
)
, &
> 9 2 J 9
& "
5
.
*/
)
&
9 &
!
- J .2 K Æ /.( K ' /
2
@
&
,, &
' .Æ /
2 J
(
&
&
,
- J ' K .Æ /( .$$/
& 0
"I
! &
&
&
!
) &
9 &
&9
0
&
!
2 9 0
& I
(
.Æ /' (
)
* 9
! 5
)
(
,9 &
9
'
"
> 0
&9
! 0
!
! Æ 9
&
"
&
,
&
!
9
,
9 &
>
&!
,9 , &
& 0
> &
9
" * &
!
!>
9 &
,
&&
& &
*
$
!
# &&
& &
5
!
&
9
"
& &
&
-
9
7 & 0
!
" &
"
&
9
74&
.$(/ &
,
&
"
,
&
&
3 -.
&
-
&/ 0
&
-
.
&
.& /(
- J 'K .$/
3
&
! 3 Q9
Q
"9
&
9 ! & Æ
),# )
&
*
&
0
!
! )
&
.!
/9
5*
0
!
!9
&!
&
>
&
0
&&
9 &
! &
9
&
,
& !
! 0
&
&&
9
,
"
.$/9
, &
,
&
& "
!
& .$/ ! &
" &4 ! "
&49
" 0
0
5
)
3
3
)
4 &
5*
0
!
!9
"
!
&
&
&
9
J
0
, 0
&
!
F &
!
"
!
$9 0
&
"
&
!
#-
#
./ ./ ./
H
$I %
! &
5*
0
&
F &
!
"
9 0
5
&
>
9
&
,
&
&
!9
0
,
4
&
$9
Æ
Æ K (9
0
*
&
"
&
&
& 5
9
$9 0
&
Æ K >
"
0
! &,! 9
& .
&
& 9 />
Æ 9
0
!
9
& 0
!
&
,
&
9 ! F & !
!
9
0
$9 &
&
9
! &
$9 0
Æ K (> "
9 &
> 0
&!5
9 " 4
9
&
9
!
! &
,
9 ! &
! &
&
!
&
L
!
5
! .&
$$(/
#
#
#
H
$I )
5*
0
&
F & !
)
3
3
)
&
9
!
!
!
9
! A
! #9 &
.
#/ J Æ
0
! !
&
! "
!
&
,
! # @
!
&
&
!
"
! 0
- . & !
/
)
&9
0
&
- ! Æ J - -
.
& Æ &,!/ 3
,
! #
9 , &
$$$
)
01 # L 0
& , &
5
!
& &
9 J - ! # J
,9
0
&
9 &
& "
---9 --9 -9 9 !
J $ )
!
9 &
!
J -
&
9
0
&
!
&,! 9 9 > &
9
9 &
, - 4&9 &
9
---9 --9 -9 ! ---9 --9 -9 9 & !
0
$- & !
& &
5
&9 &
.&
/
9 9 &,! @
& &,! &
. &
&
-/
! +.3
/9
!
&
!
3 !
!
9 3
& &
&9
+.3
/
& 9 F !
!
-
! 3
-
. 1
/
/ @ + !
F
!
-
.!
! / )
!9
4
0
+ !
#
- - -
-- -- --
-
-
-
H
$-I
5*
0
5
&
$9 0
I ./ --- ! > ./ --- ! -> ./ --- ! --
+ >
0
"
9 &
& F
0
. K /
5*
)
,
# %
, 0
Æ 0 &
& 0
- !
Æ
Æ +
& &
Æ !
-
. 1
Æ /
/ )
Æ
5*
"
)
&,! $ <
0
"
&
!
9 F &
&
<
&,! 9
& &
&
9
!
-
)
,
! 0
5
@
"
Æ !
&
&
.
/9 ! & "
&
Æ !> %
&
,
& Æ !9
! 9
& ! - . 4&9 Æ J (9
% J -/
0
9 & 9
9
& 9
"
! &
, Æ J
4
!
!
!
$
!
J -
&
J - I 9 01
&
.
/
(
.
!
J Æ
&
!
J - I Æ 9 01
&
Æ
2.
. / Æ /
J Æ I 9 01
Æ
2.
/
.
!
! J -
&
& 0
5
&
Æ
!
J +.%
/
& - 0 0 Æ9 - 0 Æ
2.
. K / Æ /
.
. K / Æ /
#
.
!
! J
&
& 0
5
Æ
&,!
9 0
!
J %
!
J -
2.
/
. 2.
/
$
!
J Æ
.
/ &
Æ
(
. .
/
&
4&!
"
0
9 &
&
4
!
&
&
&
$ &
! 0
--- ! - !
0
5
$- ;
#
0
0
&
&
,
0
* &
9
9 ! &
&
"
9 0
4
9
0
L 0
!
"
# +
"
4 "
5
9
!
%9
&
>
& ! >
9
! >
0
9
0
@
!
>
" - 2
.
! -
/
!
0
! "
,
#
!
!
> !
9 0
!
"
4
>
6
.&
/
" 5
!
5 !
5 .
!
" &
! 5 /
#(
H
$I 6
&
0
!
9 &
&
"
!
&
!
.
&
5*
!
/
'.,
# 1
",
!
&
)
0
& ",
F 0
7
0!
*
9
9 ! &
* *
"
,>
9
&
, &
& * ) "
&
9 * 0&
! 0
&9
", &
)
&
& , 0
&&
9
9 &
"
&9 & " &&
&
"
&
5*
! )
&
",
,
)
&,! $
&&
"
4/5/
!
&
" &49
&
,
! & &
!
.
!/
" H
&
" !
.
",,/9 3 Q
&9 0
!
"
"9 & 9 0
,9 & ",
&
! &
55&
0
! 4 ./ 0
" !
9 0
,
!
&
!
0
!
49 & ",
,
.$/
'.,
7
01!
!
# )
&
"
&
!
&
",, 6
&
&
",
$9
0
!
9
",
I
&
*9
0
9
&
&
",
9
0
!
'
3(# ) 0
" "
&
5*
!>
&9
&
!
$ 9 0
&
!
&
9
&
&>
#
H
$ I " "
&
5*
! 0
!
9 &
>
"
&
0
0&
!
* 0
&
9
0
9 !
5
0
9
"
I
!
9 &
& &
&
$ 9
&
&!
0
& ?
?
&9
!
!
4 0
0
&
9
0
,
&
. J
9
&
/>
&
&
0
&
> &
9
! 0
&
!
!
9
$$
! & 9
&
, &
,
&&
H
&
4
2
!
.
/9
& ! . &
/9
2
&
)
" &49 & ",
&
" &49
!
! &
,
&
"
# 0
&
" ",
9
; 7
&
0
!
&
L
&
! &
5
&
.-/
0
!
9 ./9 ! "
9
0
)
9
.-/
"
& 0
./ &
!
./ J . K /
>
! 0
.-/9
"
0
!
./ ! . /> 0
&
"
&
9
&
!
"
0
!
"
##
H
$$I 6
&
&
H
$(I " "
&
5*
!9 &
'.,
L
& &
> &
",,
$$
&
,
&
9 0
!
!9 &
9 0
!
9 & .
! &
0
/
",
&
&
,
0
,
&
$$
!
&
&
9 &
&
&
$(
&
,
!
&
5*
!>
&
&!
!9
5 !
&
&
5
! -
0
9 0
*
&
9 &
5
&
.-9-/> "
!
"
&
.
/ 0
.
/ .&
9
!
4&9 , . 9//>
9
! &59
!
!
&
&
$$>
&
*
I
&
!9 5
&
&
&
,
>
!
0
,
! &
! ! &9 &
&
#'
./ ./
H
$I ./
&
&
9
&
&
!
" &
5*
!> ./
&
!
&
!
-
0
./
&
&
*
! 7
"
&
)
0
$9
&
4 &
, >
&
,
&
&
&>
0
9 &
>
0
" &
9 &!
&
>
9 0
!
! &
!9
4
F ,
9
&
&
9
& &
9
"
F
! )
9
&
,
!
!
&
! -
0
9 0
$
!
.
/9 &
4
$(
%
!
&
&
&
*
!
! K 9
J
> &9
0
!
&
)
9
! " ! &
! &
9 0
&
&
&
'.,
#
$# &
,
&
>
! &
0
"
> 4&9
0
I
0
- ! " &
>
! 0
&
9 !
&
9
S .-/ !
S ./>
!
5
9 &,! &
F
.59 &
-/9
0
&
&
K 9 9
#
!
&
. /
.!9
&
&
&
/
"
",
&
0
5
0
$' 1
&9
&
&
9 &
F 0
& * 9
>
&
"!
& &!9 ",
0
5
&
5
!
0
"
0
I
%& ",
0
9
&
&
&
! *
9
#
0
$(
& 5
&
9 0
!
&
"
0&
* 0
& 9 9
9 > & -9 &
&
9 &5
> & 9 &
&
!
. K / 9
&
0 !
H
!
0
$
, "
&
!
$#9 &
5
.-/ !
&
!I
.-/9 9 !
"
.-/
0
+.
/ 6
4& "
&
,
0
$#99 0
F .-/9
& .-/9 &
&
$5
H&
!
! &
!
9
!
5*
!9
",
F 0
&
%!9 ! & ",
&
4
$(9
& ,
&&
"
0
: .
3(# )
I
*
> &9 ! ",,
* &
&
9
0
#
H
$#I ./
&
0
5
&
$ ./9
./
!
! &
! &
9
& &,!
H
$'I ",
&
9
& &
!
H
$I ",
0
5
&
$9
.&
"
&
/
'-
--
-
-
--
-
-
--
-
-
-- --
- -- - -
--- -- --- -- --- --
./ ./ ./
H
$I ./
&
> ./
!
&
&
0
--> ./
9
0
&
!
6
.-/
0
&
"
.-/ 0
./ .!
"
&
,
/ 6
4& &
,
0
$9 0
./ &
,
&
.---/9
./9
.--/
9 &
!9
0
!
.
!
0
9
! 0
&
9
"
0
5
>
! ! "
0
! /
&
&
0
- )
0
9
&9
4 ! &
!
"
5*
; L 0
&
0
-9 0
@ , & "&
0
&
4
"
,
>
4&9 &
.-/9 -- .0
/>
0
"
,>
, " * &
,
0
$ 9 ",
9
!
0
- ! -- "!
&
-9
9 !
0
->
, &
,
0
$>
.-/
,I 0
.-/9 "
,
>
.-/ !
.
/
-
.-/9 - 9
5*
! . "
!
!/ !
0
! K
)
9 " &
,
0
$ -
"
&
!
&
5
>
"
&
&
F 0
; &
&
9 0
5
"
9
&
&
! 0
& +
!
I 5&
9 &
9 " &4 .!
9
'
'.,
!
)
9 ",
,
! ",
>
&
0!
* &
9 &
* &
9
0
9
" 0
&
&9
!
* & !
0
! &
&
)
9
&
0! ",, * &
&
&
$9 &
0
&
9
0
!
9 &
I
.",
&
9
&
&
&
0
!
/
J - I
'
01
. 9
&/
2. 9
/
$
!
&
J
9 01
. 9
/
2. 9
&/
& 9
&
*
&
F
! .&
&
*
J -/ !
&!
,
*
&
F
! K >
9 &
, &
*
!
$ 4& &
"&
&
9
$
> 0
&
&
&
9
9
4 & 0
&
! &
&
" &49 &
4!
- J
.( K ' /
" &49
! *
" 0
5
9 4&
&
&
& !
&!
,
5
",
*
&
*
&
!
'.,
!
)
9 &
,
$
5 &
", 9 " ",
&
,
0
& .
/.( K ' /> &9 "
",
9
&
9
&
* &
&
> &
.
/.( K
' /
9 0
9
" *
9
,
0
&
",9
0
)
, &
& ! *
>
&
0! 0&
* 0
&>
&
", & 9
9 & ! 9
0
&
! & &
,
"
& &9
& ",
- J
( K K ' .$#/
( (
'.,
!
)
&
9
,
",
&
&
5
",
"!
&
, 0
$ 1
&
9 0
-
9
&
&
&>
&
'$
: ; ;9 :+9
9 ;9 :+9 *+9 *+9
< :< :< :+9 :+9 *+9 *+9
# 8 #8 #8 *+8 *+8 *+9 *+9
* " *" *" *+8 *+8 *+9 *+9
H
$ I ",
0
5
&
$9
& &
! .0
* *
&
&/
.
/
- J .
/( K '
'(
./ ./
H
$ I
! 0
&9 &
I ./ ' &
> ./ #
&
'
)
9 &
&
! &
&
9
"
&
$9 0
0
&
&
9
9 &
&9 !
&
K 9 &
1 &
9
* &
&
F
&
&
% &
* &
9 &
0
0
0
&
&
&
,
0
! 4& 0
$
.
&
/
.
-/ K
&
! "
!
$ J - I
!
J -
9 01
. 9
&/
!
&
0
. 9
/
.
!
9 01
2. 9
/
!
" -
. 9
&/
$
.9 01
"
'
2. 9
&/
" -
. 9
/
!
@
&
&
&
&
0
!
!
>
! &
>
&
9
&
$
9
&
&
& &
! &!
9 &
! 0
$ )
0
0
&9 &!
0
9
&
9 &
$
9 &
&!
, 0
&
&
!9
&
&!
, !
!
$ ! $
$$ !
& $$ 9
! >
! &
&
&9
&
9 +
&
& "
,
9
&
&! !
> * &
&4
- J
.( K ' /
&
&&
0
!
" 0
! &
"
5
! 1
9 9
&
0
&
!
& &
*
0
&
5
& &
&
9
( 9 ! & > !
9
,, &&
'
)
9 &
&
9 "
&
&
$$ &
,
&
", 9
&
,
*
&
> &
.&
4 / .
/.( K
' /
", 9
&
&
-
&
&
F >
*
9 &
.
/.( K ' /
)
,
9 0&
* 0
&> &
&
> 9 & ! 9
0
&
! & &
,
9
&
&
!
&
!
$$ -
0
%&
!
",
.$#/
'
'
# )
&
9 &
"
&
> 0
9 &
,
*
$ $ &
,
!
!
9
0
&
> 0
&
&9
&
.
/ * &
&
&
S ./9 0
'#
# '
(
$
-
H
$ $I ",
&
,
9 0
5
&
$9 &
&
9
& &
!
# '
(
$
-
H
$ (I ",
&
, &
&
9 & &
5
& Y0
0
&
?
- J .
/( K '
7 *
&
"& 9 0
5
9
9
?"?9
*
> &
!
5
&
>
0
,
''
*****
***"" **"*" **""* *"*"* *""** "*"** ""*** *"**" "***" "**"*
**""" *"*"" *"""* "*""* """** *""*" ""**" ""*"* "**"" "*"*"
"""""
H
$ I
&
&
&
&
9
&
&
9 0
9
&!
.!9 0
9
&!
!
!
9
! / H
$ ( &!
9
4 > !
9 *
&
!9 0
9 ! &
&
> 9 0
9 !
&
&
9
0
&
* %!9 &
#
& 4!
!
*9 0
& 9 &
> & &
9
&
!
&
&
,
&
9 !
?&
&? ."
&
/ 6
"
&
&
,
0
$ >
! >
&!
! &
9 "
9 &
. /
9 4 &
!
!
0
5
&
>
9 0
,
9 "
! 0
*
9 & 4!
0
0
*
&
- J .
/( K '
(
$
-
H
$ #I ",
&
, & "
&
$ # !
,
$ $
&
0
&
&
",
!9 & !
& &
,
! ! ",
9
&
&
0
&
9 "
5
&&
L
0
,
9
&
! &
#
&
* &
9
0
&
&
&
9
0
&
* 9 ! & &
9 !
!
&
,
0
$ '> 0
& 9 - 0
9
&
*
.
* 0
& &
/ &
*
&
&
> 0
,
&
0
&
! "
!I 0
&
0
5
>
9 &
&
'
.
K /
$ / -
( /
-
01
./ 9
&/9 ./ 9
/9 2.- 9
&/9 2.- 9
/
L
"
!I !
&
*
9 F
& &
9
&
.&
/> - ! -
,
0
&
* &
9 0
&
9
&9
&
>
0
9 0
/ ! / "
, *
9 0
&
9 &
&9
&
9 0
& 9
&
,
* &
&
*
&
0
&
! &
&
>
*
&!
0
&9
F 0
- ! -
!
$ ! (9 -
!
*
&
9 0
9 . K /
9 9 . K
/
9
- 9
0
9 .
/
9 9 . /
> 9 *
0
4&
9 &!
!
!
!9
&
!9 & 4!
9 0
" &49
-
J
.( K ' / J ( K . K /'
(
7
& &
0
5
"
>
&
0
& &
*
* &
& . &
&
&
& &
&/ ! * &
&9
&
!
*
9 !
&
> 9 0
& .-
0
/9
&
*
.
&!
0
& &
/ %&
! 4 !
# )
,
" 0
& &
,
9 *
&
5
& !
>
&
* 6
,
& &
9
&
*
&
& !
.
&
&
,
9
0
!/ %& &
",
. ! "
! "!
",
!
!/
9 &
* 0
& ! "!
&
&
&
&9 ! !
9
0
&
9 &
9 & &
&
0
*
!!
"
!
# L
9 &
9 ,
& 0
5 &
! &
"
&
5
&
&
!
*9
&
9
-
" 0
&
!
&!
* )
5
!
&
.&
/ 6
4& "
! 9 0
&
&9
&
> 4& 9 0
*
9 & &
! 0
!
,
&
I
&
0! 0&
* 0
&9 &
9
&
9
&
5>
& 9
&
&9
&
>
&
&
, & 9
!
5 &
&
>
9
9
& &
&
* 0
&
! 9
&9 &
,
"9
&
"
0
& & ! 4
9 &!
0
,
0
4
&9 9 4&9 &
!
9 0
9 &
&
,
! 74 !
9
&
,
0
& " &&
*
.
& 9
!
?
?
& 4& &
9 &
,
! !
&
!/9
& &
&&
9 0
5
0
*
9
&
&
,, &&
.
5
,9
!
/
9 0
,
! &
&9 &
,
9 4&9 ",
& &
, ./ .
.
/9 &&
/
4
1
+ - -
- . ' -
-
-
+
5
(
- 8= (
2
+
5
$
- )! - +
" 8 <
$ 9
+ /,
*
# " 7
% & (
&
*
# " /,
%
& ,& '
*
# "
88"
/, (
) , 8"
-
-
,
/ -
- . 4
$,
-
,
+
5
+ -
-
- . (
-
,
- 8""
-
,
' -
88
-
,
- 8"8
4
%*&
$ 1
, %*& (
)
$
5
-
8: (
4
5 -
$ (
-
$ /,
4+ -
,
-
+
%
&
%
&
5> - ,
,
-
,
+
5 %*& (
+ -
+
(
+ -
"+
( 4 + /, (
-
(
- -
+
( 4 / ( 4
"+
(
-
- /
&
! H &4 A" &4
",
( K . K /'
'
",
.
/
' .
/
'
! .
/
' .
/
'
&9
.
K / ' .
K / '
&9 &
'
'
H
$ I ",
0
5
&
9
9 0
$
&
- J ( K &* K .3/'
)
&
!9
! "
.$/9
"
=
0
&&
'.,
; 3 # 0
0
&
&
"
9 0
",
& &!
",
&
9 0
5&
&
&
!9 &
"
,
&
> 0
9
&
&
"
.
/ 9 !9
&
5
"
5
& 9
&
!
9 &
9
9 0
& 9
!
5*
"
9 &
9 !
!
!9 & 0
$ &
&
J &
5
&
&
> 0
9
&
F
! &
&> 0
&
! 5
0
*!! "! &
> 0
& 9 - 9
!
&
"I
J 9 0
&/
!
-
!
J -
2. 9
9 /
$ J I I - J
. 9
&9 K /
(
H
&
&
!
* ! 0
> 5
, 0
!
>
9 &
J $ 9 $
&
.
J 9 &
J -/ %& &
- J
.( K
* K ' / J .
/( K .
/* K .
/'
&
& &
",
&
0
"
=
9
9 &
*
9 &
.
/9
&
*
9
. / 0
&&
%& 0
F 0
!>
* &&
&
"& &
& 5
!
*
9 0
&
" . 0
0
$ 9
&
?
? *9
&
&
9 ! 0
"9
/
'.,
01
,
#
&
9 &
"
&
9 4& & F
!
$> &
&
"
, #9
!
$ > 0
9 & .&
&
-/9
!
$ 9 0
4
$ &
"
@
&!
& 0
&
"
Q & &
&9
Q K &
"
9 & .Q K / & &
& )
5*
! &9
9
! & 0
&
.
,
* / 4&9 &
9
&
0
! 0
$ 0&
0
?&
? 9
0
&
> 0
&
&
"
,
&
F 0
&
&
!
> 0
9 &
&
&
&9 &
&
0
! 9
&
0&
! 0
&
>
0
&
!
",
& 0
&
9 & 0
$ 1
&9
&
"
!
>
&
!
#
",
& &
0
!
9
0
!
0
"
=
,, &&
9
& &
7
!
& "
> 0
5
0
&
&
&
9
5!
* &
9
! * 9
"
* &
%!9
!
0
&
&
!
!9 !&
9 ,
0
&
&
*
! @ &
"
)
,
!
& &
* &!
H
$ I ",
0
5
%
&
"
* &
&
& . 9 &
!
0
!
/>
&
,,
0
>
*
> " 9
, L
!
!
&
& 9
& !9
* 0
&
& &
!
,
" 0
!> &
0
&
9
&
&
> !9 &
*
9
&
*
! 0
9 &
%&
4!
$
-
J
.( K .-
/* K ' / J .
/( K * K .
/'
* . / &
5 * 0
&
$$ (
! &
"&
&
&
9 !
. / &
!
'
& !
' (
&
*
&
9
9 *
&
*
!9
& &
5
& )
&
&
&
! &
4&, *9
!
!9
9
&
&
*> &
*
.
/
5
&
5 & *
9 0
!
$$ 0
&
& &
5
&
!
!
&
!
! 0
& &, "
I
!
!> &
9 &
!
!
&
9 !&
*
! .!
9
&
5
" &
/> &
*9
! 0
&!
, !9 & ,
! 9 0
&
0
!
&,
> 0
&
9 &
&
& 4
&
9 &
&
9 *
> 0
, * &
& &
, ! &
!
!9
!
!
& > 0
9 0
=
9
!
&
,
& &
&
&
* !9 &9
> 9 &
9
!
!
"
!
*
9
, &
'-#
"
5
9 5 J .
/9 !
.
&
,
&
/ ! !
.
&
,
!/ H
!
*
I
,9 &
9
3 J .%
/ 9
!
! J .
6/ 74
& "
!
*
9
I
*
I ,
!
&
&
*> 0
&
!
*
&
*
&
*
" 9
0
@!
*
&
0
&
9 ! 0
!
9 0
!9 "
!
*
, &
9
,
!>
*
, &
&
&
"
! &
*
9
& &5
=
9 ! & 0
& "
!
&
&
" 0
!
$$
L &
& &
!
9 &
"
@ &
*
! )
9 0
&
I &
"
!
*
9 &
" 0
& &
9 &
,
5*
&
! ;
'(
"
&I
&
&
&
* &
&
!
5
0
&
"
!
,
9
"
,,
. 0
$/9
9
"
,, &&
'(
# )
& &
$9
&
&
& &
!
9
5
&
&
*
.
! &,!
&
&
,
9
&
/I
.
*
&
> &
!
379 &
*
&
3/
&!
,
* &
9 &
3
!
J .
/
&
, *
$
.
!
J ! J
!
3 J
&
*
37
&
*
(
.
!
J
!
3 J
&
*
37
*
*
.
!
J
!
3 J
&
*
37
&
&
0
!
& &
3>
6
!
!
37
&,!
!
&,!
3> 4&9 0
$ 3 J 9
0
$
4
37 *
4 0
9
!
& 9 0
, 0
!
!
& !
9
$-
0
!> 0
"
"
!
,
9 0
# #
H
$$I &
&
"
!
*
0
9 &
"
!
*
!
!
*> 0
"
0
&
&
*
'(
# ) &
9 0
9 !
&
*
& & &
& 6
&
* &
0
"
> 9 37 &,!
# .
!/ 4&9
---
&!
,
*
&
--9
"
&
9 0
&
&
H&
!
,
0
& !
*
0
!
! 4&9 ---
-9 0
&
-9 --9
0
& * ---9 &
&
---9 --9 -9 & 0
&
--- &
>
5*
0
--- ! -
"
0
*
&
&
!
* & 39
0 4& & &
F 0
5
9
0
"
9 & 0
"
9
4
> " ,9 37 &,!
#9 &
& &
./ 3 4&9 --- &
!
* &
-- &
9 0
&
$> 3 J (9
37 -
0
5*
9
* &
!
-
-
5 -
5
$
, "
%&
-
+
5
(
***
""* (
-
5 -
+
&
&
9 !
,
! 0
&
&
>
4 *
I
& 0
&
! &
&
L
*9
5 0
,
"
L 0
& &
9 &
9 &
" & 4
0
&
,9
"
&
9
, &
!
9 &
!
!
%
&
,
0
9 ,
49
, &
0
,
! #"
" # )
&
&
&
"
!
5
&
& 4! L
& - .
/9
&
&
! &!
"
>
&
9
&
,
0
5
"
9 4& .,
/9
>
9 ! &
9
&
L
!
!
9
&
&
& %
& 4!
&
& 4! & "
4&
> 0
,
& 4!
0
&
0
&
! 0
&
)
&
9 &
&
&
",9 ! &
! . &
&
"
5
0
!
/>
9 & 4 !
&
!9
,
&
.!&
*9
!
/ )
9 0
9
&
4!
F&9
)
&
!
&
,
0
&
&
!
4&
&
4! 4 &
&
!
9 0
9
&
* &
! &9 &
4! &
!
9
&!
*
&
>
&
&
* !
&!
9 &
4
&
& 4! 9 !
! &
9
0
& !
,
9 &
! !
$
! & 4
9
&
,
0
& ! & "
!
!
9
9 &
0
5
4
!
&
.0
,
/
* % &
& 4! " 0
&
5
0
F 0
5
&
! &
,
&
&
&
9
&
&
! 0
&
!
!
# , 0
&
& "
"I &
&
&
9 &
&
9
! .4 &
&
/ ;
I !
!
, 0
,
&
,,
&
; 7 ! &
&
" ;
&
< 0
&
"
!9
"
&
<
) &
9
&
"
*9
&
! . &9
&
&
!/9
0
! "
!
>
!
,
&
9 &
&
"
!
, &
)
&
&
"
!
.&5&9
!
, /
&
5 9
&
!
.
/ J - . /- .
/
0
- . / & 4!
&
!
, &
& 9
- .
/ & 4!
&
&
9
9 !
> 0
9 &
9
! .
, />
9 &
9
!
9
" &!
4
9
"I
.
/
&
& !
9
4& 0
, 0
&
" !
"&
! &
&
9 &
,
5 ! & &
&
!>
, .
/ "
9 &
&9 & &
0
&
> 4& &!
,
%-
# )
" 0
&
&
5
%9
"I
.
/ - . /
8 .
/ J J .(/
- .
/
(
7
!
.&
&/ 0
>
! &
&
9
!
!
!
L &
&
!
'9
9 &
9
8.
/ J
9 &
9 &
>
, 4&
&
L
.
/
&
9 .
/ J
- .
/
- .
/
8 .
/ J
- .
/
&
&
&
,
9 "
,
&
9
.
/9 8.
/ 9
&
9
&
!
'-
-
#
!
* &
&
!
.
>
,
!
8/
"
!
,
! )
,
0
&
9 &
!
.
&
! &
& 9 0
"
!
&
/I
9
&
!
!
<
&
!
& &
,9
&
! &
" 0
&
"!
&
!
-. &
> , 0
&
,
"
&
9 " 0
!
&
! 4>
&
9
& 4!
!
>
&
,
"!
,
!9
!
!
*> &
&
&
! 4
0
,
!9 &
&
&
74&
& ,
749 0
&9
&
! &
&
"=
<, 0
"
!
&
5
9
0
& & &
%
2
3#
&
& "
!
9 0
4&
&>
9 &
9
& !
! "
& )
,
0
"
5
)
&
! 0
&
! !
9 &
& 49
@ - & 4!
0
",
5
! ! "
& &
4&
- <& 4!
&
&
I
- J - K - K -
- & &
&
!
.0
,
0
&
9
- -
- &
!< 4! &
&
/9 - J - - &
&
!9
!I J - -
"&9
&
! &
,
9 &
.&
*
/
, &
!&
,
9 ! &
! & &
&
!& &
!
&
! "> 0
,9 ,
5 0
&
0
9 "=
9
I J .- /-
! (
<
#
, &!
&
0
"
!
&
9 "
&, &
> &
&
& 0&
! 0
&
!I
&
!
9 9
9
! &
" &
9
"
&
9
9
& 4!
- .
/ - K - J 9 K 9
- J 9 ! - J 9
9
&
!
&
&
" &
&
5
, 0
&
%& 4!
&
(
#
4&
9 K 9 9
.
/ J 0K
.( /
9 K 9
9
0
9 ! !
(
!
9
>
"
9 &
!
9
'#
&
& &
&
9 9
5
&
&
9
0
& 0
&
&
&
9 &
" 9 9
&
9 9
> 4&9 9 J . /9
9 J . /> 9
!
9
4
!
,
.( /
!
9
&
49
&
!
, 0
"
!
&
(> !
!
!9
4
0
, J 9 &
"
! &9
J 9 9
&
&
*
&
"
! &
.0
!
'
0
.($/9 &
/ ! &
&
!
& .($/ .!
&
T/
# & *
;
&
&
9 - .
/ 0 - .
/
9
&
&
!
> 4
!
,
! !9
9 .0
.( /9
9 0 -9 &9 ! 9 K 9
" -/ )
5
"
& 4!9
"
"
&
!> 0
&
&9
5
4
"
!>
& 4!
F& &
4
.! ! " ! & &
"/
&
& &
I
&
!
./9 0
&
9
!> &
! 4
.&
&
& ! /9
& )
0
9
> & 4!
&
F&9 !9 4&9
"
!
.&
!
!
/> &
&
9 &
9 &
5
F 0
>
9
4
!9 4
> 4! &
9 &
!
9
> 9
0
9 ! "
0
&!
!
&
9
&
&
"
.
&/ 0
&
& !
4
.0
4 ,
/
! !
)
!
#
&
&
,
5
9 0
! &
&
!
4! > &
&
9
&
!
& 4
&
9 0
0
& !
"
! 4!
> 9 &
! 4
&
, .&
/9
5
&
>
9
! 0
&
!
&
!
&
L "
! 0
&4
!
!9 5
"
5
.0
5
!
! &
&
!9 & "5 * 0
&
&
/
0
&4 ! & 4!
9 0
&
&9
! &
&
!
9
!
.
/ "
0
H
&
&
!
,
0
&
9
&
9 49
4
L
&4 &
9
&
!
,
9
&
!
*
! ."
* &/>
!
Z. . //9
. / "
! &> Z. /9 4&9 & 0
"
$ > &
9 !
! 5
&4
"
!
, . . //>
9
&4 &
L " 0
5
9
! ./ 4&9
! . / ! .
/ &
! 4&
9
"
F
!
&
&4 !> 9 ! . / ! . K /
9
!
!,
5 9 &
&
0
&
;
-# H
77: . / J
. /
H &
&
&
! 4 0
&
- . /
6
&
, !
4 0
& . /
&
. / &
!
I
/ . / J
77: . /9 !
/
9 . / J
. / . / .- . //
9
& & 4!
!
!
! .
4
&
! 0
&
9 &
&
9 "!
!/ & 9
. /
0
!
&
&!9
&
&
&
&
. &
> &
9
"
&
/
6
&
%
! /
! (
0
! I
M/
9 . / J - . /
77: . /
6
0
&
9
0
&9 &
!
&
! &
9
F 0
5
"
!
01
.
!
#
!
5
"
&
.! &
!/
&
I &
4! .9
9
&
!9 &4/ @
9 , " ! 0
!
> &
&
&
,
!
!9
9
9
!
! > ,
&
!
" )
*
0
"
!9 &
&
&
9
&
0
&I
&
0
2
&
!
4
0
& 4 2
9 &
! 2
& 4 0
&
>
*
0
&
" &
! 2
&
.
/ 4! 2
9
&
&
4
2
6
9 0
&
,
9 &
&
0
"
45
&9 0
& 5
>
9
9
&
,
&
! 2
L 4&
9 !9 &
9
!
5
& 9 &
&
&
,
.%
&
, 4 0
5
!
&
9 *
&
! 4&
L " !
9
&
9
9 4&
/
& "! &9 &
&
!I
0
2
9 &
! 9
0
&
9 &
!
,
4 0
&
9 0
9 0
2
"
&
0
!
&
&
!
&
&
F
!
! > &
9 2
" 0
&
&
!
> &
9
2
&
&
&
&
!
"
9
0
&
!
0
&
0
&
,> 0
9
,
"
!
!9
9
* %
0
!
!
0
&
&
!
9
5
, 4 &
! "
!
&
><# )
9 R1 .R 1
&
/ "
! F4 0
2
> "
,
, <
&
, "
&
!
9 4& 0
!
5
5
9
,
<" & 0
> 2
D-E &
&
, &
$ R1
!
&
!
5
9
+ J K '+ 9
& . /
F&9 ! &
. /> 9
$
0
9 0
&
! .
"
0
!
/ H
9 0
2
9 &
!
9 &
"& &
9 "
&
0
! & ! "
!
& #9
&
,
! !
*
# @!
"
0
&
!
2
6
!
&
"
&
!
9 , 0
% .
/
9
.
/
&
, 2
9
"
&
!9 0
0
&
!
!
> 45
&9 &
,9
! 9 0
9
> &
&
9
"
,, &
!
>
9
"& !
& 0
&!
*
9 0
'-#
2 - &
0
& &
!
2
&
,9 - & 4
> 0
9 -
!& 4! 2
0 "
,,
9
0
4 2
&
&
! 9 &
!
+!
&
!
> 9 &
2
-
-
- - 9
&
!
- " &
- .! &9
9 ! 2
/> 9
4! 2 - & 0
&
&
4! 2 -
" &
! 2
9
0
2 !9 &9
&
,
4! >
.
/
&
,
&
!> - - 9
4 - -
"
! .3 5
B 3
&/> 4
!
0
!
- - 9
6
3
> 4 ! "
! &
6
3
?
?9 2
"
&
> " 4
9
& ! ! !
2
"
,
!
0
L &
,
0
! &
3 !9 0
&
9
"
&
!> &
&9 &
&
&
4!
2
.&
!
&
4!/
!
&
&
4! !
&
!
&
)
. !
# *
" &
!
&
!
0
2
&
!
5
&
&
&
!
)
&
&
&
!
! 0
2
9
F
!
0
,
9
&
0
&
4
0
!
"
5
9 2
&
4
!9
0
!
)
!
&
.
/
9 &
!
0
&
!
2
!
" 9 0
,9
1!
"
"
! &
&
&
&
4!
2
& !
4
&
! . - - 9
.- / " .- //> 2
& !
& 4 0
&
9
&
&
!
&
4! !
"
& 4! 2
9
&
&
&9
! &
!
"
0
!
" &
!
&
!
0
2
9 !
9 "
2
9
" &
! 0
&
&
"
!
&
9 J -
9
%
6 "
!
& !
2
9
0
! &
9
!
! .- / J
2 - 4 & &
"
! &
&
!
,
& 4!9
!
0
&
!9
9
&
&
!
"
-
# )
& "
I
9 0
"
!
0
0
&
4!
9 0
"
!
! &
4
9
5 2
&
4!
&
@ & &
,9
0
& 4!9 & &
4
2
-$
)
F49
0
!
&
>
9
0
, "
&
.0
, 4! 0
,
&
5
/ ) &
9 &
& &
9
&
"
! >
9
&
&
,
&
* "! &
9
&
&
!I 0
&
, &
5
! 0
9 0
& 0
! "
>
4& & &
0
!
0
> &
9
4
!
!
! %!9
! 0
&
0
5
2
&
> 0
,9 &
&
&
&
!
" 4 &
9
"
&
> "9 !
!
&
9
> 0
&9 0
*
,
9
& 4! 2
& &
4
$
-
!
!
#
5
9 &
&
&
&
,
2
> &
2
9 0
9 &
9
!
&
2
&
.
&
&
!/
)
"
9 &
& >
& @)5&
&
&
.
, 0
& &
/ 74
!
&
& <
& "
! &
9
&
4!
&
> & !
, "
&
!
9
&
!
@ &
& 4! 2
&
&
&
9 "
! &
0
&9 0
9
"
"9
& 9 0
&
-9 0
&
)
& !
"!9 4&9
!I
&
0
& 2 !
!
"
>
!
&
!9
& 0
,>
2 !
4
& &9 &
!
& 4!
@ &
&
9 &
,
4&
&
, &
% #
" &
! 2
( 9 0
!& 2
4! .
9 &
&/>
2 '
-9 2
(9 9 #
9
2
9 9 $
L 0
&
2
" &
&
,
9
&
0
2
9
9 $9 0
2
(9 9 #>
0
&
1 $(#'
-(
$
( #
'
H
( I 6
4&
" &
!
$
$ ( $
( # ( #
# ' '
'
&
(9 0
&
F
2
&
&
4 9
&
4!> &
! "I 0
&
& 4 2
!
> 0
9 $9
(
9 &
$ 0
" &
! > (
4 0
&
9 0&
> 0
& &
2 #9
! '9
#> 2 '
4 0
&
> &
4! 0
$ (#'
$(#'9
&
( ! (9 & 4!
(9
9 "9 &
&
"
"
&!
&9 &
.
/
9 &
)
&
4!
&
4 & &
(9
&
,
! &
&
3
($
&
,
"
&
&
&
> &
&
,
& .
9 0
/> ,
!
&
,
&
0
&
&9
9 &
!
) -!
?
-
#
&
! "
" 0
!
&
" &
,
* )
4 &!
9
!
&
9
!
&
&
&
,
4!
"
!
!
-
$ ( # ' '
$ ( #
- $ ( - $ (
H
($I
3
&
&
(
&
&
& &>
4!
" &
&
9
& &9 0
& &
& " &
$
-!
@>A#
0
!
&
&
&
5
.
&
!
0
2
5
/
, 0
2
&
&
&
!
&
4!
&
& 4!
&
0
&
; .
,
9
&
!
&
, /
+&
<
!
% <
& 4!
5
&
4
2
9
&
> "
&
9
2
& &
& &
9 4!
4
>
& .
&
,
"
&
/ 0
4!
&
&
9 !
,
+
&!
&
,
9 &
&
&
4! &
5
&
9
J 4
&
& 4! &
K ! &
K 9
J
) &
9 0
,
9
"
& 4! &
&
K
> !
9 0
&
49 0
5
& " "
&
. " &
49 "
*
&
/9
0
&!
&
L
&
& R
0
!
%.
,!
#
9 5
9
&
&
!
&
,
!
0
! " 0
&
, &
.
,,
!/ ! 0
&
5
.
5 0
/
9
,, &
<0
!
< "
-#
H
((I 7
&
0
&
,
I ./
> ./ &
> ./ &
&
9 &! 0
&
&
&! !
&
,
&
,
,
&
,
0
&
&
! 0
&
, &
0
!
.! 0
&
/9 " 0
&
&!
&! 0
! &
, &
H
>
&
&
J
> &
& &
&
+&
,
&
.
& 0
!
/ !
0
((I
0
&
&
9
9
9 &
&
. K /
.
0
&
-/
0
&
0 &
!
K 9
J -
> 9 " &9
&
J .
&I
0&
! &
&
! *
5
&
*
!,! 0
/
0
&
>
!
0&
0
9
&
,
5
& &
& " &
)
5
,
0
,
!
.
/
)
9
&
,9
&
,
"
5
&
! &
L &
&
0
&
#
) &
9 "
&
,
& 3
B>
: ./
3
B
&
,
&
.9 ! /9
9 "I
&
!
&
9
&
, &
6
*
9 0
9
0
&
, ! &
-'
&
.&
/> 9
&
&
0
! 0
9 &
&
&
&
&
,
"
3
B .!9
9 ! &
/
"
&
,
9
.
/
&
,
0
0
&
9
&
! ./
'
# )
&
9 4&9
&
,
&
> 0
&
!
5
&
9
"
&
5
./9 &
&
9 &
!
9 ,
.
9 "!
/
9
"
!
> 9
#
&
9
&
, &
./> 0
&
9
! 4! 9
; - I
& > &9 &
&
,
9 ; J
.
./ J / @ "
"
0
9 &
0
1 &
9
0
9
> "9
,
9 &
4
! 0
&
9
&
, "
? ?
$
-
# % 0
9 "
&
&
! ; !
2 -
&
2 - 9 &
4 &
!
! 0
2
> &
"
!
9 0
2
9
2
- &
&
&
9
- & &
9
9 4!
9
! 0
&
>
!
,
9 !
9 &
! "
"
2
9
0
"
,
&
&
!
! & @!
0
&
& &
!
&
,
! 4 0
&
>
"
&
9
!
!
&
4!
! &
0
5
0
>
9 0
&!
9 &
"
&
&
&
!
,>
&
"
9
! &
"
9 9 0
9
F ,
,> "9
,
9 0
),#
&
&
I &
2
0
&
9 &
!
0
9
!
-
!
9
!
0
&
7 &
&
, 0
5
4& >
9
. /
& &
9 &
,
&
"
!
! &
&
5$ &
9 & ,
&
! &
.! &
!
, /9
&
4&
!9 0
5
> &
* 0
,
&
!
&
,
&
&9
&
"
>
,
0
! &
&
,
&
9
! &
!
&
%
&
0
&
9 &
0
&> 0
&9 !
"! "
,
!
)
&
&
9 9 9
9
7
, 0
&
&
!
0
"
,
2
@ J )
&
&
5
9 &
&
2
"
5
&
! L ,
!
.
!/I
J K
&
0
! , &
J K .
&
&
&
5 5
/
2
#
5 &
- 9 - 0 9
&
! &
! J K > 9 0
9
&
!9
! ,
0
!
! 9 0
"9 "!
&
!>
0
5
9 - - 9
" &
! <
"
5
2 &4 &
. / &
!9
!
$
#
&
I ",
4
&
0
&
9
K 9
&
! &
> !
"
9 &
&
>
&
!
0
*
!!9 &4
-
- - - - - -
- -
- - - -
-
-
-
H
(I 3
" &
!
&
#
.&
&
9 &
&9 &
/ " &9 &
J
9 , 0
2 - &
!
K
&
-
J
+! &
!
& - - ! - - 9
" &
! "
. "
, 0
T/
9
0
! >
"
&
,
0
( 1 !
" !
9 & &
&4 . /9
"
. / &
> "9 ! &4 &
. /9
"
4 K
( K K J
9 4 ! &
! &
&
9
&9
"
!
0
.
9 "9
4
/9
&
4
0&
!
0
2
&
!
9
"
&
!
>
!9
!
&
!
$
)
,
J # H
&
9 &
2
"
I 0
& 9 &
4 2 - )
7+78
&
! &
)+9
.
9 & 7+78 )+9
J 9 /
J I
!
0
- . K
4 K /
-
- - - - - - - -
- -
- - - - -
-
- - - - - - - -
- - - -
- -
!
&
& 2 - 9 0
!
9 " 0
!
9 0
9
"
&
! 0
&
,
&
9 &
0
&
> "9 &
&
!9 &
!
& 0
! &
9 & 0
!
, (
9 &
! &
0
&
!
I &
* 9 & &
!9 &
"
9
&
! )
9
9 0
5
!9
!
&
> 0
9
4&9 0
! &9 ! &
!
!
0
(9 &
&
&
,, &
!>
9 0
&
&
0
!
! &9
&
,,
!
!
. /J
> 8. / J
. /
9 ! & 4!
"
9 &
"
> 0
9 8. / ! >
, &
! 5
*
! &
>
, &
9 0
& *
&
5
"
&
!
)
,
! # 9
&
9
! > &
2
; 4&9
&
J (9 & &
& R
&
" &
!
( .
J #/9
&
0
(
9
&> ! & 4! 0
! &
( 9
& ! &
& R
> !
&
9 !
I
&
, (
9 &
"! &
,
J 9 0
"
9
.
9 & 7+78 )+9
! 9 /
, .
!/ $
&,
(9 &
$ 9 J - I
9
&
&
&
!
&
,
.! 9
&
,
9 & &
5
/>
,
F 0
$ &
!
9 !
&
!> &
&
(
&
9
J - I
&4
( - .
/ J
K
9
!
8.
/ J
K
.
K
/
& !9 0
9 &
&
,9 &
%
9 0
&!
&
!
)
&
!
&
L
, 0
J
J 9 &
0
0
9 , .
&>
&
" ,
9
J
> , J
0
"
9
& &
/
)
&
0
4 2 - > 0
,
"
!
(9
0
&
&
.&
"
! &9 , &
($/ L 0
"
9 0
,
&
0 & !
.&
&
!
/I
J I I -
0
! K
9 "
(9
"
, " &
, > " 0
K 9 K 9 > !
9 &
& &
&
",
.0
, &
!/ !
. &
!/ &
&
>
!
!
&
-9
!
5
&
0
)9
!
"&
&
! 0
&
9 &
." !
9 0
&
"!
/ 9
"
I
.
9 & &
9
J >
> , & 0
! F 0
&
/
J I I -
!
0
2.$ 9 /9 K $
0
.9 /
.
!
&
!
&
5
&
9
.-/>
" &
, 0
&
! &
&
S ./
9
%& 4!
($
- .
/ J .
/ K .
/.( K ' /
&
&
9
&
!
!
9
&
0
9 5
, 9 &
,,
($ %&
- .
/ J .
/ K .
/. K ( K ' /
! 8.
/ "" "#$ 9 &
*
,
# 0
"
! &!
!9 9
&
!
&
9
($
0
$ $9
! &
&
9
& &
! 9
5
9 &
&
5
& &
0
5
&
9
! 9 0
&
! &
&!
> & 0
4 "
!
=
9
&
, &
&
($
0
&
! & &
9 " 0
> 0
"
!
&
!
9 ! &
! & & &
& !
&
&
!9
9
I !
!
&
9 ! &
&
!9
!
!9
&
($9 . , &
($ &
!/ 9
&
!
!
$
!
"
)
! & 9 &
H
9
9
,
" 0
&
. & 0
/
9 9
",
"
, &
0
& @
! &
)
&
0
J 9 &
!
0
&
!
9 "
&
&
",
&
$ 9 0
&
,
",
9
& &
",
"I & &
0
5
0!
9 ", !
9 & !
9
0
$
&
,
! !
&
!
!
& )
4&
9
"
&
>
0
&
&9
. /
9 &
-9 !
,
> &9 9 &
9
! ,
9 > 0
9 9 &
9 !
9
!
0
,
J - I
01
2.$ 9 /9 .9 /
K$
&
! "
! &
&
%& 4!
&
9 * "
7
!
&
9
&
!
> 4&9 0
&
&9 !
,
> 9
0
&9 &
", !
* &
&
!
! . ",
/> 0
&9
" &
"
> &
!
($
!9 "
9
&
9
0
& "
)
#
9
& "
5 0
&
&
.
"
/9 &
0
&
! &
>
4&9 &
&
&
-9 &
&
9 >
& 9 &
&
. K / > !9
& 9 - 9 &
&
. K
(
!
,-
,
&
9
5
&
! J 9 J -
@ &
4
.&
4 / &
"& &
!
"
0
&
!9
9
! J
K &
&
!> 0
9 & , &
9
!
$
01
!
# 0
0
,
(> 9 &
&
!9 &
>
& 9 ( &
&
> ! !9
0
&!
&
&
0
&
,9 & ! &
&I
& 9
,
)
9
&!
&
"
!
(>
" 0
F
! 0
>
0
&
,9
0
!
&9 " &
9
&
5
&
>
* &
9
"
&
! &,! 0
"
. -/
4& 0
(#9
&
"
&
!9 ! "
!
"
9
!
0
9 0
& 0
-
.
. &
4
9 & +78 )+9
J 9
/
J - I
!
K
& 9 ! &
9 ! > &
&
& 7+78 )+9
0
& ."
!
0
&9 &
&
&
!/
9
! &
+78 )+9 "
!
!
&
&
&
,, 0
!
&4 &
9
0 "
& .
9 !/
- $ ( # '
-
-55 5$$5((55# #5'
- -5 -5 -5$ 5( 5 $5# (5'
- -5 -5 -5$ -5( -5 -5# -5'
H
(#I &
4
"
( .
0
/>
&
&
!
9
!
&
,
&
! .
5/> & 0
*>
!
&
! . & &
!
&
,
" &
!/
,
9 &
&
& R
(
, &
"
>
9 & . /
!
9 &
!
9
!& &
&
)
!9 & &
"I
&
,
??9
.K/
9 0
5
$ > &
&
(> &9
&
,
!
9
$ J .
&
/
<
39# L &
,
&
&
!
&>
&
&
7+78
)+
&
>
&
&
4
*9 &,
9 &9
5
"
!
"
I
&
4
&
< 9 *
* . &
&
/> &
" 0
9
! J K . &
/>
J $ J
- &
(#9 "
!
!
&4 &
('
- . / J 9 0
9
& & &
.
&
! - . / J - . / K / )
&
,
&
&
!
9
"
L
6
!
&
!
9
.6 /
. &
4
0
&
9 & 7+78 )+9 &
9
J
9 /
J I
!
0
6 6 K 6
J I I
!
0
6
6 9 6 6 K 6
& &
9 6
!
> 0
9 0
!
9 &
4
!
$ ! $
('>
&
&
&
9
&
! K 9 0
! 0
$ K 9 ! 0
$
&9
6 J -
5
!9 !
&
>
K ( K K J !
&
. /
,
9 & !
(#9 &
!
&
5 0
(> &4 &
K
7
!
& G 9 &
. / . , &
($ 9
5
!
( /9
. /
'
@ &
, J
9 & &
>
9 &
(#
01
!
# &
0
! &
(>
&
, &
9
9 & 9
&
>
& 9 &
> 0
J -9
! !
&,!
.
/
"
!9
! >
,
& 0
"
,,
&
,
& 3
B9 0
&
: ./9
&
. , &
5
($-/
! & &
0
&
: ./ ! : . /
>
! &
"
@
>
& &
6
!
9 0
&
9 ! ,,
! .
"
!
*
"
&
/ ,, &
9
" " 0
0
>
4& &
,
0
('> 0
&
9
&
!9
0
&! . &!
9 &
/>
&
,
&
!>
&
!
,
>
0
&
&
! 9 &
>
,
5
9
&
,
&9
"
&
0
9 @ 0
&
"& 9 0
9
&
,
0
, .!
& 3
B/
&
9
! & &
.
/.( K ' /9
> &
& .
/ )
&
9 4 "
!
*
> &
&
!
.
T/
-
!
#
& &
(' .1
5H
/
"
& 9 &
,
&9
&
" 0
! &
!
&
! &
0
* !I
"
.
/ ! &
> - $ 9 -
&
4
9 0
&
9 &
5
&
.$ !
/>
&
&
"
&
&
>
,, 0
((9
$ &
> &
&
5
"
9 &
4
*
>
&
&
&
4
9 $ &
C
&I &
9 J K >
0
&
"
9
&
4
0
&
&
9 "
(
'
# #5'
$5(
5#
(5
5#
$5(
(5 #5'
$ 5$ 5 5 5$
- - -5 - -5
$5#
(5' 5
5( 5(
$5#
5
(5'
-5(
-5#
-5
-5'
-5 -5$ -5 -5$ -5 -5$
- -5 - -5 - -5
H
('I &
(9 & &
9
&
,
!
& 3
B !
&
& &
&
&
!
& &
! J # K 4 9
!
# J ! 4 J &
"
!
&
"
!9 &4
&
!
!
# &
,
9 ! 0
0
!
9 0
! &
!
5
,,9
J # K 4 J # # K # 4 K 4 # K 4
# J # # > 4 J # 4 K 4 .((/
9 0
! 9
!
"
!
!
!
,
!
!9 0
.((/9
&
! &
9 - 0 9 !
!
9
!
&
,
0
9 0
& 0
*!
5
!
> 0
& 9
!
>
!
9 & &
0
&,! "
J 9 - 0 9 !
!>
!
! "
J # K 4 9
!
# J # #
> 4 J # 4
K 4
.(/
.
9 & 7+78 )+9
J 9 J /
-
J I
!
0
# # #
4 # 4
K 4
!
J -
# K 4
&
# ! 4 & 9
"
5 &
"
.(/ & $ &
!9 0
&
! K $
. /
9 !
9 *
&
, &
&>
!
(-
$. K ( K K / K J $
&
!
)
,
# &
5 &
& R
9
!
! &
&
!
# !
4 9
. K /
9
9 &
$
$ &
!9
!
. & " ! 0
0
(-> 4&9 & "I # # # 9 4 # 4 K 4 9
& # # # 9 4 # 4 K 4 9 !9
!
0
/> 0
"9
0
!
9 &
&
(-
&
9
K $
&
!>
&
9 , &
($$ 9 0
9
&
4 $.
K
/ &
!9
!
8.
/
$. K
/ $
$- # &
!
5
9 -
9 &
&
9 0
9
&
4
5
9 !
&
,
!
& *! !
!>
&
&
(9 &
! &
&
5 &
, &
(-
&
&
9 & &
(# " "
.(/9
!
# ! 4 0
&,!
&
&
! " !
!
I
.
& &
9 & +78 )+9
J 9 /
J - I
!
4 # 4 K 4 9 # # #
# K 4
&
9 &
,
.
/
!
0
&
&
&
! .(#/ %
7+78 )+ " !
&
4
> !9 &
&
0
&I
&
>
&
, "
&9 &
5
!>
, &
9 ! J -> "9
&
&
! &
$
)
!
# @ &
#
9
9
>
9
&,! .
/
>
,
$ "
"
!
!
0
&
$ J K
#
- .('/
& &
!> &
49
!
&
0
!
9
0
(9 0
"
&
,
9 &
+78 )+9
$ &
&
> . / &
&
$ 9 & " 0
. / &
!9
&
> 9
J . / &
9 &4 &
. /
9
. / !
&
"
9
&
&4 &
)
,
J # )
*
, &
! 9
&
!
J 9
&
, !
&
&
, &
0
&
, $ >
.('/9
J
$
H
(I )
5
&
&
7
9
"
&
4
> &
!
!
F
9
& &
0
!
! $
"
& 6 9
0
5 !
?&
&
? &
%!
0
&
" &
> 9
J 9
& 4! - . / J >
! 9
- . / J
,
# @ & 0
& ,
J 9
5
,
& &
, &
0
&
, $ > " &
! 0
,
&!
&
&
&
,
!
,
! .('/ !
(9 &
0
9
!
0
0
) &
9
&
!
9 9
!
"
!
&
)
" !
9
&
,
!
&
9 &
9 ! > 4&9 !
9 ! +, !
0
!
9
!
0
$
6
I
&
&
& &
!
! 0
0
0
&9
9 & .('/ &
$
& 9
!
0
&
9
",
)
9
.&
0
!
"
/I
.4&B &
9
J 9 9
&
,
&
&
9 9 /
.,
!
I
&
!
&!
,
$ K # . $ ./ ./ K .
I/ /
!
&
,
!
! .('/9 0
* > ./ ! 9
.
I/
&
,
.
MIM
! ??9 0
,
J I /
&
!
(
0
&
" &
> &
0
!9
&
&
.
/ %& 4!
&
&
!
9 !9 4& &
9 &
4 .( K ' /
&
! . , & ",
!
$$$/
"
&
, 0
> 0
,
.&
/9
! @ &
&
0
&
(
& I
& &
&
! ",
9
&
",
&
!
&
&
9 &
&
&
5 &
0
9 0
> &
& &
&!
L 4& &
9 0
, &
&
! 9
" &4 9 ",
"I &
9 &
5
> &
!
&
.&
*
& &
&
0
/ )
9 &
9
!9 &
4 &
! $ $ K # .&
&
('/ !
&
9
"
& 9 &
"I
.4&B &
9
J 9 9
&
,
&
& 9 9 /
$ 9
J - I
$ $ K #
!
0
9 01
. 9
/
2. 9
&/
$ . K /
6
&
"
&
&!
!
.
!
&! "
/>
" &
0
(# )
(# "
9 , &
($
6
& !
, &
, 0
H
&
!
! &
! "
"
L, &
($ -
9
,
! 0
,
&
,
# 0
& &
&
&
,
&
; .7
9 ! 9
9 0! &
,
&
,
/
"
> &
5
&
0
5
4
9 & 0
,
&
!
& 0
> 9
&
,
& & 0&
*
+
, J
9 &
)
9 - 9 &
&
$ J K #
! .('/
"
&
! J # 9
5
&
&
, "9
$
"
&
&
&
5
0
( !
&
9
9 & "
&
9 $
> 0
&
,
&
&
K K J
$
H
(I )
5
&
&
, $ J K
0
.
& $ 9 0
/ ! & "
.&
$ /9 &
!
!
&I &
&
!
9 &
- I
.4&B &
9
J 9 9
&
,
&
&
/
J - I
#
I
9 J - I
$ $ K
H
&
", &
! 9 0
( L
! 0
9 0
9
&9
&
9 &
" ",
9
&
&9
! ,
* ! (I
&
>
9 &
!9 !
"
9 !
"
0
&
9 &
!
&
!
&9 !
!9 & *
4&9 &
9 & "
&
!
0
5
>
&
&!
,
&
. &
!/9
&
&
!
, &
&
> " ,9
&
9 0!
5
&
" &
#
0
&
9 "
F
!>
&9 &
"
,
0
&
"
&
?&?
$ &
9
&
.4&B &
9
J 9 9
&
,
&
&
/
. K /
9 $ -
J - I
$ $ K #
!
0
9 01
.$ 9
/
2.$ 9
&/
$ . K /
$ $ $ K
$ &
&
9 &
&
! .&
*
0
/
9
. /
)
&
&
9 !
!
$
*
0
&9 &
$ 9
4&
!
9 &
!
!
$
" *
$ 0
!9 &
( ! (# ! & 4! &
&
&
!
9 ! &
!
) &9
9
&
&5
7
9
4
!
!
&
9
( .0
&/
! ('
!9
&!
,
!
# L 0
&
"9 &
,
0
!
5
&
)
& !9
, 0
&
!
9
J !
&
!
# L
9 ! $
&
,! &
9 4& & &
&
&
&
,
9
*
9
&
,
* 0
, 0
!
5
9 &
9 &
!
9 !9 0
9 $
)
!
"
&
9 5
9 0
9 &
&
&
, &
$ H
&
", &
J # )
'
9 &
9 F > 0
,9
",
&
9 " &
&
&
&
9 &
&
&
, 0
J 9
! 0
&
!
9
.4&B &
9
J 9 &
&
9
!
# > &
5
!
9 !9 0
9 $ /
.,
&
I
&!
,
#
$ !
&
I &
, J
(
!
J
K
&
!
0
&
! "!
&
&
&
9 F & !
)
,
! # 3
,
&
,
!
4
& L 4&
&
&
,
&
,
9
>
&
&
!
9
9 ! $
0&
!!
9
5 9 = 9
& >
&
"
&
"
.('/9
!
&
!
9
.
/
9
> J = K
5
-
J
&
,
&
,
9 0
&
! 5
!
! & # &
,
4&
9
&
"
! 0
&
!
$
(
-
:#
( %6
%
- &
%&&
4 -
:8
(
- )
-
:8
6 -
:"
$
"""
/,
,
$
6
,
$
)
-
/,
+$ -
:@
-
- 8<
+$
$
-
:";
- -
:";
+$
>
$
-
:";
:"=
+
$
-/
>
7
H J #
#
#
!
!
!
> # &
&
9 !
> #
! 9
& " &
0
&
,
"
!<
" &
)
&9
&
&
> 9
&
&
&
! -
.
! 0
9 &,
"
&
!
&
,
>
"
! &
&
! 9
& & >
&
/
& "9
&
&
,
!
9
. ?
?9
9 /9 ! 0
!
&
$
& 0
&
I
&
<
.
/
! 9
J #
#
# " 0
# 0 # . # " # /
0 >
&
# " # 9
&
9
J >
&
!<
&,! 0
!
> "
,9
&
4 4
. &
, &
&
!
&
F
5 5
/>
&
'
(
( )
$-
!
&
9
&
>
5
9 &,! 0
!
.9
!9
/>
&
.",
9
/I
5
!
5
! 9
9
& 9
!
&
K
!
7
9
&
&
&
! U
D'E9 &
0
'# ! 0
&
& &
>
&
& )+ D#E
)
&
&4!
,
&
!
0
.
&
!
9
5
/> 0
& 0
&
&
&
!
.
" 0
"
&
/
!
&
,
! 0
& &4 !
&
9
9
> 4&
&
&
,
&
! &
>
&
&
4! 0
9 0
"
, 0
"
,9 &
,
&
&
& & &
& 4!
%
" ! &, .&
/ &
I &
&
&
,!
"
9
& F9
! &
9 &
&,!
> 9 "9 &, ,
8
#
"
! !3&.#
# / < !
!<!3&.
/ .
! &/ &
&
!
&
!
# ! # 9
# " # > 9
0
&
&,! *
)
9
&
! "
&
.
!/
,
5
& !>
&
!
! &
9 &
!
>
&
!
&
"
9
&
9 &
"
&
! !
!
I &
9 4> ",
&
! ! &
!
0
,
" &
! .!
"
5
/9 0
& &
&
."
0
,/
!
!9 "
!I
! !
&
9 0
&
,9
!
! >
0
"&
>
, &
9 0 9
9 0
$
& ,
)
F
5
!
, &
! &
, &
!
($ L
! &
,
! !
9
&
, &
2
,
I &
&
>
&
>
&
&
!9
& .
&
!
9 !
! /
"
9
&
% %B $ # 3
& " ,
,9 0
(9
0
"
,
! 0
> "
,9
, &
&
,
!
9
"
, &
! 4
> &9
"
, ( &
9 ! 1 & 9
&
& " 0
5
&
!
&
,
(
& 7+78 )+9
J 9 /
.
J I
!
0
!3&.
K /
! 0
# 9 - . / J - . / K 9 - . / J 9
! " . / &
& &> " ! 0
+78
)+9
Z. / &
!
)::8 ) )B $ #
9
9
& &
&
! T
0
& &
&
& .#
# /9
J > &
. / J . / &
" 0
, &
!
;
H
3
9
!,
& )
&
# #
- 0
&,!
3
&
,
@ 4
F
I &
0
! !9
-
&
!9
3 &
! 9
&,!
>
&
&!
9 &!
&
- 0
&,!
&
,
3
)
&
J . / &
9
&
&
. " /I
.
& @ +8 )+/
$
!
3 > 3
# " #
3 -
!
$
. 3 -
9
&
!
>
&
&
"
&
, 1
&
! 9
!
9
0
!
<
H 0
" 0
&
!
0
.
J /9
&
! &
&
&
5
! "9 0
&! ."
&
9 0
/9
!
)
&
0
5
&
5
. /
&
9
J !9 0
9 J
!
!
! - ./ J - . . K
/ K &
9
. /9
&
! &
- .
/ J .
/ K ./ 9
! & &
&' !
# 3
9
,
0
J
$ -
$ -
B BC 6
%
& (
-
-
B BC 6
( 4 -
(
-
<"
#
$
) -
<# "
$+
% $
D&>
- (
& 4
$
- -
<#
(
,& 4 #
(
4
% & 7
-
-
-
-%#& ? %"&
$
% % "&#& 7 %"&
-
-
-
-
B BC 6E<"
, E
-
<8 ( -
&
&
&
0
!
>
,
0
&
4
"
! &
.
&
/
!9 &
& !
,
&
5
0
&
! . &
F *
!> F
" 0
*
!
! >
0
*/
) %B $ # )
"
9
&
0
&
9 &
"!
&
39
)
&
# !
0
3
-
# !
!
9 0
0
3
F
-9
)
!
3 ! 3 >
&
9
9
"
."
! 3 J -/
$(
!
.
0
!
& +78 )+9
J 9 >
0
!
/
!
# 0
3 -
. 3
$
!
3 J 3
&' !
#
49
&!
&
9 "I &
!
!
J
9
&
0
J
& &
)
&
&
9
&
,
&> &
",,
&
5
>
&
,
9
0
!
> & 4
9 &
&
J
!
,,
& "&
./
!
. ,
/
&
.
%
&
!9
&,! 0
!
9 &
, 0
,
I
"
!
!
&
2
,
&
&
.O2
/ &
0
&
!9 0
!
9 &
0
&
>
&
9 !
9
& 0
O2
9
&
5 &
& 0&
! 0
I 0
&
&
/
9 0
.
&/9
.
>
!9
0
> 0
4
9
>
&!
9
0
& .
!
" &
/9 " 0
H
. ! &
&
/I
$
.
!
&,! /
-
!
0
.
/
% J
.
/ "
,
!
$
!
% J
% 0
% K
0
&
(
.
!
. %
0
9 !
&
,
&
9
&
9 0
! 0
&
! 0
&,! 9 &
5
9 # J > 0
&
, "I
!
! 0
9
, !
!
> 4
& >
&
&
0&
!
!
0
&
!
&
&9 0
* !
&
&
>
9
!
&
4,
!> &
!9
&
&
> &
J $
J
)
, &,! % & 9 &
0
" 0
# 0 9
0 % ! # 9
" % >
!
&
!
!I , &
(
, 0
* !
9
&
!
&
! - . / J - . / K 9 - . / J
, & *
. / &
!9
"
&
> &
9 0
9 & . /
) %B $ ;
J # ) F 0
5
& 5
& > 0
9 &
5
0
5 ,
9 &
)
,
0
! & 4&!
J 9 /
9 -
J
0
! &
0
# . # /
# 0
3 . I 3 -/9 ! 9 -
!
$
. 3 -9 ! -9 . I -/
( , 3 3 9
( . &
4
/
, 9
( . &
4
/
* #
+
'
* #
$#
!
#
!
K 3¼ J
'
!
K 3¼ "
!
! J
4 #
. I 3¼ /
. K 3¼ 0
!
! J -
4 #
. I ¼
K 3¼ /
!
- # 4
)
&
9 &
!I
5
!
0
& ? I?
4 0
&
0
,
>
9
0
,
. "
!
/>
9
!
!
9
& 9
4& >
&
, ./> &
&
&
#
9 3 9 & ! !
4&
&
! 0
# !
( & &
4
&
3 >
3 "
9 !
&,!
0
5
!
!
.&
&,!
/ 4& &
J I
- $ ( # '
# $ # (
3
! - - - -
- - - - -
3
-
-
-
$ $ (
$ $
#
.
0
/
9 &
!
.$/9 3¼
0
!
>
0
!
3¼
* 5
9
9
0
9 &
! J 9 0
3¼ >
& 0
5
,
&
&
,
0
, 0
> 0
&9 ,, 9 &
3¼
0
9
$'
0
&
&,! - 0
1
!
&
> 0
0! 0
&
-9
&,
0
,
I 0
#9
! -
%& 4! &
4
> 0
, "
0
*
!
!9 - . / 0 - . / K . /9 - . / J . /
. / @
&
! &
!
. "& &
F
/ 5
Z. /9 &
+8
)+9
&
&
) %B $ ;
! # ! *
5
- $ (
[ $
$
'
#
#
-
-
-
'
[
[
$
'
#
#
-
-
-
'
3 (
- $
3 - $ '
- ( ( '
&
&
! [ 9 &
4!
> 5
"9
&
&!
> 0
,9 &
&
4 " 0
@
!
&
,
! 0
5
$#
# &
4
.
(9 &
&
/
&
"
&!
&
!9 0
&
&
!
>
0
F
5 5
!
9
5
&
> &
&
!
0
9 &
&
,
6
&
&
&
&
9 &
9
9 5
,
0
! H
&
&
, &! 0
9
!
! 0
!
[9 &
#[ #[ >
!
J -9 J >
9
&
& !
&!
&
&
&
9 !9 &
! >
!
! )+I
&
0
&
&
! ; 7
&
" 9
!
9
&
&
!
9 &
&
& &
&
>
!
9
!
) 0
4&9
! 9 &
&
&
>
4
& 5 &
?/9
&
&
" 9
9
!
0
?
?
&
>
$
&!
&
&
0 9
!& & 9
",,
?/ L I
&
&
&
!> &
, !
!9
?/9 & ,
9 9 4&
.
&,!
* 0
!
!
/9 &
5 ",,
&
>
!
*
! &
&
> &
0
!
&
&
&
&
&
! ;
!9 &,
&,! .
J
!
&9 0
!
9
&
&
&
&!
9
. K / 0
!
&!
;
&
5
9
&
[ 0 #
" 0
# [ >
&
9
&
,
H J !
! " H 0 !
" &
>
9 . K J# [ >
9
9
/ H " !
" &
>
&,! ; 6
.
"
!
/
L
&
!9
& 0
7
&
&
0
5
.
9
9 &
>
!
/9 "
&
!
, 0
5
>
9
&
!
&
.
&,! 0
!
9 &
9
J 9 9 &
/
-9 9 3 # [ 9
!,
J
0
I &
!
! 3 &
?/9
,
!
!
$
. &
/
(
!
J
&!
!
0
&
&
# [ "
.
&
# [ 0
&
&
$
!
(-
!
.
// ! $ 0
..
/
9 & &
4 &
!
. / &
&
! ! .
/ &
!
4
! & 1
!9 &!
&
0! 0
*
!! &!
> 9 0
"
,9
.
/
!> 0
&
"
&
9 &!
&
!9 & &
9
0
9
! . /
0
,
9 &
,
0
,
!>
9
! &
"
&4
&4
!
. / &
&
! !
.
/ &
!
$, -
<: B BC 6 (
-
-
- $
+
$
-
)4
,
$ - 7
-
-
/
,
$
%
&
4
-
<;
-
<@
$
$
(
,
-
(
,
-
<@
$
(
&
H
! #
#
# ! 4
4
4 9
!
0
"
> "
9
0
9
0
9
!,! -> &
!
>
! .
! />
&
,
! 0
5
>
&
&
&!!
! " &!
.
/ &
! !
K .!
&
& &
!
9
!5
&
&
&
/
(
.
& +78 )+9
J 9 0
J /
J - I 9 01
&
,
9
# 0
9
(
&
& 4I #
J - I 9 01
&
, 9
4 0
9
(
&
& 4I 4
.
& +78 )+9
J . K / /
!
! 0
!
&
0
!
.
!
&
&
"/
H #
! ! 4
! 0 &
9 !
# 0
! J 4
4 9 "
(> " &9 &
# 9 !
./ &
4 0 # 0 4 .
4 J # ! 4 J #/
# 0
!
$ 0&
9 !
(
&
!
&! 5$9 &
.0
&
/
!
4 4 4 4 44 4 4
H
I &
0
&
0
L
3
4 " 0
&> 0
&
! 0
! 4 .
9
/> &
>
4 0
&
"
&
. &
9
0
&
9
(9
&
/
.& $
/
,
> "
&
9 &
! " &
0
&
9 0
!
0
&
4 .
4 J 4 /
!
&
4 >
!
@
&
! "
&
- . / - . / K ./9
- . / J . / 1 &
"
. K / &
9 &
&
!
9
4 . K /
&
,
*
0&
! 0
!
"
&
", "
&
.0
9
! 0
"
,/9 0
&
&
0
&
&
&
!
&
, . / &
0
&!
Z. / &
!9
L
&
&9 . /9 &
# 0
! ."
,
3! &,! 4
! /
7"
F 0
& > & &
. K /
&
!>
&
!
" &
5
&
! K 0
"
,>
&
&
!
&
4 9
, &4
)
&
&
&
&
&,! # 0
9 5
" &
5
9 0
&5
!
& 0
!
, ! "
L
9
0
& .
/ .
! 0&
>
&
& &
L
"
/
5
9
&
# 9
0
H
&
5
&,! 4 &
# 0
5
!
9
"
.
/ &
! &
&
& 9 &
0
! 9 ! &
&
& 0
,
.
/ K .
/9
0
I
- .
/ J . K /
K .
/ K .
/ ./
L " &
,9 &
!9 &
!
! 9
./9 &
# )
9
5
J #
4
#
4
4
#
#
4 !
,
0
&
L
9
.-/ J -9 ./ J 9 . / J $9 .$/ J $>
0
9 ./
#
./
&
F 0
& # 0
>
.# /
.
9 &
&/
9
.# / .
/
&
F
# 0
0
.# / J
.# / K
.# / J
4
#
!
.
!
/I
.# / J # : .# / . /
, 0
!
9 0
L
9 9 &
#
0
9
! .
/9 & ./
.# / , . / !
" ! 0
L
5U
2
. / . /
H
I +
J
9
J " .
&
/
.
&
&
!
/
!
.#
%#
4
%4/
!
"
%# # K . K /
# # K . K /
.
!
0
%4 4 K . K /
4 4 K . K /
$ #
#
$ #
4 $ 4 4
, I #
0 4 , I #
" 4 , $I #
J 4
H
$I &
! 0
&
>
, &
)
&
"
&
! 0
&
0
&
!
9 &
J
!
!
,
# L 0
4
4
"
!
&
! 0
#
! 4 9
-
! J >
>
#
! 4
! 0
&
! 9
& "
!
!
#
0 4 9
& &
#
#
0
! 4
4 0
> 0
5
9
0
#
! J K
0
#
9 0
#
9
#
,
4
$9 , 9
!> !
!
9
& 9 0
#
" 4 9 !
, I #
# &
!
! 4
4
&
!
. ,
$9 , /
9 #
J 4 9 &
&
!
!
0
!9
#
!
!
!
# )
" &
&
5
&
!
! 9 " &
! 0
&
H
&
"
!9 0
9 !
5
&
& &
! 0
#
! 4 & " 0
&
3 J - &
#
0 4 ! 3 J "9
0
! 3
3&
4
"
4
&
#
0 4 ! #
4
!
!
#
#
9 0
& 4
4
>
& ?
?
,9
! &
!
!
&
!
& "
&
!9 & *
0
5
&
,
J #
#
J 4
4 J
J #
# J 4
4 J
(#
!
J #
#
J J #
#
J J 4
4 J 4
4
J J 4
4 J #
#
J #
# J J 4
4
&
!
"
0
, 0
9 0
, & J 9 0
, $ J ! 0
, ( J -
)
0
,
, %
! & 5
>
3 " &
!
,
.&
!
9 & +8 )+9 /
!
.#
%#
4
%4/
!
J -
.#
%#
4
%4/
# %#
0
3 9 ! -9
# K . K /.%# # K /.
K /
!
$ # K %4 &
(
!
#
" 4
!
J - , (
%#
4 K
!
.
!
#
0 4
!
J
,
# K
%4
!
. 3 - , $
#
. , 9 #
J 4
'
!
! J -
!
J
,
# K
%#
4
%4
!
3 J - ! 3 J
, $
# K
%#
4 K
%4
('
!9 + ! 0
!
,
0
&
! 9 &
&
,
#9 %#9 49 %4
& !
&
7+78 )+
#
J 4 . "
/
&
! !
, &
!
'
9
!
#9 # ! 0
, , #
J 4 0
!
9
"
0 0
& 4!
>
0
! 4 0
&
&
! !
0&
! 0
K
!
9
0
!
0
5
&
!9 0
&
K
$
! .&
%# 0 #/9
$ 0
&
.
K /) 0 !
$ J - .
/ J
.
K / K
&4
!
- .
/ J 9
! 8.
/ .
K /
9
, >
&
5
&
> &
J 9
! -'9 0
&
J $
*
-# . 0
&
&
&
!
/
9 &
0
&9 ! &
!
J . K / .
9
/I
J #
#
J #
#
J 4
4
J 4
4
9 0
9 J # J # J
9
!
"
!
>
!
!
&
0
& 9 ,
L
.
&!
&
9 &
!
K . K
/ 9 &
& &/
L " &
!
&
4
0
&
&
&
!5
& &
! 9 9 J
.# / J
.4 / .&
!
&
&9
./9 , !
$ > F
!9
!
L
/
&
! !
!
&
,
(9 0
!
&
&9
&
&
&
!
0
! .
&
,
"
9
9 &
#
4 & J
.# /&
-
. -
. K K /
8
% 5/9/
/
# 4 9
#
. K /
# 4 0 # 9
# >
& &
&
0
4 ! 4
(
/ 9
! !
9
!
!
.
. K K /
&
# 4 9 4
>
! *
&
0
&
/
)
9
!
! &
&
4 9 # 9
J
.4 /
"
!9 &
,
I
8
K
.# / J -
% K
.4 / J -
J .$/
-
K
/ )
!9 , &
$
!
! &
& "
5
, 4 !
&
K
&
!9 &
&
&
!
0
&
!
H
(
,
> &
9
!
0
&
F 4
&
!
I
.&
!
&
&
!
/
!
01
J - I 9 01
&
9
&
!
, £ ,
. / &
J - I 9 01
&
&
!
, 9 (£ ,
. / &
%&
&
&
!
.. K // .
. / K / K .
/
&
&
!
!
" ,, J
0
9 &
!
&
*
!9
9
&
.&
I
&
, 0
&
&>
! /
: .
&
&
!
& +78 )+/
&,
&
!
J
J - I
9 01
, ! ,
&
-
!
&
"
&
!
!
.0
&
&
, &
!/ &4 5
& I
K K
- .
/ J K K .
/ .(/
$
)
&
! .! &/9
5
&
!
&
&4
L
5U
2 ./
5
"
!
9
*
0
"&
,
&
9 & 0
&
.
&
9 &
5
9 9
!
[/
!
!3&.
/
!
J
01
.
[ /9 2.
/
[ &
[ 9 &
!
!
J
01
.
[ /9 2.
/
[
[ 9 &
!
.0
/
,9
!9 !
&
! 0
9
& 0
!
&
&
&
0!
0
&
! 0
0
5
9 " 0
&
2
" & &
&
.!
0
!
&/
! &
! !
&
, &
5 , &
! *
0
0
!
0
&
!
&
! &
&
&
>
&
, !9
0
&
0
&9
9 0
& 0
&
!
&
.&
&
0
/> 0
'9
! [ .J
[
[ / ! & 9
!
2
&
# [ 4 9
5
$ !
5
&
> #[ 4 9
&
[
!
9
0
&> &
# [ ! 4 9 !
.
&
9 9
! &
&/
!
!3&.
/
9 :## -9
0
2 ! :## J -
&
!
J
01
.[
/9 2.
[ /
[
, 0
9
&
$
!
#[ 4
:##
!
J
01
.[
/9 2.
[ /
, 0
9
[
$
!
#[ 4
:##
$ K
$
!
J
[ &
[ 9 &
!
(
.
[
[ 9 &
!
.0
/
%
& -
$
$
-
<""
4
%& 7
-
- $ %& 7 %& ? "
2
-
% ? &
-
+F
G
4
%<#&
4
7
$
$
/
$
-
-
$
- - BC 6
7
) -
<":
,
$,
!
!
(
4 " 7 # # #
$ 7 # # #
$
? %% & 7 * # # # " ? %% & 7 * # # # " 7
* # # # ? " 6
%<8&
H -
+
,
! +
$
-
$
$
/
,
&'% &
$ (
BC 6 &'% &
!
, (
&"
L
9
0
&
&
0
5
> &
9 0
4
F 0
5
9 4
.9 /
&4
!
Z. / ! 4
I
& 9 &
;6 ! *
9
&
.
/
.&
/
&
9
! &4 .
/ 0
,
9 O2
&
4
0
9
& *
. / 0
"
,> !9
&
! 4& 0
!
9
& 0
5
& !
&
9
& &
!
!
&
,
&
!
& &4
L &
,
! 0
&
!
9
0
*
,
&
!9 &!
9 &
&
&
.&
9 /
&
,
!9 &
&
" ,
! &
!> &
! "
9
0
&
!
,
! !
&
!
&
I 0
4 ! ,
0
&9
& )
&
!
!
,
9 0
9
>
&
!
&
! !
&
!
9 !
&
"
L
9 0
9
!
&
9
-
9 !
0 9 -
0 9
(
!
), ),
- -
$ $
( (
J - $ ( J - $ (
H
I +!
&
5&
&!
/
74 !
!
0
& . / . ,9 4&9
&
(/>
I
4
& &
!
! &
&
,
"
9
#
0
!
! &
9
*
>
,
&
,
!
9
,
&
,
&
9
", &
! !3&.
/9 0 . !
,
/>
!
9
&9
! ?
?9
?
0? +!
! !
!
9
"
! )!
!
=
9 0
&
,
9
&
!
!
9 &
! & &
9
0
! &
)
&
!9
! & @ D I E 5
&
4 !3&.
/>
!9
D I E
! "
5
! &
D I E .
&
/> 5
!
9
5
! !
9
./
&,!
3
# H
&
,
"
!>
& .
&/ 4 4
&
! &9
&
&,!
.0
&
!/
+, !
0
& 9
&
,, . / J
. / &
> " &9
. /
!
&9 0
,
0
> &
&
9
!
"
9 &
&
!
!
,9
!
& >
&
&
"
!
$ !
#
! 0
&
"
D I K E .&
/
!
> "
!
!
&
5&
&
&
!
0
&
! &
5
! 9
&
.#
# / # " # ! 0
! & . /
.
/
<
. /
/
/ 6
&
D I K E
!
-
!
> 4
. /
9
&
9
! &
5&
I
!
&
@ >
!
!
&I &
0 9
$ " $ > 9
!9 &
> J
/ )
! &
&
&
D I K E ! &
&
.$/ 0 .$/ 9
J 9 J K
! ./ 0 ./ 9
, &,
'
! &
9 J ' D I K E ! ./ "
./ 9
.$/ " .$/
J 9
" K . J K & ./ 0 .$/ / ./ 0
./ ! ./ " ./ 9
./ " ./ 9 .' / " .' / ! .' / "
.' / >
&,
!
, .$' / " .$' / ! .$' / " .$' / ! 0
.$/ J
..$' /
.$' / / " .$/
J 9
.' / .' /
.' / .
/9
.$' / .$' /
.$' / .
&,
!/ !
.$/ J 4..$' /
.$' / / " .$/
1
&
! &
J ! J )
! 9
9
D I K E
", &,!
"
>& "
/
/
!
)
&
)
!
&
5&
"
!
,
5
!
=
"
>/
#
!
/
!
!
&
9 0
&
!
,
9
> &
!
&
&
0
& ! @
"
!
9
&>
&
9 , $((
"
&
!
"
K > 9 J -9 $ & &,! -9 $ & &,! >
9 $ & &,!
-9 $ & &,! )
&
!
J -9 J >
&,!
J
0
&,!
$ 0
&
"
&
)
&
I
&
K
$
J J 9 *
0
&,! ->
&> &
J K J 9 *
& &,! 9
K
&
)
&
I
&
$
J J 9 *
0
&,!>
&>
&
J K J 9 *
& &,!
&
! &
&,! "
!
&
L "
"
!9 ,
)
J-9 "
!
)
&
!
9 0
9
9 " "
!
!
K )
&
&
! &
I
/ $ F 0
&,! .&
9 0 /9 &
! "
&,! 9 $ )
0
&
!I
)
&
I J & J 9 & .
&
/
J & J 0
)
&
I J K& J 0
J & J 9 &
/ $ F & &,! .&
9 K /9 &
! "
&,! 9 $
"
)
&
I J & J "
J & J 9 &
)
&
I J K & J 9 &
J & J K"
9
&
9 4
& . &/ ! 9
& "
9
!
'
!
.
! &9
, &
/
!
!
&
5&
74
&
* 4
!
. , $##
/
3
&' !
@ &
,
! H
&
0
J
># & &
"
> 0
&!5
J !
,
&
&,! &
&
!
&,! * &
&
>
&
4 &
! !
0
9 &
0
9
9 "
5
! .0
!3&.//>
9
.
&
"
! ( 0
&
!/> 0
&9 & 4!
. / @ " & &
& R
3
2#
&
&
5&
!>
9 0
9 &
,
!
H
&
&
" ?
? 6
?&
?
9
&
9 & !
*, & &
9 ! &
9 &
!
9
9
0
5
9
&
! !3&.
/9 !
"
0
!
$ @
, 9
,
,
!3&./
9
! !3&./
! 9
!
! "
!
> &
!3&./
'
!
&
9
"&
,
&
9 "
! 4! 9
!
0
> 9 0
!
0
&
5&
&
!
9 &
0
, &
&
&
! &
! ! ,
&
4
.
&
5&
&
9
! 9 /
,
! . O2
/
J - I
!
&
!
&
! J
!3&.
K /
1
!
&
!3&.
/
!
. &
!
&
! J -
!3&.
/
&
! J
!3&.
K /
!
,9
&
! .&
&
9
&
/I
- .
/ J K
J K
0
& . / &
"
A
&4
&
. /
@
0
! O2
&
, &
,
L
%!9
&
&9
! 9 &
&
#
9
! &
!
0
9
=
)
0
& 4
9
9 &
9 "
9
?
? &
."
/
* &
&
!
0
&&
!
0
!9
4
F & &
!9 *
&
5 &
!
9
9
! &
,
9
!
"
" &
, "
!
9
0
, &
! F4
&
9
&!
<
! .%
!
>
0
0
"
!
9 0
&
/
.O2
9 "
!
/
!
;6.
/
0
0
!
.
/
.
% / "
,
!
$ ;6.
% / !
,
( ;6.% K
/
L
!
9 0
!9
&
& &
&
&
"!
0
!
>
& 0
&,! 9
#
9 !
,,
! &
!
9
$#
#9 !
&
9
.0
&
&
/> %
&,! & 0
! &
,
&
!
9
!
, &
&
& " ;6.-
/
# &
,
I
> & ,
&
9 &
5
&
&
!
,
!
!
&
!
!
,> &
9
#-
!
&
!9 9 &
!
! !
&
,
! . O2
/
!
&
&
!
&
!
&
!9 ! &
&
!
!
&
!
9
&
!
K K ( K K
K
.
/
K
>
!5
,
J 9
!
0
0
&
9 ! &
! G$ "& !
9 &
! &
9 !
&
C= $
C=
,
!
# "
", &
!
0
&
9
&
)
9
O2
&
0
*
"
!
.O2
9 "
&
&
)+/
!
;6.
/
J
!
,
! "
O2
-
.
0
!
0
.
/
.
%
/ "
,
!
$ .% /. /
&
&
!
(
;6.
%
/
, 0
&
;6.% K
/
, 0
& &
H! "
! "
&
9
&
>
!9 J
> &9 &
!9 &
0&
! 0
&9
&
&
!
!
>
,
*
9
,
"
&
9 &!
"
$
!
#
& &
!
,
&!
! & " 0
"
9
&
&
I
&
!
> "& &
& 0
&
&
&
!
9 & "
!
9
!
0
> 4
!
,>
)
!
.&
&
&
9 9
9
&
>
!
&
&
[>
& # /I
#
.
&
!
& +78 )+9
! 9 &
&
5
&
!
& &
/
!
.
%
/
. /
[ F 0
&,! J K ! % J
D K . K /
E
$ &
$#
# & &
!
[ J [
[ 9 [ 0 [
$M .0
&9 &
& &
&,! 0
[ /
( 3 [ 9
[
[ 9
[
# 3 3 ! 9
( . &
4
/
' &, [ 0
9 0
&,! K 3
& .3 J -/
&, [ 0
9 0
&,! K 3
K
& . J -/
&, 0
[
&
,
. %/
-
!
J -
% K 3
!
9 &
,
, ,
& )
!
! &,!
0
!
[ ! [
" 0
1 &
9
"
! > 0
9
! & [
&, 0
5 ,
0
& &,! K 3
> 0
&,!
& .0
$M9 5 & & &
&,! 0
[ 9
&,
K 3
/>
3
J 3
[ 0
&
9 &,!
9
&
&, &
4
0
9
! !
!
& " &
!
&
0
! %&
&
, 0
&
9
& . / K . / &
&
&
!
!9 &
&
4
0
,, &
!
&
5
+&
,
&
0
"
!
!
"
. / 0
* "! . / .&
! />
"9 & 4!
..
/ /9
!
& >
&
! 0
& 4!
.
/9
.
&
&
!
0
9
&
!/
&
" !9
0
& 9 & 0
#
&
!
0
9 &
> &
0
D#E
&
&
&
&
!
9 0
& 9
0&
! &
9 0
4&
#
&
&
&
&
,
& &
> 0
9
&
&
& &
!
! 0
$#
# .& $/>
#
!
- $ ( # ' - $ (
# $ $ ' # # - - - '
$
# -
$ ' - '
# -
$
# -
- ' $ '
- #
# - $ ' - #
# - '
H
#I +
&
&
&
,
!
&
!
.&
& . M//>
0
!
!
&
,
& &
&
!&
*
C=
&
& &
&
9 0
&
!
J
.
! /
&
& " 0
"
&
&
!
, & &
!
> &
&
&
!>
9
! 0
5
& &
& !
!
>
9 4&9
&
' &
5
&
J #
L
! 0
*!
&
&
!5
>
&
&
&
!
! 0
9 &
&
&
!
,9 ! &
&
,
! &
!
"
&
"
!> !
)
9
*
0
& 7
I
! > "9 &
!
5
"
* >
&9 4
9
! &
4
#$
-
(
'
$
'
#
'
#
$ $ $
-
#
-
-
(
$
-
-
$
(
./ ./ ./
H
'I 74& "!
& &
&
&
&
5
I ./ !
!> ./ &
! &
! > ./ &
!
&
! -
)
&
J 9 &
& &
!
0
&
&
&
! 0 ",,
H
&
&
!
,
! &
&
I [ J [
[ " 0
[ 0 [ )
&
&
! .
"
&
&
,
> &
/
0
!9 " 0
! ?? [ *
0
*
"
&
.
J -/9
?
? [ 0
*
&
.
J /> " &
9 -
9
& !
&
9
9
& 0
&
.
.-/9
*
"
!
. /9 * &
/9 0
&
>
&
! 9 &
,
&
9
!
&
!
"
9 &
! ->
9
&
&
&
, ,9
&
5
& 0
*!!
9
&
"
5
&
>
!
.
9 0 / !
&
!
&
,
0
'9 &
J ( ! J >
&
.&
! /> ",9
9
"
&
,
&
&
O2
"
.O2
& &
9
J ! 9 /
J I I -
!
K !
-
&
.,
,!
0
. /
&
$#
# &
&
!
[ J [
[ 9 [ 0 [
$
!
J -
0
&
?
"
?
#(
!
01
.[
/9 2.5
/
[ [
5
,
! &
(
. J 9 &
?&
?
01
.[
/9 2.5
/
[ [
5
,
! &
&
[
)
&
9
0
9
&
!
&
!
9
&
!>
* &
&
",
9 "
5 0
&
& &
0
+, &
!
9 &
!
&
"
&
9
4
!
&
!>
&
"
!9
0
&
"
9
&
"
!
, 4&9
,
4
9 &
9
9 0
&
9
!
9 & &
!
"
9
& &
&
& .
& &
&
9
I
, 4!>
&
"
! />
, ! &
(#
+D E=# 6
9
5
&
9 " &
& 8
!
&
O2
D #E &
&
&
0
& &
! &
&
!
*
& I
>
!
9
&
45
! " ",
& )
!
!
&>
&,! & 0
!
9
>
" &
9
&
9 4 0
&
5
9
! ?? 0
*
"
&
!
! ?
? 0
* &
H
&
!
9 &
,9 &
!
&
0
&
9 & 0
&
9 9
!
!
%
!
I
.&
O2
9 & &
9
J
> ! 9 /
,
! [
J I I -
#
!
K !
-
! [ &
.,
,!
0
. /
&
!
, [ J [
[ 9 [ 0 [ 9 &
$
!
J -
0
&
?
"
?
01
.[
/9 2.5
/
[ [ 5
,
! &
(
. J 9 &
?&
?
01
.[
/9 2.5
/
[ [ 5
H
&,
0
. &
&
9
/9 & 4!
- .
/ J
K .
/ K .( K
'/
. / K .( K
' /
.#/
&
!
&
! ./
,
0
&9 0
9
&
,
9 .
/9 &
5 & !
*9 "
9
"
9
! !9 !9
9 &
!
!
.
/
! &
$
! &4
! .
&
4 .
// 0
&
O2
"
&
O2
!
&49 0
,9 !
$9
&
7 ! &
" &
"
>
9 !
&
&!
"
&
&
! O2
9 & ,9
,
*I &
!
&
! "9
4
!
0
L &
,
0
!
9 &
DE
0
,
*9
9 &
!
&
! &
@
!
9
!
! &
9
J
)
&
5 "
&
5!
,
!
&
# 0
" " 0
&
9 &
9 &
)
&
&I
", !
&,! 9 J
9 0
!
>
"
9
9 &
&
!
0
!
##
!
H
&
0&
! 0
& >
!9 0
!
!
! " 0
0
$ )
,
! &
> &
9
&
! &
9 !
! &
0 9 4
9
&,! ! . K / 9 0
!
.&
,9 J
#/
# , 0
!
!
&
0
!
>
&
& 9
&
0
& "
0
&
9
&
I
9 0
!
9
! !> 0
&9
&
L 4
0
&
9 &
0
)
0
!
9
!9 0
9
@ [
0
,
0 .
&
!
!
0
! 9 &
9
J 9 /
J I
-9 9 3 # [ .3 ?//9
J 9 &
&!
9
0
I &
!
! 3 &
?/9
,
!
!
$ .,
!
I
( J I
0
[
.
((/
$
!
J
!
0
&
#[ "
.
&
# [ 0
$
!
3 #[
(
. 3 ?/
"
& 0
!
,,
I 0
!
9
5
"
0
&9 0
$ ",
0
",
1 & &
, 0
&
1 ! &!
&
&,!
&>
,
9 &
!
?/9
&
#'
.
9 &
9
J 9
/
,
!
&
&
&
!
$ &
0
! 9 -
9 0 0
( I , &
.-
/
,
! .-
/9
&
&
1 & $ &
! 0
&
! & " &
&,!
9 0
& .
.
//9 &
5 &
&
!
! .
9
!
!
/ 0
& .
/ 1 & (9
*
9 &
& ..
/
/
1 & 9
&
!
&,! . K
/ 0
!
9 4
0
9
"
!9
)
&
9 &
"
&
I
!
, 9
!
5
!
9
9
, 9 .
&
9
!
/ 1
0
*!
!9
9 "
&
!> 9 0
9 ..
/
/
&
!9
&!
&
!
9 !
&
#
&
! ..
/ K
/ !
&
! ..
/
/
. .
/
"
9
0 9 &
,
/>
&
!
!
&
!
%5
& 4!
&
0
! &
! 4&
0
! &
O2
9 &
&
!
"
9 &
O2
&
>
&
&
9
& 0
0 &
0 9
9
4!
&
#
!
2
3
!
# %
9 "
,
0
&
"
&
9 "
,, * &
,5
&
> " & 0
D (E
#
F & &,!
.
/ 0
!
&
&
F &
& &,!
&
,
0
"
>
, &
!
'
!
# 9
&
,
!
&9
!
4
!
> 0
9
&,!
9 J
>
!9
&
& &
&
! 0
& ./
!
0
.
/
9 0
5
! &
, =
, = !
&
!
9
!
9
&,! .
/9
. & 9
4&9
&,!
9
K
9 9
K .
/
9
9
9 / &
0
#I
&
&
!
,
! &
&
0
9
,
& 0
&
,
! ! &,! 0
! !
, & &
&
$ !
#
0
&
>
*
0
&
2
D.
/ K E
-
.
/.
/
-
/
/
&,! .
/ 0
! !
= >
!
.
/
0
= !
.
/ .
/ J
.
/.
/
= & &
&
,
> 0
&9 4
0
!
&
9
&
,
>
9 D.
/ K E
1 "
9
=
&
,
9
.
/.
/
#
0
/
/ )
9
&!
.
/.
/
9
&!
D. /.
/ K E
>
0
!
D.
/.
/ K . /.
/ K E
J
0 &
! 0
,
J - ! J
&
&,!
,
"
5/?
-
J &
/
#
&
0
!
9
&
!
&!
> 9 0
&
&,! #
,
,9
!
2!
#
#9
.
&
/ "
!
9 & 9
&
!
"
)
9
&
&
@ .
&
!
!
0
!
9 &
9
J 9 9
[
! /
"
,
! 5 J #[ J
I ,
! 5 !
, 0
! =
$
, = ! 4
J . J /9
( .,
I
! ",
, .
/9
& .
/ .*
/9
&
!
! = 9
&
,
9 9 !
"&
! =
9
&
&
&
& )
$##
& 0
! &
&4
.5
55
/ #
' ./9
& 9 !
1 & 9 &
!
&
&
9 & &
" .
/
&
!> 0
,9
4
!
&
&
9
&
! .
&!!
"
&
,
0
4& & 5
&
9
&
0
"
! .
9 "9
&4
!
. // 7
9 9 R
D E
'- !
# H J #
#
#
!
)
J
&
#
# ! #
# ! #
# ! #
#
!
'-
!
./ ./
H
I
! ./
.
/ ./
$ J #
#
#*
/
@ %
./ ./ 8
./ J
.#
#* /
.#
#* /
.#*
#* /
./ J 4.#
#* /
4.#
#* /
4.#*
#* /
0
./
./
./
-
.//
/ ) &
&
!
!
!
> 0
5
9
&!
.
&/9
! ./9
./
&!
.
&/9 0!
&
&
&
> & &
9
!
& !
&
!
!
. , &
( /
H #
&
&
0 . 9
! 0
9
,
0
./9 ./9
/
H
&
I # " #* 9 9 # " #* 9 # 0 #* 9 9
#* 0 #* 7
-
./ J #*
#*
#
#
#
#
#*
!
! #
#
#
#
#*
#*
#*
. #
/9 ./
./
!
!
#
#
#*
#* .
# #*
/
) &
9 &
./9 ./
!
" # " #* 9 0 # 0 #* > 0
&9 I # " # 9
#* 0 #* .
/ ! # " #* 9 # 0 #* .
&,
/> !
!
"
'
H
I
&
&
&
!
#
0
&!
"
0
5
!
9 &
"
, I
"
,
!
./ ! ./9 &
, ./ ! ./9
& " 0
&
+
&
&9
!
5
!
!
)
!
9 & &
!
9
&
(
!
(9 &
!
9 ! ! &
&
!
!
)
"
!
0
5
!
,
!
!
9 ,
!
.
9 &
5 &
,
*9
0
4!
!/
!
#
&
,
&
!
", 0
5
&
9 "
!
>
&
! "
&
I &
!
>
0
&,!
"
!
&
&
. &
! 0
&
/
-. / J
. / J K
K K
J .
/
R
& 0
!>
&
&, I &
5
&
0
. /9 "
&
9
./
)
9
R
&5
!
)
,
J # & &
&
9 &
&
&
0
, 0
4
&
&
I
J
&!
&
9
5
&
,
&
9
&
.
& &
9
J J 9 /
J - I
J I I -
!
J -
!
J -
!3&.
K /
. !3&.
/
. J
!
J -
!3&. K
/
. !3&.
/
&
0
"
>
5
!
0
!
9 & 9
5
&
" &
5
!
K
&
,
- !
.&
!
J -/ )
49
" " 0
9 &
&
&
9 . J ' /
"
9
*
0
&
,
! 0
&
,
&4
./ J .
/9
&
! 0
! &
!
)
,
! #
&
& R
! .&
)+/
&
9
&
> &
4!
..
/
/9
..
/
/ &
&
! &
&
+
0
&
&
&
& J
&
9
&
,
0
5
!
&
! 5
&
>
, ..
/ .
//
9 &
&
9 0
#
!
9
!
> "
!
& ./ ! ./ " &9
'$
.
!
9
!/
! 9
, #
#
# #
#
#
!
# )
&
&
9 0
,
>
! &
&
!
.
!
&
/
.
& &
9
J ! 9
9 /
9
, J -9
J
J - I
J I I -
01
.
/9 2.
/
!
J
.
/
$
. 4.
/
(
,
!
9
J -9
J
'(
!
@
&
! "
.
&
&4!
!
9 , &
/
K
K
K
J .
/ .'/
@
&
! "
- .
/ J K
K
./
&!&
2
#
&
.
/
5
I 0&
! 0
*
"
!9
,
! &
,
!
> 0
*
!
!
&
!
9
.
9 "
!/
!
.
/
J
!
0
. K / &,!
.
/
, &
*
$
. K
/
, *
. I / . K I /
(
, !
*
&
9 &!
"I
,
&
!
9 & ( &
!
9
&4
!
& - . / - . / K .
!
" &
!/9 - . /
&
&
&
! O2
9 0
, "
&
>
0
&
! &
4! &
!
9
&
4
9 0
& &
O2
%!9 0
9
O2
&
$ #
"
$
&
&
"9
! !
&
0
&
9 0
&
5
!
9 ! &
!
7 !
&
! O2
9
&
0
&9
!
9 0
&
O2
I &
&
!
!
!
0
>
4 "
!>
, &
9 0
&
! !
&
&
!
'#
!
&
9 &
+78 )+9 "
. / &
9
& & &
L
> 9 &
5
!
./ &
. /
&
!
& &
&
!
, 0
&
9
,
. / &
5
@
&
! . K K K . (/ K
. //9
&
.&
5
!9 &
> &
*!9
>
!
/> "
. ,
$##
F/ !
&4 . / &
&
5
! &9 . /> 4
&9
0
& . /9 . / &
9
&> !9 ,, &
,
! 9 &
+78 )+ & &
# .\
/ H
&
,
! J
&9 &
&, &
!
9 &
&
!
9 & &
!
(9 %&
&
!
- .
/ J K
K K .
/ ./
J K
K .
/
)
&
! 9
!
.(/
)
9
!
"
)
, # & , 0
!
5
9 &
4
&
, &
)
&
9 &
!
5
9
&
&
!
9 0
&
&
0!
,
! &
5
!3&./> &
&
&
,
!
& &
9
&
&
,
!
& &
&
9 @
& !
! .9 &!
9
" &
0
&
,
/
! "5 *9 ! &
(' &
"
!
&
9 ! &
! &
&5 0
5
&
&
!
!
&
5&
. / . K / . /
A&
O2
.8
9 (/ . / .
/
.9 #K / . K
/
.
/
5
.9 #K '/ . K
/ .
/
.R
9 $/ . K
/ .
/
<
&
! !
9 0
9
&
&
9
&
5&
9
&
&
0
0
9
> !
& ! &
&
9
! &4
!9
&
) &
9
&
9
&
&
5&
9
&
&!
4
4
,>
&
&
,
!G , &
& > &
5
0
! 0
, "
> &
& F 0
& 4!>
! ./>
=
"=
9
& & !
,
& , &!
!9
0
9
& &
&
&
&
! "
9
&
9
! &
,
&
&
9
4
-
$
% &
,
%,,,
&
) 5
%
&!
7 " ! " ! " 7 " ! "
7 * ! " 7 " ! " ! *
&'% ? "& &'% ? "&
4
-
$
-
+ B BC 6 7
#
'
!
# # #>
$ * 7 # # #
+
/ , &'% & &'% & >
* 7
4
-
,
!
%
+& 4
% -
7 &
#
$
$
$
4
,
6
,
-
/
)4
,
,
6-
,
,
$
4 7 # # #
$
# # #
%&
# # # % &
&'% & &'% &
4
-
+
,
4
-
- ?
-
-%#& ? # # # ?
-
- # 7 %
-
-
- &
-
!
)
&
5 & &
&
,
"
9
"! 0
,
&
!
!
9 &
5
, &
9 & &
&
9
" &
! &
&
, P ! &
P
0
",
. &49 , &
5
9
&
"
!/9
&
,
0
"
74&
&
I 0
&
0
!
5
9
0
5
&
9 !
,
!
&
9 &
9 ,9
,
! "
!9
&
!
&
9
&
9
9
! ", &
! .&
!9
/9
,
"
&
>
& 0
&
9
0
9
&
0
&
!
9
&
&
,
&
&
&
&
!
7
0
!
!
,
9
. !
> 0
4
0
!
&
"
,
16/ !
> 9 & ,
749 0
&9 !
&
&
, &
>
"! 0
&
9
9
!
&
9 !
"
L
0
&
!
9
&
,
)
0
! &
0
!
!
" . / ! &
&
"
5
9 &
"
,
! @
&
!
"
. ?&
&? ! 4 &
/ P
9 "&9 &
0
>
0
59 &
& & &
0
&
&
&
,
,
9
&
,
0
!9 &
5
0
& H
9
&
9
>
&
>
0
0
5
,9 0
!
9
,
!
@ &
# 9 &
.
/9
9
9
>
!
0
&
,
)
.!
/9
&
!
I
J
J D
EJ
.#/
0
I
&
>
5
>
- $
!
&
! " 0
9
0
& 0
, & &
R1 .R 1
5
/
$ .0
9
!
9 !
! &
! &9 &
"
> &
,
"
&
"
,
16/ @ & 0
!
&
,
,! & "
!
0
!
L 4&
0
&
! &4 &
9 &
&
,
&
9 &
&5
!
9
0
&
&
*
+"
! , 0
!
" D 9 $9 E
"
$
3 J
#
4
&
-I .# /
"
4& "
&
,
. / .&
"
!
&9
0
0
> , DE/
1
9 &
+ J & " "
&
!
5
! .#/ L &
,
9
&
5
,
&
"
.# /I
+ J
&
- I .#$/
(
0
&
&
& "
"
&
,
+ I
+ J J
- I (
&
.#(/
9 0
9 ,
+ I
+ J J
&
- I ( .#/
,
> &
"
! &
, 0
& . /9 ,
. / &
. . /
&
,/> ! &4
&
0
!
7
! &4 &
. / . /9
&
& !
@ 5 &
0
(
"
"
&
> !
. /
P &
!
! P ! +
. /9
*
&
&
9 0
' DE
0
&4 .0
&/
!
&, ! &4 ?0
&!? .
&
/
&
.. + /
&
! &
. //> !
"
9 , D#E
! "
&
&
, &
! , &
5
9 &
! *
4&9 "
,
! .#(/9 J . ( J /9 ! !
&
& & 0
&
9
&
I
. . / &
9 !
/
J - I 9 01
, + .I
/ .I
/
&
&
&
!
9
!9
& !
&
! .#/
,9
&
&! 9 !
"
& &
"
9 & & 0
!
"
"
&
*
9 &
!
&
5&9 !
5
!
* %!9
&
!
0
&
&
>
(
&
9 " &
5
0
, &
5
0
!
&
$
.
9 ! + /9
&
&! &
0
9
"
! 9 0
9
&
"
%
! &
& &
>
9
!9 " !
+ 4&9
, &
I
&
&
!
&!
,
&9
&
&
5 !
!>
9
0
& &
",
&
&
&
&
! 0
5
4&
!
66>
9
(#
L
&
!
&
9 ! 3
&
&9 &
,
&
& 9 0
&
! .#/9 9 0
.&
/ !
&!
,9
!
0
%1R> 0
&
&
,
!
"
!
.#/
. . / &
9
9
&
,
&
9 9 + > &
&
/
I . K / 9 3 9 + .
I/ -9 + -
J - I
+ .
I/ + .
I/ K .
3/ .3
I/ + + K
01
. .3
I/9
/ . 9
/
2.9
&/ 2. 9
&/
. K /
3 I . K / 9 .3 I/
%
9
&
" 9 .
I/9
+ .
I/ ! .3
I/ . !
4
/
0
9 !
"
" &
9 &
4&
9 &
,
! "
" 9 &
&
0
5
* &
> , 9 , !
+,
!
9 9
& +
. . / &
9
9 &
&
/
9 +, -
J - I
3 I . K /
+, +, K , .I
3/,
01
., 9
/9 2.9
&/
. K /
9 ,
#
"
&
"
0
&
>
&
*
%& 4! I
-+ .
/ J K
( K '
5
!I .
/ J # $
,
P
! P &
!>
6
& !
&
&
,
9 !
"
&9 0
&
%& 4!
9 9 ! +
,5
> "
.#$/ !9 &
&
9
J
. ( J
9 0
"
/
+, + &
&
9
4
&
! 0
"
,>
0
9 &
, &
9
! ! 9
&
.#$/
"
F &
9
&
9 &
!
&
F &
,
&
,
.&
/9
&
.&
/
&
&
9
&9 0
&
9 &
&
5 !
!>
&> 0
"9
&
9
&
" 9
&
; 1
9
&
!
9 &
"
&
"
,
P !
&
> 4&9 0
&,!
! 9
9 9 9
0
! >
&
9 0
! .#/9 &
9 &
J - &9 &
.&
, 0
/9 &
- &
9 9 9 >
0
!
& &
&
,
!
.
9 /
9
&
",
9
&
&
!
!
4& 0
#9 &
$ $ &
!
F
"
'
H
#I
! 0
&
. / &
9 ",
&
!
&
&
&,!
&
9
&
9
0
&
&
,
! R
F 0
5
",
&
&
& 0
&
&
& .$9 0
,
/9
!
&
,
!
)
&
",,
9 &
>
0
& 9 J - I
9 ",, &
&
.
K /
J -> " &9 0
&
& ",, &
&
9
0
& 9 &
&9 ",
&
&
!
9
&
0
L
3
&
" ",
I 3 J . K /
)
,
0
!
>
. . / &
9
",
&
9
9
&
&
/
3 9 + -
J - I
./ .,
@
!
AI ",, &
+ + K
01
. 9 /
2. 9 */
3 .3 K /
)
9 4&
!
./9
&
&
> 0
& 9 &
" ",
> J 39
&
!, J 39
",
>
!9
9
",
9
&!
!
5 9
"
",
&
"
H
&
I
&
+ 9
!
9 &
4
.
&
9 "&/9
&
",
9 &
&!
"
H
# I
! 0
0
!
&
9 &
2=
&
,
& ",
9
* &
5
.
/ & 9
&
! . /9 &
&
7 &
&
&,
",
9
9 0
,9 .
/9
&
&
",
,
0
0
!
4
0
&
",
!
9 0
& 9
&
! "
> , &
#
&
!
",
6
&
&
&
,
. /
!
&
!
&
! 9
&
!
"
P &
9 0
.
" 0
#(/> 0
!
! +
,
!9 9
, &
,
0
&
,
0
!
9
"
! .#$/9 " 0
,
"
, > 49 &
!
!
" 0
9 0
&
!9 0
0
9 &
9
9 9 - I
>
9
0
&
!
&
,
?!
?9 &
! 9
">
&
9 0
9 0
.#$/ &
!
! &
,
0
# 9 0
9 !
" &
.
?&
2=
? P
&
,
??/
&
,
&
&9
!
"
&
! P
9
& .
0
9
T/
0
& &
& &
&
&
9 0
!
I ) !
9
"& , + 9
&
5 0
!
0
&
9 &
&
&
5
9
&
& 0
&
&> 0
& 9
&, &
9 0
*
> &
+ 9
0
! >
!
! 9
5
0
0
& >
!9
0
F 9
0
!! &
+
& &
! 9
!
9
! 0
# 9 0
&
,
& 0
!
&
$ $
5
,
? &
!
9 0
&
,
?
!
&
,
! 9
,
&
. /
"
& @
73#
9 9 + F
0
&
&
9 ! !
4
!
. /9
I
. . / &
9
&
2=
9
9 &
&
/
+ -
J - I
+, +, K , ,
01
., 9
/
2.9
&/
., 9 /
2. 9 */
, 9 ,
"
9 & 4!
I
-+
J
K
.( K
' /
&
! 0
F &4 ",
9
&
! .
/9
&
,
#(
@
0
9
9
&
0
&
,
&
,
0
& !
9 &
9 1 &
# & *
!
&,! &
9 &
&
! &
&
&
*
9
9 &
9
. K /
&,!
-
"
.&
2=
&
9
9 &
&
/
01
J - I
01
., 9
/
2., 9
&/
J - I
01
., 9 /
2., 9 */
%& 4!
## &
&
",
&
>
9 0
#( "
",
&
&
>
&4
!
&
#
! ##9 ! 0&
## & 0
!9
" 0
> 4&9 &
9 0
9
&> "
* &
!> , &
#$
)
&
,
!9
"
&
,
! 5
9
!
&
9 &
9
&
,
5
&4
!
. /9
&
,
. /
0
, " !
# I
&
"
. . / &
9
9 & &
/
9 3 I . K / 9 +, -
..3
I/9 , / !
J - I
. .3
I/9 , / !
+, +, K , .I
3/, + + K
. K /
9 3 I . K /
.+, 9 + . I . K /
I//
+
L
73#
0
&
,
!
&
> 0
,
"
9
9
+
,9
5
> 0
+, ,
"
9 0
9 0
9 0
&,!
&
,
>
&
&
F
! &
& &
!
5
"
,
9 &,
&
>
&9
,
&
0
,
9
",
&
0
K
> &,
"
! ! "
! %& 4!
I
-+ J K .
K /.( K ' /
! &
!
&
#' &
P
&
9 ! + 9 &
&
&! &
$
0
, & &9
4&9 &
!
&
> &
&
-
%&
,
"
-
;:
,
,
$
-
-
;;
-
$ %& /
- 7
4 +
-
(
-
%&
,
,
-
& 0
9
&
,
0 > "9 0
9 0
!
9 !
&
!
&
&
!,
4
&
9
&
!9 ,, *
9 " 9
0
)
9
&
P "
I
@
&
!9 0
9
!
" 9 - 9 9 - 9 9 9
0
K . / J $ &
! 1 !
"
&4 &
. /9 "
. /
&
&4 &
&
- ,. /
9 &
9
4&9 0
D(E "!
,I
!
.# J 9
!>
"
9
0&
0
9
&
,
4/9 ! &
J ? /9 /
"
. J -9 &
/9
I
J ? K / K / K K /
!/ @
& ! 9
.
J ? / & 0
/
&
,
9 /
&
,
9 > 0
, / J -
9 & ,9 & . / &
!> 5
/9 / 9 9 / &
& &
4 9 !
&45
. /9
0
!
& 0
. /9
! *9
&
&
! &
. / &
. , !
&
4
/> 0
9 &
4 & 0
. /
!
& !
0
& . /9 . /
&
9 . /
.
&
4
/ . / .
0
!
/ & !
! ! ! &49
"
. / &
> & 0
D(E
"
,9
&
&
& 4!
"!
4
&
. &!
/ !9 0
&9 &!
7
&
&4! &
&
&
9 &
,, &
& ! 0
9 " 9
! ! .&
& /
&
9 &
! "
! ! 9 0
)
&
&
,
&
&
.
&
&9
,!
! , 9
"
&
,
"
/9 "
0
9 9
&
,
>
&
J
.
/
L
./
&
!
.
9 & ,/
9
&
&
9
!
.
/
7
4
&
,,
"9
"
&
,, &
&
9
&
> 0
,9
&
4 !
&9 0
9
&
,
> 9 ./ !
4 ! ,
& &
,
! &
,
!
&
9
& "!
0
&
9 &
9
&
!
- 9 J K I 9 & ?
?
" &
!
#$ 7
> &
4 "
&
9
&
0&
!
0
&
>
,
&
,
&
) &
9
0
& - &
9
&
&
> &
&
",
)
,
*
9
& 4&! L &
&
9
! 0
!
,
&
- ,. /9
!, 4
.- ,. / ",
9 &
9
&
5
, &
/
#
"
- - - -
- - -
- - - -
- - - - -
- - - - - - - -
./ ./
H
#(I +&
,
"
!
9 &
J !
J $9 0
,
I ./
> ./ &
H
&
,,
9
&
,
&
!
J - I
!
J . /
./ #
. / .,
I . /
&
J K I
!
J ./
.$/ #
)
&
9
! 9 " &
!
! 4 9
. /9 0
& &
&9
!
. /
&
9 0
5 &
!
",
9 0
.$/9
&
,,
&
&
9 " 9
0
!9 "
&!
",
!
# &
0
+
&
&
,
&
&
&
&
,
9
#(9
&
9
!
- 9 0!
&
& &
!9
.- I /9 4
&
)
9
"
&
9 &
0
!
! 9 7
& &
!
&
>
.$/
4 0
&
9
&
&
> 0
9 &
9
&
,
&
4 0
&
&
! & .$/9 &
4
&9
!
&
!
9
"
&
9
> 4&9
. K /
9
"
'
0
&
&
4 9 > 9
&
,
9 !
&
9
!
7
9 !
9
&
&
4 !
.
/
%
9 &
0
!
& .$/ &
, & &
5
&
,
&
9
#(> 9 . / J
9 &
,
9
&
! &
4 !
)
&
#-9
& &
",
I
P & &
.
!/ !
&
3 .( K ' / P & &
&
! ",
.&
J
",
/>
3 &
&
!
",
> 4&9 &
&
3 J
9
&
3 J
&
,
.&
&/I
. / . /
%&
I
-+ J .
K
/ K 3 . /.( K ' /
)
, &
& > &
9 &
&
9
0
& ",
&
&
&> 9 0
&
&
! ",
9 &
,
)
&
9 4
0
&
&
!
9 0
&
&
&
# > 9 &
49 &
&
9
!
* )
&
,
9
&
&
0&
! &
4 0
&
9
&
,
&
9 !
9
&
9 &
>
&
,
&
&
&5
9
&
!
# 9 . /9 !
! 9
&
, - # 9 &
&
&
)
!
0
"
##9
&
!9 &
&
,
0
I
"
.- ,. /
9 &
9
&
5
, &
/
J - I
-
J - I
!
J . /
./ K #
. /
0
./
!
J ./
.$/ .4 /#
)
49 & ./
0
&
" &
>
&
! - & ?
?
" &
!
#$9
5
&
>
&
,
9 &
9 &
&
45
!
&
! " % &
!
9
,
&
./> &
,
&
5
&
!
9 ! , 0
($9 &
&
5
9 0
&
($'9 &
"
!9 0
!
.$/9 &
./ , ! 9 & 0
&
.0
9
&
./
!
9
5 !& & ./
> &
9 &
!9
0
/
%& 4!
&
4 ! &
5
9
"
! &
&
&4
!>
",
!
&
! 9
&
> "& "
0
&
,9 &
&
,
!9 #- ! #9 "!
!
.
!
!
/
4&
-+ 9 &
F
.
/9
&4
!
.
/9 0
,
9
> 9 &
#9 &
!
.
/> &
&
,
9
&
",
&
&
&
!
0
&
0
&
&
"
9 0
!
"
&
5
9 &
&
! 4 0&
!!
0
(
5
9 &
5
5 9
& . - I ( /
!9
! .##/9
5
! J 49 I
5 J
5
!
5 & &
,
"
??9
9 &
5 9 0
!
# ! > "
&
&
9
&
!
9 !
.- ,. /
!
9 &
/
4
J - I (
,
"
= I = J 5
5 =
J K I (
5 5 5
&
! !9
)
",
#-9
5
&
,
&
,,
&
! 5 5 5 9 " . 4/9
5
9
&
>
0
&
,
&
9 >
&
0
J (
J .
/
9
>
.
/ ./ &
!
9 !
,
5 9 !
I
.- ,. / ",
9
9 &
9
&
, &
/
J - I (
!
J . /
./
,
"
= I = J 5
.M/ 5 =
. / .,
I . /
5
&
J K I (
!
J ./
.$/ 5 5 5
--
"
"
"
#->
&
! 9 0
9 "
4&
-+ " &
",9 & 4! I
(
J &
.
!9
&
,
./9
!&
",
/ !
5
&
9 &
, (
! 0
-+
& &
,
.$/
& %!9 &
0
!!
9
0
,
!9 &
7
9 4 &!9
4&
0
@ & 0
&
,
!
L &
&
&
,
&
&
&
. / , 9 ,
9 " 9
&
0&
! &
. / !
0
0
>
,
" . /9
4!
&
. 0
#-9
",/9
$
0&
0
9
>
9 > 0
&
. / ,,
9 &
. K /
"9 . K / & &
&!
&
9
&
&
&
&
! . /
"
-
H
#I ),!
9 0
"
&
)
.-/ , 9 & 0
& &
$ J # 9 " -9
,
& &
"
9 &
9 .-/
./9 " 0
5
& & .4 $ /# ! 5! 0
& ,
9
&
!
$ $ K # 9
&
,
&
&9 .-/
$ 9
)
9 &
&
,
9 0
&
9
0
! " 0
9
9 &,! .&!
/
0
#9
!
0
"
9
!
6
4& &
,
0
##9 "
3
&
! .4 $ /# ! - &
! $ $ K # 9 0
!
" &
!
#$> &
&
! ! &
4! %&
! &
! &
&! )
&
9 &
&
!
>
,
0
!
J 9
&
4 &
9
9 &
! & -
! 4&
, &
9 &
9 0
"
!
5
!
&
, .
&
&
!G& 9 0
&/9 & &
L &
,
0
"
&
! &
L
!:! !
!
,
$ >
&
,
&
- - - - -
- - -
- -
- - - -
- -
-
-
- - -
- - -
- -
- -
H
##I
3
&
4!
0
"
&
9
&
J 9
J (9 J
.- ,. / P 0
"
&
9 &
9
&
,
&
/
J - I
!
J . /
J I !: !: J . /
!
J - ! J -
./ !:!
, $ .. / K I / -
.
. / 2.!:! 9
/ . /
!
J
.$/ .4 $ /#
.(/ !:! !:! $
$ !:!
./ $ $ K #
!
!:! " -
.#/ .!:! 9
&/
. K /
%
9 0
./9
9 &
!9 !
&
& @
&
&!
,
&
"
&
9
&
&
!>
9
4&9
> & &
9 0
9
!
> !9
&
0
&
9
9 9
!
&
9
! &
!9
>
9
*
9
! &
H&
! &
,
&
, 0
5
"
& ! &
9 &
&
0
,
!
& 4! &
9
. / (
-+ J . K
K
/. K K ' /
L
0
"
&
&
&
&
,
&
)
./
,
&
&
>
4 0
0
9
5
"!
&
! "!
0&
!
0
9
&
0
&
!
0
"
5
&
9
!
4&
&
0
$ 9
, & ,
9
&
& > &
$ J # 9 &
./
9
5 &
&
> "
9
!
9 0
&
$
)
9 &
./ &
! "
9
,
$ 9 &
!
> & & "
9 &
5 !,
>
&
. K /9
&
9 " 0
&
,
),!
0
#'
*9 !:!
!
> $ & ,
> &
!
&
&
-(
"
H
#'I ),!
9 0
"
&
.- ,. / P 0
"
&
9 &
9
&
, &
/
J - I
$ -
!
J ./
J I !: !: J
./ 2.!:! 9
/
01
. / .!:! 9
&/
. K /
!:!
.$/ $ $ K #
.(/ 2.!:! 9
/ J -
!:!
./ $ $ K #
.#/ .4 $ /#
.'/ !:! !:! %
,
./ .!:! 9
&/
%
&
)
49
5
&
! 0
&9
&
&
)
&
9
. /
9 0
9 &
&! ./9
!
9
. K / 5 &
> & &
9 &
!& "
!9
,
.$/ 0
&
.
9
&
&
"/ )
4
&!9 0
.(/9
,9
> ,
./ &
./9
9 0
.#/9 !
9 0
./
0
!
9 &
*
4
"
-
- - - - - -
H
#I
3
&
4!
0
"
&
9
&
J 9
J (9 J
3
4& &
,
0
#9 &
!
&
0
,
0
"
&
! , &
5
0
,
&
>
&
&
!
9
"
9 &
,
&
! " &
&
> &
&
9
&
&
. / ! ,
.$/ & " 0
.
*/9
!
%& 4! &
4&
&9 0
&
0
"
&
9
&
,
&!>
9
&
$ 9
.
K
9
&/9 0
-#
"
.- ,. / P &
9 &
9
&
, &
/
J - I
!
J . /
./ 2. @ 9
/ . /
. / $ $ K @ .-/
.$/ .4 $ /#
.(/ @ .- I
$/ @ . I
/
@ .-/
&
J I
./ @ . / @ . / K $ K #
.#/ @ .
/ $ K #
.'/ . @ 9
&/
. K /
J K
I
./ $ $ K #
9 & @
5
&
9
&
&
5
0
./ !
!
5 &
& 0
.'/9 & "
)
!
,
&
>
&
, 0
&
9
$ J #
&
# &
& "
> 0
$ 9 & "
@ 9
&
5
&
5
!
"
!
&
9
&
& &
!
. /
&
,
!
$ 9 & 0
@ .-/ 5 ,
" 5
&
9 0
.$/9 . / ,
"
"
.##/ &9 0
.(/9
&
@ .0
9 &
5 &
@ /9
&
> ,,
9
0
./9
@
&
& ! 9 0
.#/9
& @ &
! ., !
/
P
. K
/9
. /9
&
0
! & @
5
& @ & &
! & 4&
&
9 0
./9 . / ,,
&
& &
! $
&
. K
0
/9 &
!
&9 0
9
& &
>
&
9
&
& 9 ,
&
9 &
9
!
9
& !
0
& & 4!9 &
&
&
>
&
. / &
,
./
$ 0
&
"
-'
7
!
& &
9
&
&
&
0
D -E
!
&
4
-] !
&
J
. K
/
6
& ! &
&
,
&
!
0
"
&
9
> !
&
9 4
&9
5 @ .
!
/ !
!
)
&
&
,
9
" !
$ 9
! &
>
$ !
& , !
$
&
, 0
&
!
. ./
$ /
I
.- ,. / P &
9 &
9
&
, &
/
J - I
!
J ./
./ 2.5 @ . I
/9
/
J I
. / $ $ K # 5 @ . /
.$/ .4 $ /#
.(/ 5 @ .- I
/ 5 @ . I
/
./ 5 @ .
/ 5 @ 5 @ %
.#/ .5 @ . I
/9
&/
J K I
!
J . /
J I
.'/ $ $ K # 5 @ . /
"
0
,
& 5 @ >
5
&,! I
> 4& &!
,
"! &,! - 6
&
./9 &
&!
,
0
./ & 5 @ 9
&, &
! $ 0
. /9 & , !
F 0
5 @ . 0
0 * #
-
"
&
/9 &
, "
"
5
.##/ &9 0
.(/ ! ./9 !
& 5 @ &
! !
&
& > &
9 0
.#/9
5 @ &
& ,,
. &
0 &
!
/
$ 9 "
5 @ > 0
!
&
&
.(/
5 @ > 9 0
,
./9 &
! 5 @ .-/9
&
. K /9
0
&
,
&
&
!
&
!9
!
9
9
&!
&
"
!
&
&
>
9
0
"
&
>
.
&
"!
&
/9
4&9 0
D(E
&
, 9 &
&
& @9 &
J --9
&
J (
#
& 4!> 0
9
&
J $
#(
0
"
" &
&
,
9
&
&
9 &
,
&
5
0
"
9
&
,
&
&
&
0
4
" 0
"
!
!
5
&
" &
.0
&
&
&
!G&
/ +&
,
&
&
0
"
!
4 0
, - ,. /
@
*!9 !9
!
9 0
&
5
.
#$/9
&!
! "
&
!
!
&
!
** **
"* "" ""
#* #" ## ##
** *" *# ** **
"* "" "# "* "" ""
#* #" ## #* #" ## ##
** *" *# ** *" *# ** **
"* "" "# "* "" "# "* "" ""
#* #" ## #* #" ## #* #" ## ##
H
#I +&
,
"
!
&
$ $9 &
J
0
",
#- !
# 7
9
&
,
&
0
&
,
!9 &
9
& &
3
&
&
&
9
",
5
&
,
"I &
9
& &
. / 0 ",,
5
&
9
", ,
)
&
9
&
&
&
9 &
,
I
! 9
& 5
, &
.##/
0
9 &
!
0
&
5
! ./9
&
&
9
!9
" ",
&
!
&
9
"
&
9 !
&
5
&
,
&
!
9
&
&
?
*?> 9
!
&
,
4
0
&
9
>
&
&
9 9
&
,
&
9 " &
)
& 9
!
6& . J
/9 .&
9 /I
6& J
#
.
. / J
/
- &
# &
5
9 "
$ 9
$ .J
#
6
/ J &
&
-
"
!
, 9
6& &
J ./
9 J .4 $ /# & &
&
!
#3%#$#!.
/
J K I
!
J
&
&
&
6& 6& K #
&
&
,> 0
J 9
&
,,
0 &
!
9 &
"
5
&
&
&9 ! &
&
I
.- ,. / &
9 !
/
J - I
.&
/ 0
&& I $ 6
.- ,. / &
9 9
&
, &
!
9 &
5
&
& /
!,, ! 6& -
J - I
!
J
!
J
&
./ 2.$ 9
/ J -
. / $ $ K 6&
.$/ .4 $ /#
.(/ . 9 */ J
./ #3%#$#!.
/
. J 9 &
.#/ 2. 9 /
.'/ . 9 */ J . /
./ K . /
&
6& >
9
0
./9
"
&
&
9
"
J K . /9
> 0
5
9
0
J K . K
/ 6& 9 &
&
&
&
9 0
!
.-/9 ./ ! . /> 0
"
!9 &
,
9 0
.$/ 9
!
.'/9 ./ ! .-/ &
0
&
>
$
&
& ,
"
4 &
& 4!
! &
&
!
0&
! 0
&
9
!
&
4 (.
/.( K ' / .
&
", (
! & &9 !
&/
9 & 4 &
! 0
&
9
& &
9
,
& & &
!
- -
;"*
$
-/ 7 % 7 * &
-
$ +%&
/
+
$
$
$
4
- 2 $
-
;"*
;"" 7 ; 7 8
' $
-
$
, +%&
;";
;"9
%
&
-
;";
$
, +%& ( 4 -
;"9 (
5-
$
- % +$
& -
+%&
(
J
>
#
,
,
- 9">
,
/ ,
%,
,
,
$ ,
& )
"**
#*8
"*8
7 "
$
,
" A ,
? ">
- ">
! +
>
5 >
5- +
5
>
,
, +
,
4
- ">
, ,
" > ,
.# 4
. >
1
-
,
4 "** **"
5-
***
"*" %
#*
$ *#&
J
,
, " 4
%
&
,
! % &?% &? # # # ?
% & 7 #
/,
-
,> - """> $
!
K 7 * 7 *
7 "
7 "
+
H
'I &&
&
&
$
K 7 " 7 *
7 "
7 *
K 7 "
K 7 "
K 7 * * "
K
)
-
4
,
23
$
,K23
7 * ! " %
$ 7 *& )$
$
23K,
7 # # #
7 ! 7 " ! " ! *
) /
23 1
$ ¼
¼¼
23
, ¼ 7 "
¼¼ 7 ?"
23 4 - ! 7 : 7 *"**
23 7 *"""
%
9 &> ¼ 7 *""* ¼¼ 7 "*** ¼ 7 *"*" 7 <
¼¼ 7 ""** 7 "#
/, -
!
"
7
" 7 * ! "
" % &
#
) % & 7 " $
0 - "
"
, "
# % &
)
+,
)
,
-
,
"
,
*
4 A
$ $
$
$
"
?
#
7 *
"
?
%, ? & ?
4 -
- .
-
" > - " - #
#
- 7 >
$
- 9#
+
>
- "
$ 9 - 8
$ <
7 , " A
%* " # # # "& % # # # &
7 # # # 7 7 "
7 # # # 7 7 *> , # # #
- # " A
*
# "
>
+
$
,
%
(
H
' I )
5*
0
9 &
*
&>
$
-
! * * ¨
# " ¨
-
4
$
- : 7 ""*
7 *"" +
/,
8> 7 "*"
-
! %* " #& %* # "&> - 8"*
,
$ *
# " 7 *"" - :
*** "** "*" """ *"">
$
*** *"* *"" """ "*">
$ 7 ""*
, ""* "** "*" **" *"" 4
- %* " #& %" # *&
$
, *** *"* ""* """ "*">
""* "**
*** **" *""
B
-
,
- %
&
- ? #
- , -
-
,
& A
-
,
7 * # # # * " ## # ">
$ ,&
,
J
! !
, ! - "
)
% &
>
-
4
% &% & 7 % &
4 ! .
5-
%, ? &
.
>
,
-
1
-
-
4 / ! - %.&#
> $
,
-
,
% "&
5 ,
5-
>
-
, -
4 -! -
,
-
J
$
,
% "& %
$
"
> 5-
5
,
, &
5
.
%.&#
/
4
,!
, ,
% "& $
.
/ ,
!
1
J
5
# 7 % ?"&
% ? "& 4
, -
,
4
.
. ,
2 . %
&> . ,
$
.% "&
5 ,
- 8""!
"
7 *
"
% & %
-&
#
#
" %
-&
#
7 #
% &
8
" % &
#
7 # ? "
%
-&
&
% ? &&
B$
>
#" -
88 % ?
"&
% "&
6-
!
"
7 *
7 *
"
% & %
-& %
& % 5
&
#
7*
"
#
" %
-&
#
% 5
& %
&
"
7 #
% &
#
" % &
#
% 5
& %
&
"
7 # ? "
%
-&
8
7 *
"
#
" % 5
&
7 #
%
&
#
" %
&
7 # ? "
% 5
&
#
6
, >
,
- %
, %*&& $
, % ? &
) ! !
$ , " ) -
$
5 $ ! !
$ , "
% &> !
,
%*&
%*&>
,
5
! !
6-
$
!
" 7 * ! "
" !
$ , "
% & %+" 7 *&
# 7 * ! "
"
" 7 * ! "
"
! 7
% %! ? &
&
# 7 * ! "
"
!
% % ? &
&
-
>
>
#""
#"#
#"""
5
$
,
!
5
!
! %
,
%*&&> $
,
%! ? &
%
%*&> $
, 88"8& 4
5
$
#"#"
$
% %! ? ? ! &
7
% ? &
&
, -
8#
5 %$ - 8"*&
/ )
$
$
'
5
)
5 $
6
,
>
5
,
-
6
-
-
4
/, -
8: 4
"+
-
%
,
$
/, -
&
)
" %
,
& ) /
#>
5
> $
5
- %
- &
!
/
>
$
) "+
- /, %-
- -
8#"& ) /
,
,
>
"#::
-
"#==
- > $
% $
-&>
- /, -
'
-
" 7 * ! #
"
%
& %
-&
-
5
$
>
5
>
1
+
5
- %
&
)
"+
,
- 8""
5
-
+
,
- $ #
$ % ? "&#
/, -
5 - 8#8
5
?
$ ?
4
5
%# #&
%# *&
5 7 #
?
>
%# *&
, $
)
/ ,
5 %# "&
%* "&
5 7 "
? >
%* "&
,
B
, 4
, -
,
- 8"8
% $!
-
$&
-
! % & ? %
&% & 7 % & ? % &% & 7 % & 4 % & 7 %#& % & 7 #
& ,&
+
/ ,
-
,
,
&
!
-
5
* 6
,
*
,
$ %, ? & %
+ ,
&
6
,
>
5
/
$ % /
&
-
, $ /
+
5
-
+ ,
4
,
$
/ ,
5
>
B $
/ ,
5 -
-
/ ,
# , ? %:&
)
">
5
$
)
"+
%
&
"
-
/
!
7
7
$
>
7
7
- %&
-
,
>
-
%
&
-
, -
1
4
- ***
""*
! *** **" "*" """ ""*
***
*"* ""* *** "** ""*
)
5
>
,
- "
# - #
7
7 %
- & A
%& 7 %
- &
%
- &>
>
%
-%
- && 7 %
-
-
- & 7 %
- & 4
%
- &
$ %&
A 5
$
- -
,
$
+
$ ,
- # %!
$ -
#&
5
,
#
# 7 *
, """ 6-
!
" 7 " !
-
"
# 7 *
" ?
6
#
# ? # $ /,
" 6 -
7
, %
, 7 # 6&>
$
$
-
:8
,
,
J
$
?>
$,
%
# 7 *& $
$
$
A
-
-
$
! 6
,
,
7
,
$
-
-
4
>
6
! L%& "M(
(
% &
%, ? &
-
:8 ,
$
4
,
,
$
-
A
%,
- 8""&
> #(
, ?
D %4
-
$,
>
/
$
, $
&
$ % "&(
%#&%, ? &
#(
4
/,
%
$
$
$
$&
+ %#&(
)
$
,
1
#
/,
,
/, ,
, ? >
A
6
#
->
,
>
-
, :89>
>
-
4
- ,
-
5
6
$ %#&, ? %#&
,
-
4 ,
-
% ?"& #
/ -
A 7 ? # >
23
$
-
$
,K23! 7 %$ &
,
& 7 " 7 *
7 7 ! 6 7 .
7 .
4
# ! 7 * %
$ /
&
,& 7 * 7 /
!> !
6 7
. 7 7 %
7 N N&>
7 .
7 7 >
"
! "
#
! 7 *
)
##
#8
!
##
7 "
? - ? -
#8
- - ?
B
!
+ /,
%
&
-
,
$ + /,
,
-
? $,
+ /,
4
$
J
$ # ? #
-
BC 6
7 # >
7 #
7 # B BC 6 -
!
" 7 " ! % "
" ! 7 ! # ! % ? "& "
" ?
# 7 " ! ? "
"
#
" ! % " ?
# ?
8
7 *
?
) ,
#>
,
-
:"*
,
!
7 %% ?? && ?
? % ? &
% ? &
4
6
-
:"*> ,
4
? 7
#> 7
7 % &
# H
)>
,
6-
B BC 6 # 7 #!
" 7 " !
-
"
#
" ?
#
7 *
0
?
8 7
- ! " ! "
"
#
" 0 0 0 0 ?
6
0
$ >
$ 0 7 *>
0 ) ,
>
,
,
0
- /
>
$,
$
7 ?
%:<& )
/
7 ? 4
-
:@
%/$
&
%/$
& 6-
!
" 7 * ! "
"
%%¼ ¼ & & %% & &
#
7 "
" ¼ ? ¼
8 ¼ ? ¼
-
:@
$
, "O#
: % ? "&
)
6'6I
,
+
! 7 ! % ? "& ">
%! !& %!& %!& '
-> $
0 $,
-
% $
&
0
-
!
" -%!& %!& ! 0 %&
# 7 * ! "
" -%!& -%!& ? %! &0
#
"
" %0
-&
# %0¼ &
8 % ? "&
: ! % ? "& "
< 0 0¼ 0 7 %&
)
$
+
! %?"& " %% ? "& " &
4
% ? "& " %% ? "& " & %H $
/$
$
&
)
-
:";
:"=
/+
, ) $
) -
:";
"
%
&
$ , ? ) -
:"=
- " %- +
&
, ? 6 $ -
,!
-
:"= :";
6-
$
/ ,
-
% &> -
/ ,
$ $
% (&
I -
<" $
,
!
$
" 7 " !
-
"
#
#
" &'%# # %# ? "&& ?
7 #
,!
%& 7 # ? : ? # # # ? # ? " ? ## # ? " 7 ?
- "
(
8
!
! ! ? "
"
8
/
->
-
!
> !
-
>
-
>
/ , )
$
>
$
/ , J
6
-
$ 6-
% /+
&
$ * " " #
$ * * " 8 - *
* - "
8
1 - #
-
<@ ( ) "!
"
*
* - * #>
" " #
" 8
) #! ,
" -
8 #>
$
-
-
B
! $
- #
- $
-
$
6 ,
-
$
5
$ >
+
-
, $
*! *
" (
$- )
- % $
%
-
&
- +
- %-
$
&
-
<@
%
+ 6
% + "
!
$
%
+ "
$
- -
<< ,
-
, 2
-
>
, -
,
- %
$
&
)
! -
-
$
6-
%"&
%;&
6- -
, - %
%#&
%8&& -
, A
-
-
> ,
- -
,
%
%:& $ -
<<& '
%<&
$
%
- &
$ %& %
-
<=&
)
-
<@
6
%
-%&&
%
&
J
7 >
!
" * * ! *
#
"
? "
#
? "
8 ! ! ? "
8
! ? -
$
"
? "
#
? "
8 ! ! ? "
'
$
'
,
2 7
,
7
7 >
>
/ ,
7 7
$
,
,
,
4
/ - /3+IG
P
G+/P
$
5
-
$ ¼
5>
%
-
,
& B$
$ +
- >
,,
%%£ & £
$ £ £
£ £ 4 %%£ & £ £ %%£ &
£ !%£ &
£ £
!%£ & 7 %%£ & " % + £
£ & %<#&
$
-
% "
7 ? " & %
$
& B
,
%
7
$
&
*
"
>
$
- >
$
1 $
*
$ $
"
$ -
"
*
#
"
8
7
% &
6
- $ ,
6-
B BC 6
4 4
7
%:&
7 " 7 * 7 " )
%;&
%<&
!
!
-
4
$ %
- &
$
1
!
%<& %8&
$>
-
+
#
./ ./ ./
H
'$I +!
&
./
9 ./
&
!
./
!
A * 7 " $ 7 - # # # - 4
* 6- " >
$,
$
4 - 7 %% & 7 * * ? %% & 7 *
4 - 7 - 7
%% & 7 %%& - 7
%%& 7 % %% & 7 ! ? "
4
H +
-
>
1
5
)
#
/$
'
$
* ¼
/ ,
, * $
B
$
,
!
2 2¼ $
-
$
4 %
- 2 &
%
&
$ )
5 B BC 6
' ! %! 7 " ! " ! *&
- ) 7 #
-
$ # $ - $
>
K -
$
K
4
#
$ -
$
>
$
4
, )
> $
> )
#
J / - $
B$
-
<@
%$
, <#<&
$ " # # # "
+
- +
" >
# # #
$ % 7 * 7 &
" 7 " !
-
" ! 7 * ! # "
" # ! # %#! ? "&
$
-
$
? ?
'
+
$ -
" %
+
$ $
&
H $
A
-
7 " #> ! ";
#9 ! "8
#8 ! "*
##
! $ 7 "* "8 "; ## #8 #9>
$
-
% "& 7 " # ";
#8>
/
) $ $ "; 9
"8
6-
% 7 # &!
"
$
"
# 7 * ! "
"
7 "
" %" &
#
%" ¼ & " " " ¼
8
! /
4
$
$ ?" ,
- * '
5
,
%
# % "& # >
-& J
% &
%
- & A -
<#9
#
-
,>
$
>
>
,
$
%
- - - - - -
$
$ $
$ $ $
H
'(I &
&
&
&
)+
" * 3 "
#
7 3
" 7 % ? 3 &#
#
3
8
? "
$ -
)
$ ,
-
-
$
$
, %
-
& H
$
"
4
> $
$
Q>
! "
" -
# Q ! " % "&
3 % ? "&
8
7 3
" Q % & ! ! ? " 3Q % &
#
3Q 7
% "&
8
3 %3 ? "&
- <@ +
-
%
B BC 6&>
-
$ - 9:
%$
-
,&
J $
-
<#= $
- ,
$ ,
-
>
*
#
" ! 7 * ! "
" 7 ! ! " ! *
"
# ? # #
# ? #
8
7 *
&'% &
:
&'% &
$ #
$ 7 %#& >
+
$ 6
,
#
$
-
, %
-
<8*& 4 5
-
% &
% &
%
,
& J
?
- ? %
- "& ?
- 7 %%&
- &#
# #
- # ? # :
%<9&
%&
- %
&
4 -
<8"
,
,
$
$
# #
- # ?
#
- ?
-
# #
>
!
-
4
%<=&
6
6-
>
$
- 7 7 4
$ $
$
> $
!
! 6
" 7 # # # $ # ? !#
$ 7 # # # $
# ? !#
4 %# ? !#& %# ? !#&
$ $
*
"
# %# #
*
"& 4
*
"
$ *
5
4
#
&'% & $
*
!
7 * " " " # # # 7 * * " " # # # 7 * * * " # # #
7 * " " " # # # 7 * " " " # # # 7 * " " " # # #
- 9< %
-&
,
- >
,
-
#>
+
%
- &>
'
/ )4
,
-
% ,&
-
>
,
/,
$ /
1
%
&
$
!
! %
-
$
$-
H
'I R
&
5&
I
!
&
!>
$
5
!
" " * " " # # # " " * * " # # # " " * * " # # # " " * * " # # #
" * * " " # # # " * * " " # # # " " * " " # # # " " * * " # # #
4
$
"
&'%& $
$
4
,
%
-&
%
- 9:&
7 #
$ -
- D 4 D
- D 7 %
- & 7
-
,
$
$
$$
L"9M 4B F/ % &
$$ +,- $ " %$
6
+C
3 "@98
L"=M F
G /- --
-
8#%"*&!@:#K@:; "@=8
L"@M ' S
/
0
H I
-
+
03,
8=%@&!"#:@K"#;= "@=@
L#*M 2 ' A
6 -
$
4
,+
3 +
# !
@%8&!:=<K<*# 3 "@==
L#"M 2 ' A
6 JP /
$- - 3
4
,+
3
-+
-
# !
"*%#&!8=#K8@;
/ "@=@
L##M I
0 ,
-/ B ,-
)
JP
G 6
/
$
9!#<9K#=# "@@*
L#8M Y 0 / 4
6/
$ ""!"8"K"<* "@=@
L#:M 0 / S /X
- ,3 - - !
":!8;"K89# "@@#
L#<M ZA
I C- )
$ 03,
+ -
+
'G+I
/
!
"*!";9K"=" "@@*
L#;M I C- 03WG
) )
#
.- / -
#@#K#@@
)6 "@=9
L#9M V
- I
P - +
- P/ 6
--
- :%<&!<<@K<;< "@@8
$(
Arpad GELLERT
Adi-Cristina MITEA
Aplicaţii
Cuprins
2
1. Operaţii I/O
Un flux de intrare/ieşire (I/O) furnizează calea prin care programele pot trimite o secvenţă de
octeţi de la o sursă către o destinaţie [7]. Un flux de intrare este o sursă (producător) de octeţi,
iar un flux de ieşire este o destinaţie pentru octeţi (consumator). Deşi fluxurile I/O sunt deseori
asociate cu accesul la fişierele de pe disc, sursa şi destinaţia unui program pot fi, de asemenea,
tastatura, mouse-ul, memoria sau fereastra de afişare [9].
Pentru citirea de la tastatură [7], pot fi folosite clasele DataInputStream sau BufferedReader. Cu
DataInputStream citirea se face în felul următor:
În următoarea secvenţă citirea de la tastatură a unui şir de caractere se efectuează folosind clasa
BufferedReader:
Conversia unui şir de caractere str într-un întreg se poate realiza folosind funcţia statică parseInt
a clasei Integer:
int i = Integer.parseInt(str);
3
Citirea unui şir de caractere de la tastatură în C# se face cu funcţia readLine:
În exemplul următor, se afişează pe ecran toate liniile citite din fişierul input.txt.
4
Procesul de separare în simboluri
Biblioteca Java util defineşte clasa StringTokenizer care facilitează separarea unui şir de
caractere în simboluri. Trebuie creat un obiect StringTokenizer, specificând şirul şi delimitatorul.
Următoarea secvenţă de program afişează pe ecran simbolurile şirului delimitate prin caracterul
spaţiu.
În C# un şir poate fi separat în simboluri folosind funcţia Split a clasei string. Următorul
exemplu procesează un fişier întreg:
Următoarea secvenţă de program scrie în fişierul data.txt întregul 10 şi float-ul 3.14, apoi citeşte
aceste valori din fişier şi le afişează pe ecran.
try{
FileOutputStream fos = new FileOutputStream("data.txt");
DataOutputStream dos = new DataOutputStream(fos);
dos.writeInt(10);
dos.writeFloat(3.14f);
dos.close();
}
catch(IOException ioe){
ioe.printStackTrace();
}
5
try{
FileInputStream fis = new FileInputStream("data.txt");
DataInputStream dis = new DataInputStream(fis);
System.out.println(dis.readInt());
System.out.println(dis.readFloat());
dis.close();
}
catch(IOException ioe){
ioe.printStackTrace();
}
Următoarea secvenţă de program scrie în fişierul data.txt şirul de caractere “Hello World!”, apoi
îl citeşte din fişier şi îl afişează pe ecran.
Aplicaţii
6
2. Fire de execuţie
Un fir de execuţie (thread) este o secvenţă de instrucţiuni ale unui program executabil.
Firul de execuţie principal este metoda main şi atunci când acesta se termină, se încheie şi
programul. Programele pot executa în paralel două sau mai multe fire de execuţie, dar în
realitate un singur fir se execută la un moment dat, comutând controlul de la un thread la altul
[9].
Pentru implementarea unui fir de execuţie în Java, se poate extinde clasa Thread.
Deoarece Java nu acceptă moştenirea multiplă, în cazul în care a fost deja extinsă o clasă, pentru
crearea unui fir de execuţie trebuie implementată interfaţa Runnable. Indiferent de metoda
utilizată, se suprascrie metoda run care trebuie să conţină instrucţiunile firului.
Aplicaţia următoare porneşte două fire de execuţie: unul pentru afişarea numerelor şi
celălalt pentru afişarea literelor. Pentru a observa diferenţele dintre cele două metode de
implementare, firul de execuţie Numbers extinde clasa Thread, în timp ce Letters implementează
interfaţa Runnable.
Pentru setarea priorităţii unui fir se apelează metoda setPriority a clasei Thread. De asemenea,
pentru a afla prioritatea unui fir se foloseşte metoda getPriority. Pentru suspendarea unui fir de
execuţie pentru o perioada de timp precizată în milisecunde, se utilizează metoda sleep a clasei
Thread.
7
Pentru implementarea unui fir de execuţie în C# se foloseşte clasa Thread. Următoarea aplicaţie
de tip Console Application porneşte două fire de execuţie: unul pentru afişarea numerelor prin
funcţia numbers şi celălalt pentru afişarea literelor prin funţia letters.
Pentru blocarea unui fir de execuţie pentru o perioada de timp precizată în milisecunde, se
utilizează metoda Sleep a clasei Thread. Firul de execuţie poate fi oprit temporar cu funcţia
Suspend, repornit cu funcţia Resume, respectiv oprit definitiv cu funcţia Abort a clasei Thread.
Lucrul cu imagini
Pentru a trasa o imagine în cadrul unei componente (ex. fereastră), trebuie obţinut
obiectul Graphics al componentei respective [4]. În aplicaţia următoare s-a implementat o
animaţie simplă: deplasarea unei bile pe orizontală. Deplasarea bilei se face pe fir de execuţie.
Aplicaţia Java este formată din două clase: Ball şi MyFrame. Înainte de a muta bila pe noua
poziţie, ea trebuie ştearsă de pe poziţia veche, şi de aceea, pentru un scurt timp bila dispare de pe
fereastră. Din această cauză apare o pâlpâire în timpul deplasării. Pentru eliminarea acestei
pâlpâiri se poate implementa tehnica double buffering: desenarea se face mai întâi într-un buffer,
8
şi apoi se copiază conţinutul bufferului pe fereastra aplicaţiei [4]. Clasa Ball, instanţiată în clasa
MyFrame, are următoarea structură:
public Ball(MyFrame parent, int px, int py, int size, Color color) {
this.parent = parent;
this.px = px;
this.py = py;
this.size = size;
this.color = color;
buffer = parent.createImage(parent.getSize().width, parent.getSize().height);
}
void paint(){
Graphics gbuffer = buffer.getGraphics();
//se deseneaza mai intai in buffer (tehnica Double Buffering)
gbuffer.setColor(Color.white);
gbuffer.fillRect(0, 0, parent.getSize().width, parent.getSize().height);
gbuffer.setColor(color);
gbuffer.fillOval(px, py, size, size);
parent.paint(gbuffer);
//se copiaza imaginea din buffer pe fereastra (tehnica Double Buffering)
Graphics g = parent.getGraphics();
g.drawImage(buffer, 0, 0, parent.getSize().width, parent.getSize().height, 0, 0, parent.getSize().width,
parent.getSize().height, parent);
}
public MyFrame() {
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
setVisible(true);
ball = new Ball(this, 20, 50, 20, Color.red);
ball.start();
}
9
private void jbInit() throws Exception {
this.setSize(new Dimension(400, 300));
this.setTitle("Balls");
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(WindowEvent e) {
this_windowClosing(e);
}
});
}
void this_windowClosing(WindowEvent e) {
System.exit(0);
}
}
Aplicaţia C# de tip Windows Application este formată din două clase: Ball şi MyForm. Clasa
Ball, instanţiată în clasa MyForm, are următoarea structură:
public class Ball
{
int px = 0;
int py = 0;
int size = 0;
Color color;
MyForm parent = null;
Thread bthread = null;
public Ball(MyForm parent, int px, int py, int size, Color color)
{
this.parent = parent;
this.px = px;
this.py = py;
this.size = size;
this.color = color;
bthread = new Thread(new ThreadStart(run));
bthread.Start();
}
10
public void terminateBallThread()
{
bthread.Abort();
}
public MyForm()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
this.BackColor = Color.White;
ball = new Ball(this, 0, 50, 20, Color.Red);
}
Atenţie, fişierul MyForm.cs se va genera automat, urmând să-l completaţi conform clasei
MyForm de mai sus. Evenimentelor Load, Paint şi FormClosing trebuie asociate funcţiile
corespunzătoare (MyForm_Load, MyForm_Paint şi MyForm_FormClosing) în
Design/Properties/Events!
11
În aplicaţia C# tehnica double buffering se activează setând pe True proprietatea DoubleBuffered
în Design/Properties.
Aplicaţii
1. Să se dezvolte clasa Ball din aplicaţia prezentată pentru modelarea mişcării unei bile
folosind următorul algoritm:
gravy = 1;
speed = -30
speedy = -30;
speedx = 0;
while(true){
speedy += gravy;
py += speedy;
px += speedx;
paint();
if(py > frameheight){
speedy = speed;
speed += 3;
}
if(speed == 0) break;
}
2. Să se modifice clasele MyFrame şi Ball în aşa fel încât să poată fi pornite mai multe bile
simultan.
3. Să se realizeze o aplicaţie care să afişeze reclamele, câte 5 secunde fiecare, într-o buclă
infinită. Fiecare reclamă are o anumită prioritate şi în funcţie de aceasta, ea apare cu o
anumită frecvenţă. Căile imaginilor şi priorităţile acestora vor fi preluate dintr-un fişier.
Pentru încărcarea unei imagini în Java se foloseşte metoda getImage a clasei Toolkit. Una din
metodele de a obţine obiectul Toolkit este prin folosirea metodei statice getDefaultToolkit a
clasei Toolkit. Pentru preîncărcarea imaginilor în memorie, se foloseşte clasa MediaTracker.
Metoda waitForId a clasei MediaTracker permite încărcarea imaginilor care au un anumit ID
(mai multe imagini pot avea acelaşi ID). ID-urile se setează la adaugarea imaginilor în obiectul
MediaTracker. Metoda waitForAll încarcă în memorie toate imaginile adăugate în obiectul
MediaTracker. Dupa ce imaginile au fost încărcate ele pot fi desenate pe orice componentă
folosind metoda drawImage a clasei Graphics. Următoarea secvenţă de program încarcă două
imagini:
12
MediaTracker mt = new MediaTracker(this); // this - fereastra
imgA = Toolkit.getDefaultToolkit().getImage(“A.gif”);
mt.addImage(imgA, 0);
imgB = Toolkit.getDefaultToolkit().getImage(“B.gif”);
mt.addImage(imgB, 0);
try{
mt.waitForAll();
}
catch(InterruptedException e)
{
e.printStackTrace();
}
Pentru încărcarea unei imagini în C# se poate folosi clasa Bitmap, iar desenarea imaginii pe
fereastră poate fi efectuată cu funcţia DrawImage a clasei Graphics. Pentru asta, trebuie obţinut
obiectul Graphics al ferestrei sau al componentei pe care se doreşte să se afişeze imaginea:
13
3. Sincronizarea firelor de execuţie
Există mai multe metode de sincronizare a firelor de execuţie [2], cea mai frecvent
utilizată fiind sincronizarea prin semnalizare. În continuare, va fi prezentată o aplicaţie simplă,
rezolvarea ecuaţiei de gradul 2.
Dacă în cadrul unui program Java există un fir de execuţie care creează (produce) date şi un al
doilea fir de execuţie care le prelucrează (consumă), de regulă se declară un bloc synchronized,
ceea ce permite ca un singur fir să aibă acces la resurse (metode, date) la un moment dat. Astfel,
sincronizarea se face prin aşteptare. Atunci când un fir de execuţie apelează wait în cadrul unui
bloc de cod synchronized, alt fir poate accesa codul. Iar atunci când un fir de execuţie încheie
procesarea codului synchronized, el apelează metoda notify pentru a anunţa alte fire de execuţie
să înceteze aşteptarea. În cazul rezolvării ecuaţiei de gradul 2 – aplicaţie prezentată în continuare
– firele tx1 respectiv tx2 aşteaptă notificarea firului tdelta:
public Ec2() {
tx1 = new Thread_X1(this);
tx2 = new Thread_X2(this);
tdelta = new Thread_Delta(this);
tx1.start();
tx2.start();
tdelta.start();
}
14
public synchronized void x1(){
if(d == null){
System.out.println("tx1: waiting...");
try {
this.wait();
}
catch (InterruptedException ie) {
ie.printStackTrace();
}
}
x1 = (-b * +Math.sqrt(d.doubleValue())) / (2 * a);
System.out.println("x1 = " + x1);
}
15
public class Thread_X2 extends Thread{
Ec2 ec2;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace ec2
{
class Program
{
static void Main(string[] args)
{
new Ec2();
}
}
public Ec2()
{
Thread tx1 = new Thread(new ThreadStart(ComputeX1));
Thread tx2 = new Thread(new ThreadStart(ComputeX2));
Thread tdelta = new Thread(new ThreadStart(ComputeDelta));
tdelta.Start();
tx1.Start();
tx2.Start();
Console.ReadLine();
}
16
public void ComputeDelta()
{
d = b * b - 4 * a * c;
Console.WriteLine("delta = " + d);
Console.WriteLine("tdelta: sleeping");
Thread.Sleep(5000);
Console.WriteLine("tdelta: ready");
deltaReady.Set();
}
Aplicaţii
1. Să se implementeze aplicaţia prezentată în lucrare.
2. Să se implementeze cazul clasic de partajare a datelor: problema producător/consumator.
3. Să se implementeze o aplicaţie vizuală: sincronizarea liftului cu locatarii într-un bloc,
sincronizarea călătorilor cu o linie de autobuz.
17
4. Aplicaţii client-server
Reţelele fac posibile multe tipuri noi de aplicaţii, deoarece nu mai este necesar ca un
singur calculator să execute totul [4]. În cadrul unei reţele, câteva calculatoare, denumite
servere, efectuează activităţi specializate în folosul altor programe. Serverul este un program
specific care rulează în mod continuu, cu unicul scop de a furniza un serviciu altor programe.
Clientul, pe de altă parte, este un program care primeşte servicii de la un server.
Pentru a scrie aplicaţii client-server [14], trebuie create două programe: clientul şi
serverul. În cadrul acestor programe, trebuie definit modul cum comunică cele două programe,
modul de interacţiune dintre ele. Regulile de comunicare pe care trebuie să le respecte ambele
programe. Se numesc protocoale.
Atunci când două aplicaţii trebuie să comunice, ele trebuie să se găsească reciproc. Dacă
două aplicaţii îşi cunosc reciproc soclul, ele pot crea o conexiune de soclu. De obicei este
responsabilitatea clientului să caute serverul iniţializând o conexiune de socluri. Serverul creează
un soclu pe care îl va utiliza pentru comunicarea cu clientul şi îşi transmite propria adresă de
soclu către aplicaţia client în primul său mesaj de răspuns [15].
Pentru implementarea aplicaţiei client în Java, se foloseşte clasa Socket precizând IP-ul
respectiv portul serverului. Pentru crearea unui server în Java, se foloseşte clasa ServerSocket,
precizând portul serverului. Apoi serverul apelează metoda accept pentru a aştepta conectarea
unui client. Atunci când un client lansează o cerere de conectare, metoda accept returnează
soclul clientului (obiect prin care se va realiza comunicarea dintre cele două aplicaţii). În
aplicaţia următoare, clientul trimite o valoare serverului, iar serverul primeşte valoarea şi o
afişează. Aplicaţia se va testa pornind prima dată serverul şi apoi clientul.
public MyClient() {
try {
clientSocket = new Socket(“localhost”, 8000);
sendInt(100);
}
catch( UnknownHostException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
18
public void receiveInt() throws IOException{
in = clientSocket.getInputStream();
DataIn = new DataInputStream(in);
int val = DataIn.readInt();
System.out.println(val);
}
public MyServer() {
Thread thread = new Thread(this);
thread.start();
}
19
public static void main(String args[]){
new MyServer();
}
Pentru implementarea aplicaţiei client în C#, se foloseşte clasa TcpClient precizând IP-ul
respectiv portul serverului. Pentru crearea unui server în C#, se foloseşte clasa TcpListener,
precizând portul serverului. Apoi serverul apelează metoda AcceptTcpClient pentru a aştepta
conectarea unui client. Atunci când un client lansează o cerere de conectare, metoda
AcceptTcpClient returnează soclul clientului (un obiect de tip TcpClient), prin care se va realiza
comunicarea dintre cele două aplicaţii. În aplicaţia următoare, clientul trimite o valoare
serverului, iar serverul primeşte valoarea şi o afişează. Aplicaţia se va testa pornind prima dată
serverul şi apoi clientul.
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Threading;
namespace client
{
class MyClient
{
TcpClient client = null;
NetworkStream stream = null;
StreamReader streamReader = null;
StreamWriter streamWriter = null;
public MyClient()
{
client = new TcpClient("localhost", 8000);
stream = client.GetStream();
streamReader = new StreamReader(stream);
streamWriter = new StreamWriter(stream);
sendInt(100);
stream.Close();
client.Close();
}
}
}
20
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.IO;
using System.Threading;
namespace server
{
class MyServer
{
TcpListener server = null;
NetworkStream stream = null;
StreamReader streamReader = null;
StreamWriter streamWriter = null;
public MyServer()
{
Thread thread = new Thread(new ThreadStart(run));
thread.Start();
void run()
{
server = new TcpListener(8000);
server.Start();
while (true)
{
TcpClient clientSocket = server.AcceptTcpClient();
new MyServer(clientSocket);
}
}
}
}
21
Aplicaţii
1. Să se implementeze aplicaţia prezentată în lucrare.
3. Realizarea unei aplicaţii client-server pentru listarea fişierelor text la imprimantă. Aplicaţia
va avea următorul protocol de comunicare:
Server Client
arhivare fişier (ZIP)
dimensiune ZIP
listare la imprimantă
Aşa cum se poate observa în secvenţele următoare, arhivarea şi dezarhivarea se vor face folosind
clasele ZipOutputStream şi respectiv ZipInputStream. Pentru listarea fişierului la imprimantă se
poate folosi clasa PrintJob.
SERVER (dezarhivare)
try{
FileInputStream fileIn = new FileInputStream(zip);
FileOutputStream fileO = new FileOutputStream(numeFisier);
ZipInputStream zipIn = new ZipInputStream(fileIn);
zipIn.getNextEntry();
int m;
while((m = zipIn.read()) != -1)
fileO.write(m);
fileIn.close();
fileO.close();
}
22
catch(ZipException e){
System.out.println(e.toString());
}
CLIENT (arhivare)
try{
FileInputStream fileIn = new FileInputStream(fisier);
FileOutputStream f = new FileOutputStream(zip);
ZipOutputStream zipOut = new ZipOutputStream(f);
zipOut.putNextEntry(new ZipEntry(fisier));
int m;
while((m = fileIn.read()) != -1)
zipOut.write(m);
zipOut.close();
fileIn.close();
f.close();
}
catch(ZipException e){
System.out.println(e.toString());
}
Listarea la imprimantă
Pentru listarea la imprimantă în C#, există componente vizuale în Toolbox, în categoria Printing.
6. Să se dezvolte aplicaţia 5 prin introducerea unei strucuri de tip buffer, care să reţină
rezultatele celor mai frecvente operaţii efectuate. În cazul in care rezultatul unei operaţii este
găsit în acest buffer, operaţia respectivă nu se mai efectuează, rezultatul transmis aplicaţiei
client fiind cel din buffer.
23
Indicaţii pentru aplicaţia 7
Aplicaţia va fi formată din programul server respectiv programul client. Clientul va avea o
interfaţă grafică (Figura 2) formată din următoarele componente: lista clienţilor conectaţi, lista
de mesaje, căsuţă de editare pentru introducerea mesajelor, buton SEND pentru trimiterea
mesajului introdus către clientul selectat. Recepţionarea mesajelor se va face într-o buclă infinită
implementată pe un fir de execuţie.
Client 1
Client 2 Lista de mesaje THREAD
while(true)
Client k RECEIVE MESSAGE
Client n
Aplicaţia server, prezentată în Figura 3, păstrează clienţii (soclu, nume, etc.) într-un vector.
Pentru fiecare client conectat creează câte un fir de execuţie (thread) care, într-o buclă infinită,
recepţionează mesajele de la clientul respectiv şi apoi le trimite mai departe clientului destinaţie.
Conectarea clienţilor se face la fel ca în aplicaţia prezentată în lucrare. La conectarea unui nou
client serverul trebuie să anunţe toţi clienţii pentru actualizarea listelor de clienţi. De aceea, în
afară de mesajele propriu-zise vor exista şi mesaje speciale (de administrare) pentru adăugarea
clienţilor conectaţi respectiv ştergerea clienţilor deconectaţi. Diferenţierea dintre cele două tipuri
de mesaje se poate efectua prin utilizarea unui antet (header) în cadrul mesajului.
Client 1 Client n
THREAD THREAD
24
5. Conectarea la o bază de date MySQL
JDBC (Java Database Connectivity) este o interfaţă API (Application Program Interface)
realizată de Sun, care permite unui program Java accesul la un SGBD (Sistem de Gestionare a
Bazelor de Date). JDBC permite conectarea la baza de date şi execută instrucţiunile SQL.
Proiectul conţine două clase principale: DBConnection şi DBFrame. În constructorul
clasei DBConnection se încarcă în memorie driverul necesar pentru realizarea unei conexiuni la
o bază de date MySQL:
Class.forName(driver);
unde IP este adresa IP a calculatorului pe care se află baza de date database şi pe care trebuie să
fie pornit un server de MySQL. Pentru testare locală, în loc de IP se foloseşte localhost. În cazul
unei baze de date locale adresa IP nu trebuie precizată:
import java.sql.*;
public class DBConnection {
private String driver = "org.gjt.mm.mysql.Driver";
public Connection con = null;
DBConnection va conţine şi metodele prin care se vor insera date în tabele sau metodele
prin care se vor interoga aceste tabele. Toate aceste operaţii se vor realiza prin intermediul unui
obiect Statement:
Aşa cum se poate observa în următoarea secvenţă, obţinerea rezultatelor unei interogări se
realizează prin intermediul unui obiect de tip ResultSet:
25
În constructorul clasei DBFrame se creează un obiect de tip DBConnection, prin
intermediul căruia va putea fi apelată oricare din metodele acestei clase:
try{
connection = new DBConnection(nume_baza_de_date, nume_utilizator, parola);
}
catch(Exception exc){
exc.printStackTrace();
}
Observaţie:
Pentru conectarea aplicaţiei la un server MySQL, în proiect trebuie inclusă librăria care conţine
driverul de MySQL: mm.mysql-2.0.12-bin.jar. Dacă lucraţi cu Java Builder, librăria se încarcă
din “Project\Project Properties\Required Libraries”.
using MySQLDriverCS;
using System.Data;
MySQLConnection myConn;
MySQLDataReader MyReader = null;
try
{
myConn = new MySQLConnection( new MySQLConnectionString("123.456.789.100",
"mydatabase",
"user",
"pass").AsString );
myConn.Open();
string sql = "SELECT * FROM Table";
MySQLCommand cmd = new MySQLCommand(sql, myConn);
MyReader = cmd.ExecuteReaderEx();
while (MyReader.Read())
{
Console.WriteLine( MyReader["Product_Name"].ToString() );
}
MyReader.Close();
}
catch(Exception ee)
{
Console.WriteLine( ee.ToString() );
}
26
finally
{
if (MyReader != null && !MyReader.IsClosed)
{
MyReader.Close();
}
Aplicaţii
27
6. Java Servlets
În funcţie de directorul (Root sau Nume_Aplicatie) şi respectiv staţia pe care se află servlet-ul,
cererea HTML va fi următoarea:
Aplicaţia următoare este formată dintr-un HTML care permite introducerea unui nume şi
apoi la apăsarea unui buton lansează o cerere spre servlet-ul Hello, care răspunde cu mesajul
Hello nume. Clasa Hello are următoarea structură:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
28
Prin metoda getParameter a clasei HttpServletRequest sunt preluaţi parametrii cererii (în
cazul nostru name), iar prin intermediul clasei HttpServletResponse, este construit răspunsul sub
forma unui HTML.
HTML-ul care lansează cererea spre servlet-ul Hello, are următoarea structură:
<html>
<head>
<title>Introductions</title>
</head>
<body>
<form method = get action="servlet/Hello">
If you don't mind me asking, what is your name?
<input type=text name="name"><p>
<input type =submit>
</form>
</body>
</html>
Aplicaţii
1. Implementaţi aplicaţia prezentată în lucrare.
2. Realizaţi o aplicaţie servlet care să permită gestionarea unei baze de date MySQL:
• conectarea la baza de date MySQL;
• introducerea unei noi inregistrari;
• afişarea rezultatelor interogărilor într-un tabel.
Pentru această aplicaţie va fi creat HTML-ul, clasa DBServlet care extinde clasa HttpServlet
şi clasa DBConnection preluată din lucrarea anterioară (Conectarea la o bază de date
MySQL). Driverul de MySQL mm.mysql-2.0.12-bin.jar trebuie pus în directorul lib din Web-
inf (vezi tabelul 1).
Observaţii
1. Dacă lucraţi cu Java Builder, pentru cele două aplicaţii se va crea câte un proiect. Clasele
create în cadrul proiectelor nu trebuie incluse în pachete. În proiect trebuie încărcată şi
librăria “Tomcat\Common\lib\servlet.jar”. Se generează fişierele *.class prin comanda
make.
2. Fişierele *.class şi *.html trebuie copiate în structura de directoare din Tomcat (vezi
tabelul 1).
3. Dacă serverul Tomcat nu poate fi pornit, trebuie verificată existenţa variabilelor
Environment (My Computer\Properties\Advanced): JAVA_HOME (calea spre JDK) şi
CATALINA_HOME (calea spre Tomcat). În cazul în care nu există, ele trebuie create.
4. Dacă serverul Tomcat rulează, aplicaţia este pornită printr-un Browser Web (Internet
Explorer – vezi tabelul 2).
29
7. Aplicaţii distribuite Java RMI
Java RMI (Remote Method Invocation) permite implementarea aplicaţiilor distribuite
Java-to-Java, în care metodele obiectelor pot fi apelate la distanţă [12]. Astfel, o aplicaţie client
poate folosi la distanţă obiectele unei aplicaţii server. O clasă poate fi instanţiată la distanţă, dacă
ea implementează o interfaţă Remote. Figura 4 prezintă structura generală a unei aplicaţii Java
RMI.
Caller Remote
object
Remote interface
STUB SKELETON
marshal / unmarshal unmarshal / marshal
În această lucrare este prezentată o aplicaţie Java RMI în care clientul apelează la
distanţă metoda sayHello a aplicaţiei server. Această metodă returnează mesajul “Hello World!”.
Mesajul este preluat şi afişat de client. Interfaţa Hello conţine antetul metodei sayHello pe care
dorim să o apelăm la distanţă.
30
import java.rmi.Remote;
import java.rmi.RemoteException;
Clasa unui obiect apelabil la distanţă trebuie să implementeze cel puţin o interfaţă Remote. Clasa
HelloImpl implementează interfaţa Hello de tip Remote, şi ea reprezintă aplicaţia server. Metoda
main a serverului creează o instanţă a clasei HelloImpl, rezultând astfel obiectul ale cărui metode
pot fi apelate la distanţă. Acestei instanţe i se asociază numele “Hello” în registrele RMI.
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;
import java.rmi.RMISecurityManager;
import java.rmi.Naming;
import java.io.*;
import java.net.*;
import sun.security.util.*;
După înregistrarea obiectului, acesta poate fi căutat de aplicaţiile client, folosind metoda
Naming.lookup(), prin numele care i s-a asociat în registrele RMI. Aplicaţia prezentată mai jos
apelează la distanţă metoda sayHello a serverului, şi afişează mesajul returnat: “Hello World!”.
31
import java.rmi.Naming;
import java.rmi.RMISecurityException;
Aplicaţii
1. Să se implementeze aplicaţia prezentată în lucrare.
2. Să se implementeze o aplicaţie Java RMI, pentru apelul la distanţă al unor metode care să
efectueze operaţiile aritmetice elementare.
32
8. Algoritmi paraleli în MPI.NET
Algoritmii paraleli [6] folosesc resursele specifice unui sistem de calcul paralel (un
număr de p procesoare) pentru rezolvarea unei probleme. Un algoritm secvenţial poate fi
paralelizat dacă secvenţa de operaţii elementare generată poate fi descompusă în p subsecvenţe,
în aşa fel încât operaţiile din fiecare subsecvenţă să poată fi executate concurenţial de
procesoarele disponibile. Există situaţii în care această descompunere este naturală, în general
însă, algoritmul secvenţial cel mai natural pentru rezolvarea unei probleme nu conduce la o
împărţire în astfel de subsecvenţe [6].
Limbajul C# permite implementarea aplicaţiilor paralele printr-o librărie MPI (Message
Passing Interface) [13]. Pentru înţelegerea structurii unui program paralel implementat în
MPI.NET, această lucrare prezintă aplicaţia PingPong în care are loc un transfer de mesaje între
p procese, care pot fi pornite pe calculatoare diferite. Procesul 0 primeşte şi afişează numele
staţiilor pe care au fost pornite celelalte procese. După cum se poate observa în codul sursă al
aplicaţiei, prezentat mai jos, aceste transferuri de mesaje sunt efectuate prin instrucţiunile Send
şi Receive existente în librăria MPI.
33
Pentru transfer de date simple (int, string, etc.) de la un proces la altul funcţiile blocante Send şi
Receive se apelează după cum urmează:
unde type reprezintă tipul datelor transmise, d_src / d_dest reprezintă variabila care conţine
valoarea înainte / după transfer, proc_src / proc_dest reprezintă codurile proceselor sursă /
destinaţie, iar tag ne permite să formăm perechi send / receive (datele sunt recepţionate de la
procesul sursă doar dacă tag-urile corespund).
Pentru dezvoltarea aplicaţiilor paralele folosind MPI.NET trebuie instalat MPI.NET SDK, iar
pentru rularea acestora se instalează Microsoft Compute Cluster Pack SDK (sdk_x86.msi) [13].
Aplicaţiile MPI pot fi pornite pe staţia locală (localhost) prin următoarea comandă:
mpiexec –n nr_procese NumeAplicatie.exe
De exemplu, comanda
mpiexec –n 5 PingPong
va porni aplicaţia PingPong pe cinci procese, toate pe staţia locală.
Pentru rularea pe mai multe staţii, se copiază executabilul programului pe care vrem sa-l rulăm
în folderul Microsoft Compute Cluster Pack\Bin\ al fiecărei staţii folosite şi se porneşte
executabilul smpd pe fiecare staţie, prin comanda:
smpd –d
34
Exemple
Aplicaţii
1. Să se implementeze şi să se ruleze aplicaţia PingPong prezentată în lucrare.
35
Bibliografie
[1] Ari B., Principles of Concurrent and Distributed Systems, Addison Wesley, 1990.
[2] Athanasiu I., Java ca limbaj pentru programarea distribuită, Matrix Rom, Bucureşti, 2002.
[3] Attiya H., Welch J., Distributed Computing, McGraw Hill, London, 1998.
[4] Chan M. C., Griffith S. W., Iasi A. F., Java 1001 Secrete pentru Programatori, Teora, 2000.
[5] Coulouris G., Dollimore J., Kindberg T., Distributed Systems: Concepts and Design, 3rd
Edition, Addison Wesley, 2001.
[6] Croitoru C., Introducere în proiectarea algoritmilor paraleli, Matrix Rom, Bucureşti, 2002.
[7] Eckel B., Thinking in Java, 3rd edition (electronic version: www.pythoncriticalmass.com),
Prentice-Hall, 2003.
[9] Gellert A., Analiza şi proiectarea algoritmilor: o abordare pragmatică prin aplicaţii Java,
Editura Techno Media, ISBN 978-606-8030-81-4, 2010.
[11] Hunter J., Java Servlet Programming, 2nd Edition, O’Reilly & Associates, 2001.
[12] Mahmoud Q. H., Distributed Programming with Java, Manning Press, 2001.
[15] Orfali R., Harkey D., Client/Server Programming with Java and Corba, 2nd Edition, J. Wiley
& Sons, New York, 1998.
36
IOAN DZIłAC GRIGOR MOLDOVAN
SISTEME DISTRIBUITE
MODELE INFORMATICE
Referent: Prof. univ. dr. Răzvan Andonie, Central Washington University, SUA
Editor: Prof. univ. dr. ing. Mişu-Jan Manolescu, Universitatea Agora
Coperta şi asistent editorial: Emma M. Văleanu, Universitatea Agora, student
doctorand la Academia Română
I. Moldovan, Grigor
004
Copyright © 2006 by CCC Publications, Agora University Publishing House.
Title:
DISTRIBUTED SYSTEMS: INFORMATION SYSTEM MODELS
Abstract:
This work presents various definitions and models for the distributed
informatics systems starting from the parallel and distributed computation
general models, usual models from Internet and Intranet (client/server, cluster,
grid etc.), and also the communication models in these kind of systems. The
book is addressed especially by the students and by the professorate that wants
to study/teach the applied informatics (economical informatics, medical
informatics) but can also be used by all the other that are interested in using the
distributed informatics systems.
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 3
CONTENTS
CHAPTER 1
DISTRIBUTED INFORMATICS SYSTEMS
1.1. A short description of the distributed informatics systems
1.1.1. Distributed informatics system. Homogeneous/heterogeneous
systems. Tightly /loosely coupled systems
1.1.2. Specific characteristics and advantages of the distributed systems
1.1.3. Middleware
1.2. The requirements of a distributed informatics system
1.2.1. Heterogeneously
1.2.2. Scalability
1.2.3. Security
1.2.4. Errors treatment
1.2.5. Openess
1.2.6. Concurrency
1.2.7. Transparency
1.3. Remarkable examples of distributed informatics systems
1.3.1. Internet networks: SIPRNET, FidoNet, Internet
1.3.2. Intranet and extranet
1.3.3. Nomadic computing and ubiquitous computing
1.3.4. Internet2
1.3.5. PlanetLab
1.3.6. Cluster
1.3.7. Grid
CHAPTER 2
PARALLEL AND DISTRIBUTED COMPUTATION SYSTEMS:
TAXONOMY AND MODELS
2.1. Binary classification of the parallel and distributed computing systems
(SCPD) architectures
2.1.1. SCPD classification after the number of the central units connected
to the memory
2.1.2. SCPD classification after the control mechanism type
2.1.3. SCPD classification after the number of the processing instruction
sets
2.1.4. SCPD classification after the processing management strategy type
2.1.5. SCPD classification after the number of the processing data stream
2.1.6. SC class partition after the number of the processing data stream
4 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
CHAPTER 3
THE INTERCONNECTION IN THE PARALLEL AND DISTRIBUTED
COMPUTATION SYSTEMS
3.1. PRAM, an idealist parallel computer
3.2. Interconnection methods in the parallel and distributed computation
systems architecture. Computer networks
3.2.1. “Crossbar” networks
3.2.2. “Switchboard” interconnection
3.2.3. Network interconnection with limited direct links
3.2.3.1. Bus network
3.2.3.2. Linear and cyclic network
3.2.3.3. Perfect mixing network
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 5
CHAPTER 4
THE INTERNET: A SCALABLE OPEN DISTRIBUTED SYSTEM
4.1. The architectural schema of the Internet
4.2. The functional schema of the Internet (router, gateway, host)
4.3. The client/server model. The TCP/IP protocol
4.3.1. IP (Internet Protocol).
4.3.2. TCP (Transmission Control Protocol)
4.3.3. UDP (User Datagram Protocol)
4.3.4. DNS (Domain Name System)
4.3.5. POP3 or the Post Office protocol– Version 3
4.3.6. IMAP (Internet Message Access Protocol)
4.3.7. SMTP (Simple Mail Transfer Protocol)
4.3.8. HTTP (HyperText Transfer Protocol)
4.3.9. HTTPS
4.3.10. SSL (Secure Sockets Layer)
4.3.11. FTP (File Transfer Protocol)
4.3.12. LDAP
4.4. World Wide Web: a distributed application over the Internet
4.4.1. Generalities about the Web. Hypertext and hypermedia
4.4.2. The hypertext marking (SGML, XML, HTML, WML, XHTML)
4.4.3. URI (Uniform Resource Identifier): URL and URN
4.4.4. HTTP (HyperText Transfer Protocol)
APPENDIX
A minidictionary for parallel and distributed computing
REFERENCES
WEB REFERENCES
6 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
CUPRINS
CAPITOLUL 1
SISTEME INFORMATICE DISTRIBUITE 11
1.1. Scurtă descriere a sistemelor informatice distribuite 12
1.1.1. Sistem informatic distribuit. Sisteme 12
omogene/eterogene. Sisteme puternic/slab cuplate
1.1.2. Caracteristici şi avantaje specifice ale sistemelor 14
distribuite
1.1.3. Midlleware 16
1.2. CerinŃele unui sistem informatic distribuit 17
1.2.1. Eterogenitatea 17
1.2.2. Scalabilitatea 18
1.2.3. Securitatea 20
1.2.4. Tratarea erorilor 23
1.2.5. Deschiderea 24
1.2.6. ConcurenŃa 24
1.2.7. TransparenŃa 24
1.3. Exemple remarcabile de sisteme informatice distribuite 26
1.3.1. ReŃele de tip internet: SIPRNET, FidoNet, Internet 26
1.3.2. Intranet şi extranet 27
1.3.3. Nomadic computing şi ubiquitous computing 28
1.3.4. Internet2 28
1.3.5. PlanetLab 29
1.3.6. Cluster 38
1.3.7. Grid 43
CAPITOLUL 2
SISTEME DE CALCUL PARALEL ŞI DISTRIBUIT: TAXONOMIE 47
ŞI MODELE
2.1. Clasificări binare ale arhitecturilor sistemelor de calcul paralel şi 48
distribuit (SCPD)
2.1.1. Clasificarea SCPD după numărul de unităŃi centrale 49
conectate la memorie
2.1.2. Clasificarea SCPD după tipul mecanismului de control 50
2.1.3. Clasificarea SCPD după numărul de seturi de 50
instrucŃiuni prelucrabile
8 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
CAPITOLUL 3
INTERCONECTAREA ÎN SISTEMELE DE CALCUL PARALEL ŞI 95
DISTRIBUIT
3.1. PRAM, un calculator paralel idealizat 95
3.2. Procedee de interconectare în arhitecturile sistemelor de calcul 97
paralel şi distribuit. ReŃele de calculatoare
3.2.1. ReŃea de tip “crossbar” 98
3.2.2. Interconectarea de tip “switchboard” 98
3.2.3. ReŃea de interconectare cu legături directe limitate 99
3.2.3.1. Magistrala comună (bus) 99
3.2.3.2. ReŃeaua liniară şi ciclică 99
3.2.3.3. ReŃeaua de tip amestecare perfectă 100
3.2.3.4. ReŃeaua arborescentă 101
3.2.3.5. ReŃeaua de tip latice 102
3.2.3.6. ReŃeaua de tip hipercub 103
CAPITOLUL 4
INTERNETUL: UN SISTEM DISTRIBUIT DESCHIS ŞI 105
SCALABIL
4.1. Schema arhitecturală a Internetului 106
4.2. Schema funcŃională a Internetului (router, gateway, host) 108
4.3. Modelul client/server. Protocolul TCP/IP 109
4.3.1. IP (Internet Protocol) 110
4.3.2. TCP (Transmission Control Protocol) 110
4.3.3. UDP (User Datagram Protocol) 110
4.3.4. DNS (Domain Name System) 111
4.3.5. POP3 sau Protocolul Post Office – Versiunea 3 122
4.3.6. IMAP (Internet Message Access Protocol) 122
4.3.7. SMTP (Simple Mail Transfer Protocol) 122
4.3.8. HTTP (HyperText Transfer Protocol) 122
4.3.9. HTTPS 123
4.3.10. SSL (Secure Sockets Layer) 123
4.3.11. FTP (File Transfer Protocol) 123
4.3.12. LDAP 123
4.4. World Wide Web: o aplicaŃie distribuită în Internet 124
4.4.1. GeneralităŃi despre Web. Hipertext şi hipermedia 124
4.4.2. Marcarea hipertextului (SGML, XML, HTML, WML, 126
XHTML)
4.4.3. URI (Uniform Resource Identifier): URL şi URN 126
4.4.4. HTTP (HyperText Transfer Protocol) 127
10 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
ANEXĂ
MinidicŃionar de calcul paralel şi distribuit 128
BIBLIOGRAFIE 143
WEBGRAFIE 146
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 11
CAPITOLUL 1
SISTEME INFORMATICE DISTRIBUITE
1.1. Scurtă descriere a sistemelor informatice distribuite
1.1.1. Sistem informatic distribuit. Sisteme omogene/eterogene. Sisteme
puternic/slab cuplate
1.1.2. Caracteristici şi avantaje specifice ale sistemelor distribuite
1.1.3. Midlleware
1.2. CerinŃele unui sistem informatic distribuit
1.2.1. Eterogenitatea
1.2.2. Scalabilitatea
1.2.3. Securitatea
1.2.4. Tratarea erorilor
1.2.5. Deschiderea
1.2.6. ConcurenŃa
1.2.7. TransparenŃa
1.3. Exemple remarcabile de sisteme informatice distribuite
1.3.1. ReŃele de tip internet: SIPRNET, FidoNet, Internet
1.3.2. Intranet şi extranet
1.3.3. Nomadic computing şi ubiquitous computing
1.3.4. Internet2
1.3.5. PlanetLab
1.3.6. Cluster
1.3.7. Grid
12 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
1.1.3. Midlleware
Majoritatea sistemelor informatice actuale sunt sisteme deschise neomogene
(eterogene), ale căror date si aplicaŃii coexistă pe platforme hardware şi
software neomogene. Cu toate precauŃiile producătorilor de hardware şi
software de a respecta anumite cerinŃe generale pentru a facilita comunicarea
între aceste platforme, este evident că sunt necesare o serie de programe de
translatare de la o platformă hardware sau software la alta. Acest lucru se face
cu ajutorul unor programe intermediare sau midlleware (middle - de mijloc,
intermediar, în limba engleză).
Conceptul midlleware joacă un rol esenŃial în sistemele informatice
distribuite eterogene. Aceste programe de traducere/ translatare trebuie să
îndeplinească o condiŃie esenŃială: transparenŃa pentru utilizator.
Se poate utiliza middlware orientat pe obiecte, care permite programatorului
să creeze un model orientat pe obiecte al unei întreprinderi şi apoi să scrie
aplicaŃiile care cer informaŃii din obiecte şi nu din anumite surse de date.
Cererea este coordonată de un Object Request Broker (ORB), adică un
intermediar de cereri orientat pe obiecte, care reprezintă un middleware.
Middleware-ul de aplicaŃie execută operaŃiile de detaliu privind
conexiunea dintre diferitele platforme hardware şi software care trebuie să
comunice între ele pentru a satisface cererile utilizatorului.
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 17
1.2.1. Eterogenitatea
1.2.2. Scalabilitatea
1.2.3. Securitatea
1.2.4. Tratarea erorilor
1.2.5. Deschiderea
1.2.6. ConcurenŃa
1.2.7. TransparenŃa
1.2.1. Eterogenitatea
1.2.2. Scalabilitatea
1.2.3. Securitatea
1.2.5. Deschiderea
1.2.6 ConcurenŃa
Într-un sistem distribuit există posibilitatea ca o aceeaşi resursă partajată
să poată fi accesată de mai mulŃi utilizatori simultan. O soluŃie limitativă şi greu
acceptabilă ar fi ca mecanismul care face managementul resursei să servească
numai câte un client odată. În general însă aplicaŃiile în sistemele distribuite
sunt construite pentru a putea deservi mai mulŃi clienŃi simultan
(multiprocessing, multitasking etc.). Pentru ca un obiect să fie sigur într-un
mediu concurent, operaŃiile asupra lui trebuie să poată fi sincronizate astfel
încât să avem date consistente pentru fiecare utilizator. Acest lucru se poate
obŃine prin tehnici standard de sincronizare, cum ar fi semafoarele.
1.2.7. TransparenŃa
Cea mai mare, mai notorie şi uzuală dintre reŃele de tip internet la ora
actuală (în 2006, dar lucrurile evoluează incredibil de rapid) este numită
Internet (nume propriu, scris cu majusculă), adică super-reŃeaua mondială
unică de computere, interconectate prin protocolul IP/TCP. Precursorul
Internetului datează din 1965, când Defence Advanced Research Projects
Agency (DARPA) din SUA a creat prima reŃea de computere interconectate
sub numele Arpanet. Super-reŃeaua Internet de azi a rezultat din extinderea
reŃelei Arpanet.
Atât Internetul sau The NET (ReŃeaua), cum i se mai spune în lume,
cât şi alte reŃele mai mici de tip internet sunt exemple de sisteme informatice
distribuite.
Astfel, prin Internet multe resursele dint-o anumită locaŃie geografică
pot fi partajate (exploatate în comun) de către utilizatori din cele mai diverse
locuri geografice. De exemplu, varianta online a publicaŃiei International
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 27
1.3.4. Internet2
Sursa: http://www.internet2.edu/
Internet2 este cel mai avansat consorŃiu de networking din SUA
organizat pe principiul non-profit. ÎnfiinŃat de comunitatea de cercetare şi
educaŃie începând cu anul 1996, Internet2 are în vedere dezvoltarea de aplicaŃii
şi tehnologii de reŃea avansate, cu scopul de a accelera modernizarea
Internetului şi utilizarea tehnologiilor sale revoluŃionare.
1.3.5. PlanetLab
Sursa: http://www.planet-lab.org/
PlanetLab era la sfârşitul anului 2006 format dintr-o reŃea de 723 maşini
distribuite pe tot globul, fiind găzduit de 353 situri, de pe cuprinsul a peste 25
de Ńări. Majoritatea maşinilor este găzduită de institute de cercetare, deşi unele
din ele sunt găzduite în co-locaŃie şi cu diverse centre de rutare (cum ar fi
Internet2 Abilene backbone). Toate maşinile sunt conectate la Internet, Ńinta
PlanetLab fiind de a creşte la peste 1000 numărul nodurilor în majoritatea
dintre importantele zone regionale ale backbonurilor de Internet.
PlanetLab are mai multe aspecte, despre care se pot afla mai multe
informaŃii citind următoarele două articole, care se pot descărca de pe pagina
oficială a PlanetLab: http://www.planet-lab.org/:
30 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
1.3.6. Cluster
1.3.7. Grid
Diverse definiŃii descriptive.
1. Grid-ul este o colecŃie de resurse informatice eterogene (PC-uri,
supercomputere, MPP, clustere, ....), fără o localizare determinată, fără
control centralizat, fără o imagine de sistem unic, accesibilă unor
organizaŃii virtuale prin intermediul unui software suport pentru
configurare (uzual, Globus Toolkit, http://www.globus.org/ ).
2. Grid-ul este un tip de sistem paralel şi distribuit care permite partajarea,
selectarea şi agregarea serviciilor unor resurse distribuite eterogene
peste domenii cu administrare multiplă, bazate pe disponibilitate,
capabilitate, performanŃă, cost şi cerinŃe calitative ale utilizatorilor.
(Rajkumar BUYYA, http://www.gridcomputing.com/ )
3. Grid-ul reprezintă modalitatea flexibilă şi securizată de a coordona
punerea în comun a resurselor diverselor colective dinamice de indivizi,
instituŃii sau organizaŃii (organizaŃii virtuale). [FKT01];
4. Grid-ul reprezintă un efort ambiŃios şi incitant de a dezvolta un mediu
în care fiecare utilizator să poată accesa calculatoare, baze de date şi
facilităŃi experimentale într-un mod simplu şi transparent, fără să Ńină
seama unde sunt localizate aceste facilităŃi [RealityGrid, Engineering &
Physical Sciences Research Council, UK 2001]
http://www.realitygrid.org/information.html ;
5. Grid computing este un model care permite unor companii să
folosească un număr larg de resurse de calcul la cerere, indiferent unde
s-ar afla acestea.
www.informatica.com/solutions/resource_center/glossary/default.htm ;
6. Un grid este o infrastructură informatică de tip reŃea, constituită virtual
dintr-o mulŃime de resurse informatice distribuite, eterogene, cu
potenŃial de partajare, fără o administrare centralizată, fără imagine de
sistem unic, care permite unor utilizatori de tip organizaŃional să-şi
rezolve unele probleme de dimensiuni mari utilizând resurse de
pretutindeni (din afara organizaŃiei).
Notă. Uneori se mai fac confuzii între cele două concepte: cluster computing
şi grid computing. Este necesar de la bun început să facem o distincŃie
categorică între cele două concepte, comparând următoarele definiŃii ale celor
două concepte:
• Cluster computing: este o colecŃie de staŃii de lucru (PC-uri,
supercomputere, MPP,...) omogene sau neomogene, puternic cuplate într-o
reŃea bine localizată (într-o încăpere sau în câteva locaŃii ale unei
întreprinderi), cu control centralizat, accesibilă utilizatorilor de la terminalele
staŃiilor de lucru prin intermediul unui software de administrare (uzual,
GLUnix realizat în cadrul proiectului NOW sau CODINE, vezi şi
http://www.linux-ha.org/ClusterResourceManager ), prin intermediul căruia
văd clusterul ca o unică resursă de calcul la fel de uşor de utilizat ca un PC.
Pentru programare în clustere se utilizează de obicei MPI (Message Pasing
Interface) http://www-unix.mcs.anl.gov/mpi/ sau PVM (Parallel Virtual
Machine) http://www.csm.ornl.gov/pvm/ ;
• Grid computing: este o colecŃie de resurse informatice eterogene (PC-uri,
supercomputere, MPP, clustere, ....), fără o localizare determinată, fără
control centralizat, fără o imagine de sistem unic, accesibilă unor organizaŃii
virtuale prin intermediul unui software suport (uzual, Globus Toolkit,
http://www.globus.org/ ).
46 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 47
CAPITOLUL 2
SISTEME DE CALCUL PARALEL ŞI DISTRIBUIT.
TAXONOMIE ŞI MODELE
2.1. Clasificări binare ale arhitecturilor sistemelor de calcul paralel şi distribuit (SCPD)
2.1.1. Clasificarea SCPD după numărul de unităŃi centrale conectate la memorie
2.1.2. Clasificarea SCPD după tipul mecanismului de control
2.1.3. Clasificarea SCPD după numărul de seturi de instrucŃiuni prelucrabile
2.1.4. Clasificarea SCPD după tipul strategiei de management al procesării
2.1.5. Clasificarea SCPD după numărul de seturi de date prelucrabile
2.1.6. Divizarea clasei SC după numărul de seturi de date prelucrabile
2.1.7. Divizarea clasei SIMD după tipul de date prelucrabile
2.1.8. Divizarea clasei SF după tipul de date prelucrabile
2.1.9. Divizarea clasei MIMD după modul de organizare a adresării spaŃiului de
memorie (Bell)
2.1.10. Divizarea multiprocesoarelor după tipul de memorie utilizat (Bell)
2.1.11. Divizarea multicalculatoarelor după tipul de memorie utilizat (Bell)
2.2.Paralelismul în diverse sisteme de calcul
2.2.1. Paralelismul în calculatoarele scalare moderne de tip SISD
2.2.2.Paralelismul în calculatoarele multiscalare de tip MISD
2.2.3 Paralelismul în sistemele MIMD
2.3. Clasificarea lui Flynn
2.3.1. Clasa SISD (Single Instruction stream - Single Data stream)
2.3.2. Clasa SIMD (Single Instruction stream - Multiple Data stream)
2.3.3. Clasa MISD (Multiple Instruction stream - Single Data stream)
2.3.4. Clasa MIMD (Multiple Instruction stream - Multiple Data stream)
2.4. O sinteză a diverselor taxonomii ale SCPD
2.4.1. Includerea claselor lui Flynn
2.4.2. Includerea claselor lui Bell (multiprocesor de tip SASA, multicalculator de
tip MPA)
2.4.3. Includerea claselor lui Hwang (modelele UMA, NUMA, ccNUMA,
COMA)
2.4.4. Modelele Cluster şi Grid
2.4.5. O schemă taxonomică de sinteză
2.5. Software pentru configurarea şi managementul sistemele informatice distribuite
2.5.1. Sisteme de operare multiuser
2.5.2. Parallel Virtual Machine (PVM)
2.5.3. Message Passing Interface (MPI)
2.5.4. Globus Toolkit
48 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
informaŃiei între ele, toate lucrând în paralel, sub comanda unei unităŃi centrale
unice.
Un procesor matricial poate executa operaŃii scalare şi vectoriale pe
seturi masive de date. Toate elementele de procesare execută aceleaşi operaŃi,
sub comanda CPU, dar asupra unor operanzi diferiŃi obŃinuŃi din memoriile
locale (în cazul memoriei distribuite local, Fig. 2.2.7) sau din memoria comună
organizată pe module (Fig. 2.2.6).
Un exemplu tipic de procesor matricial de primul tip este Illiac IV, iar
din cel de-al doilea este BSP [Buroughs Scientific Processor].
Un rol deosebit de important în eficienŃa unor astfel de sisteme îl joacă
modul de interconectare a procesoarelor (reŃele statice, reŃele dinamice, etc.).
Clasificarea lui Flynn are cel mai mare impact în literatura de specialitate.
Ea constă într-o combinaŃie a claselor SI, MI cu clasele SD, MD (v. Fig. 2.3.1.
şi Fig. 2.3.2).
a) SISD
(SI) (SD)
P+
CU (SISD)
Global Procesor Data
b)SIMD CU[CPU] stream
(SI) (MD
P1 )
I
I
P2
Global (SIMD)
CU[MCU] I
Pn
l
(MI)
c)MISD P1 (SD)
I1
I2
P2
Local (MISD)
In Date
CU[MCU] Pn
d) MIMD (MI)
(M
P 1+ D)
I1 CU
I2
P 2+
CU
Local (MIM
CU[MCU In
P n+
} CU
ReŃea de
interconectare
Surse:
[DL03], [Dzi01]
http://www.linux.org
http://info.tech.pub.ro/~fionescu/CP/CP.html
în vreun fel proprietatea cuiva, mare parte din programele disponibile pentru
Linux fiind dezvoltate în cadrul proiectului GNU al FundaŃiei pentru Software
Liber (Free Software Foundation) din Cambridge, Massachusetts. În plus,
programatorii din întreaga lume au contribuit la software-ul pentru Linux.
Astăzi, Linux este o variantă de UNIX completă, capabilă să execute
Xwindows, TCP/IP, Emacs, poştă electronică şi ştiri. Aproape toate pachetele
de programe distribuite liber au fost transportate şi pe Linux, tot mai multe
aplicaŃii comerciale devenind disponibile şi pentru acest sistem de operare.
Linux este compatibil în mare măsură cu un număr de standarde UNIX,
incluzând caracteristicile IEEE POSIX. 1, System V şi BSD, la nivel de sursă.
Scopul principal în timpul dezvoltării acestui sistem de operare a fost acela de a
asigura un nivel de compatibilitate cât mai mare cu restul sistemelor şi
aplicaŃiilor UNIX. Un număr mare de programe UNIX, accesibile liber,
disponibile prin Internet sau altfel, pot fi compilate imediat pe Linux. În plus,
tot codul sursă al Linux-ului, incluzând nucleul, driverele pentru periferice,
bibliotecile, programele utilizator şi utilitarele de dezvoltare sunt distribuite
liber.
$ ls
cuprins
bibliografie
capitolul 2
capitolul 1
introducere
SoluŃie:
$ ls > lista_fişiere
$ sort -r lista_fişiere
Rezultat afişat:
introducere
capitolul 1
capitolul 2
bibliografie
cuprins
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 77
Comenzi generale:
$ date - afişează data curentă;
$ exit - închide sesiunea de lucru;
$ man - această comandă realizează o căutare a subiectului indicat în
sistemul de fişiere cu documentaŃie de care dispune eventual sistemul;
$ man man - pentru a afla informaŃii despre sistemul de manuale on-
line;
ObservaŃie. Pe unele sisteme cu resurse reduse (memorie internă, spaŃiu
pe disc) sistemul de manuale este înlocuit cu un help mai puŃin consumator de
resurse, dar cu mai puŃine informaŃii:
$ help who - se obŃin informaŃii despre opŃiunile comenzii who;
$ gcc p1.c -o p1
$ p1
Exemplu de opŃiuni:
• O realizează optimizarea codului executabil, este bine să se folosească în
special, dacă se urmăreşte viteza de execuŃie şi nu lungimea codului;
80 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
Exemplu. SecvenŃa:
$gcc -c p1.c -o p1.o -I/home/user/include
$gcc -c p2.c -o p2.o -I/usr/local/include
$gcc p1.o p2.o main.c -L/usr/local/lib -
L/home/user/lib -lmylib -luser
-o program
clean:
rm -rf prog *.o
82 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
$ ps [optiuni]
Tot pentru vizualizarea proceselor din sistem se poate folosi programul top
(Linux) prin comanda:
Lista opŃiunilor:
• k - distruge un proces;
• i - afişează doar procesele active;
• n sau # - modifică numărul proceselor afişate;
• r – modifică prioritatea (vezi nice) a unui proces;
• S - schimbă modul cumulativ; totalizează sau nu şi timpul proceselor;
• s - schimba intervalul de actualizare a datelor pe ecran;
• f sau F - adaugă sau scade câmpuri afişate;
• o sau O - modifică ordinea de afişare a informaŃiilor;
Comanda kill poate controla într-un mod mai complex execuŃia proceselor,
mod dependent chiar de procesele controlate. Procesele pot primi din exterior
semnale şi pot reacŃiona la acestea în modul în care programatorul crede de
cuviinŃă.
Semnalul SIGKILL (cu numărul 9) nu poate fi tratat de procese şi
efectul va fi ca procesul dispare.
OpŃiunea -l tipăreşte o listă a semnalelor disponibile în sistem pentru
comunicarea cu procesele.
Identificatorul este utilizat pentru a atribui date sau cod unui anumit pro-
cesor. Mecanismul de accesare a datelor de identificare diferă de la un limbaj la
altul.
Partea statică a unui program sub sistem PARIX include un mecanism iniŃial de
încărcare care distribuie un program “principal” identic tuturor procesoarelor.
Datele globale ale unui nod conŃin setul ce permite identificarea poziŃiei
procesorului în reŃea (în “structura rădăcină”). Depinzând de poziŃia proprie,
fiecare procesor execută diferite secŃiuni ale programului.
FacilităŃile de comunicare sub PARIX sunt reprezentate de legăturile
virtuale. O legătură virtuală este o linie de comunicare între două procesoare,
bidirecŃională, sincronizată, ce nu utilizează buffere. Definirea corectă a unui
set de legături virtuale permite construirea unei topologii virtuale, ca de
exemplu arborele binar sau hipercubul.
typedef struct
{
int MyProcID; /*identificatorul procesorului*/
int MyX; /*coordonata pe axa x*/
int MyY; /*coordonata pe axa y*/
int MyZ; /*coordonata pe axa z*/
int nProcs; /*numarul de procesoare*/
int DimX; /*dimens. max. a grilei pe axa x*/
int DimY; /*dimens. max. a grilei pe axa y*/
int DimZ; /*dimens. max. a grilei pe axa z*/
}
RootProc_t;
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 89
Surse: [DL03],
Pagina oficială a PVM:
http://www.epm.ornl.gov/pvm/pvm_home.html
execuŃie poate iniŃia sau termina alte taskuri, poate adăuga sau elimina
calculatoare din maşina virtuală. Sunt incluse facilitatea de asigurare a
toleranŃei la defecte. Astfel, dacă unul sau mai multe calculatoare "cad", se
asigură funcŃionarea în continuare a maşinii virtuale.
Utilizatorii pot scrie aplicaŃii paralele în Fortran sau C utilizând Rutinele din
bibliotecile PVM. Modelul de programare utilizat este cel cu transfer de mesaje
(message-passing), adică prin trimiterea si recepŃionarea mesajelor, taskurile
aplicaŃiei pot coopera pentru a rezolva o problemă în paralel . PVM este utilizat
în peste o mie de locuri din lume ca o alternativă, eficientă din punct de vedere
al raportului cost/performanŃe, pentru calculatoarele paralele puternice. În
Statele Unite cei mai importanŃi utilizatori sunt NASA şi Departamentul
Energiei, fără să mai luăm în considerare numeroasele universităŃi unde este
utilizat atât pentru cercetare cât si pentru realizarea orelor de aplicaŃii. Şi la noi
în Ńară PVM este utilizat în unele universităŃi, dintre acestea se pot aminti
Universitatea Transilvania Braşov (unde se desfăşoară un seminar PVM),
Universitatea Tehnică "Gh. Asachi" Iaşi (în cadrul orelor de aplicaŃii la
disciplinele de calcul paralel ;i distribuit), Universitatea "Politehnica"
Bucureşti, Universitatea Tehnică Timişoara şi Universitatea din Oradea. Mai
există câteva sisteme software cu o funcŃionalitate asemănătoare, dintre acestea
se pot aminti: P4 (Argonne National Laboratory), Express (ParaSoft
Corporation), Linda (Scientific Computing), MPI-Message Passing Interface.
Obiectivul general al sistemului PVM este să permită unei mulŃimi de
calculatoare să fie utilizată pentru calculul paralel sau concurent.
pvm>
şi se aşteaptă introducerea unei comenzi.
Pentru mai multe detalii despre PVM se poate consulta [DL03] precum
pagina oficială a PVM: http://www.epm.ornl.gov/pvm/pvm_home.html.
Globus® Toolkit este standardul “de facto” al arhitecturii Grid, este un software
open source utilizat în configurarea şi proiectarea grid-urilor. Versiunea Globus
1.0 a apărut în 1998 A început să fie dezvoltat de Globus Alliance şi de mulŃi
alŃi participanŃi din întreaga lume. Un număr tot mai mare de proiecte şi
companii folosesc Globus Toolkit pentru a exploata potenŃialul gridurilor.
Comunitatea open source Globus Alliance produce o vastă varietate de
componente software pentru Grid.
Problemele cheie în configurarea şi utilizarea sistemelor Grid în aplicaŃii de
mare complexitate sunt:
• punerea în comun a resurselor (calculatoare, spaŃiu de stocare,
senzori, reŃele), condiŃionată de problema încrederii, politici, negocieri,
plată;
• rezolvare coordonată de probleme (integrarea resurselor distribuite,
calcul colaborativ, organizaŃii virtuale dinamice şi multi-instituŃionale);
• reorganizarea dinamică comunităŃii (numeroasă sau restrânsă, statică
sau dinamică).
94 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
CAPITOLUL 3
INTERCONECTAREA ÎN SISTEMELE DE CALCUL
PARALEL ŞI DISTRIBUIT
Într-un sistem de calcul paralel ideal de tip PRAM, fiecare procesor este
conectat cu oricare altul. În practică, însă, acest tip de interconectare este
posibil numai pentru un număr redus de procesoare. În construirea
calculatoarelor paralele, un rol important îl joacă tipul de problemă care se
rezolvă pe maşina respectivă, ceea ce influenŃează numărul de conexiuni între
procesoare. Reconfigurarea logică este posibilă, dar are un efect negativ asupra
timpului de execuŃie: dacă cerinŃele de conectare pentru un algoritm dat nu
corespund configuraŃiei reŃelei, atunci comunicarea între procesoare va reduce
viteza de execuŃie. PerformanŃele unei arhitecturi paralele depind mult de
numărul de procesoare dar şi de modul în care acestea sunt interconectate
(v.[Pet94], [Gri00], ş. a.).
Este cea mai simplă soluŃie din punct de vedere logic şi constructiv al
modului de interconectare a procesoarelor într-un sistem de calcul paralel, în
care procesoarele comunică între ele doar prin intermediul memoriei comune.
Această soluŃie este puŃin performantă, datorită limitărilor de comunicare.
0 1 2 3 4 ... n−2 n − 1
π : 0 1 n 1 1 n + 1 2 ... 1 n − 1 n − 1
2 2 2
Prin urmare, 0 este conectat cu el însuşi, 1 este conectat cu 4 care este conectat
cu 2 care, la rândul său este conectat cu 1, ş.a.m.d.
Se observă uşor că π–1(x)=2x (modulo n–1) pentru x=0,…,n–2, şi π–1(n–1) =n–
1.
În cazul execuŃiei paralele, procesoarele P0, …, Pn–1 sunt conectate după cum
urmează:
Pi∏Pπ–1(i) (i = 0,…, n–1)
P0√P1,…, Pn–2 √Pn–1.
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 101
01 11
001 101
010 110
000 100
0 1 00
H1 H2 H3
În tabelul 3.2.1 sunt prezentate accelararea S (n, p) şi eficienŃa E (n, p), în cazul
sumarii a n numere (n = 64, 512), pe un hipercub format din p procesoare
(pentru p = 4, 8, 19).
hipercub
n p n*p/(n+2*p*log p) n/(n+2*p*log p)
64 4 3,72 0,93
64 8 6,48 0,81
64 16 9,92 0,62
64 32 12,48 0,39
CAPITOLUL 4
INTERNETUL: UN SISTEM DISTRIBUIT DESCHIS
ŞI SCALABIL
4.1. Schema arhitecturală a Internetului
4.2. Schema funcŃională a Internetului (router, gateway, host)
4.3. Modelul client/server. Protocolul TCP/IP
4.3.1. IP (Internet Protocol).
4.3.2. TCP (Transmission Control Protocol)
4.3.3. UDP (User Datagram Protocol)
4.3.4. DNS (Domain Name System)
4.3.5. POP3 sau Protocolul Post Office – Versiunea 3
4.3.6. IMAP (Internet Message Access Protocol)
4.3.7. SMTP (Simple Mail Transfer Protocol)
4.3.8. HTTP (Hypertext Transfer Protocol)
4.3.9. HTTPS
4.3.10. SSL (Secure Sockets Layer)
4.3.11. FTP (File Transfer Protocol)
4.3.12. LDAP
4.4. World Wide Web: o aplicaŃie distribuită în Internet
4.4.1. GeneralităŃi despre Web. Hipertext şi hipermedia
4.4.2. Marcarea hipertextului (SGML, XML, HTML, WML, XHTML)
4.4.3. URL (Uniform Resource Locator)
4.4.4. HTTP (HyperText Transfer Protocol)
LAN Intranet:
ReŃea locală reŃeaua
Mediul Internet
unei firme
Furnizori locali
Gateway şi regionali
Router Router
PC
Gateway Host
Router
posibilă livrarea mesajelor într-o reŃea. Spre deosebire de TCP, UDP este un
protocol ce nu oferă siguranŃa sosirii datelor la destinaŃie.
organizaŃii ale unor tratate pot deveni membri GAC. Pentru informaŃii
suplimentare despre GAC accesaŃi: www.gac.icann.org
Email: richard.delmas@cec.eu.int
sub forma nume.name. Dacă nume.name este ocupat, este bine să verificaŃi
disponibilitatea domeniului de nivel trei - prenume@nume.name.
.tv - folosit în general pentru servicii de televiziune sau broadcasting, nu
există restricŃii la înregistrare, oricine poate înregistra un domeniu .tv
.eu.com (Europa) - Recomandat în special pentru firmele ce au afaceri
în Europa, nu există restricŃii la înregistrare, oricine poate înregistra un domeniu
.eu.com (A nu se confunda cu .eu - Uniunea Europeana)
.ws - folosit în general pentru WebSite-uri, nu există restricŃii la
înregistrare, oricine poate înregistra un domeniu .ws
.mobi - destinat realizării de site-uri special proiectate pentru a fi afişate pe
ecranul telefoanelor mobile.
.eu (Uniunea Europeana), poate fi înregistrat doar de persoane
fizice/juridice din Ńările membre UE
.co.uk (Anglia), nu exista restricŃii la înregistrare, oricine poate
înregistra un domeniu .co.uk
.org.uk (Anglia), nu există restricŃii la înregistrare, oricine poate
înregistra un domeniu .co.uk
.de (Germania), oricine poate înregistra un domeniu .de, dar cu condiŃia
ca una din persoanele deŃinător sau contact administrativ al domeniului să aibă
o adresă în Germania. DeŃinătorul poate fi în orice Ńară, dar în acest caz trebuie
ca persoana de contact administrativ să aibă o adresă în Germania.
.fr (FranŃa), un domeniu .fr poate fi înregistrat de o persoană juridică
sau fizică din FranŃa sau de oricine posedă o marcă înregistrată la National
Intellectual Property Institute, în UE sau o marcă internaŃională care include în
mod expres teritoriile franceze.
.it (Italia), un domeniu .it poate fi înregistrat de o persoană juridică sau
fizică dintr-o tară membră UE. Persoanele fizice sau organizaŃiile care nu au
număr VAT (TVA) sau cod fiscal nu pot avea mai mult de un singur nume de
domeniu .it.
.es (Spania), un domeniu .es poate fi înregistrat de orice persoană,
neexistând restricŃii la înregistrare.
.at (Austria), un domeniu .at poate fi înregistrat de orice persoană,
neexistând restricŃii la înregistrare.
118 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
.de – Germany
.dj – Djibouti .hm – Heard and McDonald Islands
.dk – Denmark .hn – Honduras
.dm – Dominica .hr – Croatia/Hrvatska
.do – Dominican Republic .ht – Haiti
.dz – Algeria .hu – Hungary
.ec – Ecuador .id – Indonesia
.ee – Estonia .ie – Ireland
.eg – Egypt .il – Israel
.eh – Western Sahara .im – Isle of Man
.er – Eritrea .in – India
.es – Spain .io – British Indian Ocean Territory
.et – Ethiopia .iq – Iraq
.eu – European Union .ir – Iran, Islamic Republic of
.fi – Finland .is – Iceland
.fj – Fiji .it – Italy
.fk – Falkland Islands (Malvinas) .je – Jersey
.fm – Micronesia, Federated States of .jm – Jamaica
.fo – Faroe Islands .jo – Jordan
.fr – France .jp – Japan
.ga – Gabon .ke – Kenya
.gb – United Kingdom .kg – Kyrgyzstan
.gd – Grenada .kh – Cambodia
.ge – Georgia .ki – Kiribati
.gf – French Guiana .km – Comoros
.gg – Guernsey .kn – Saint Kitts and Nevis
.gh – Ghana .kp – Korea, Democratic People's
.gi – Gibraltar Republic
.gl – Greenland .kr – Korea, Republic of
.gm – Gambia .kw – Kuwait
.gn – Guinea .ky – Cayman Islands
.gp – Guadeloupe .kz – Kazakhstan
.gq – Equatorial Guinea .la – Lao People's Democratic Republic
.gr – Greece .lb – Lebanon
.gs – South Georgia and the South .lc – Saint Lucia
Sandwich Islands .li – Liechtenstein
.gt – Guatemala .lk – Sri Lanka
.gu – Guam .lr – Liberia
.gw – Guinea-Bissau .ls – Lesotho
.gy – Guyana .lt – Lithuania
.hk – Hong Kong .lu – Luxembourg
120 Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice
4.3.9. HTTPS
HTTPS reprezintă HTTP încapsulat într-un flux SSL/TLS.
World Wide Web, prescurtat WWW sau simplu Web, este un sistem
de distribuŃie locală sau globală a informaŃiilor hipermedia.
Din punct de vedere tehnic, spaŃiul Web nu trebuie confundat cu
Internetul sau cu o reŃea, cum se crede greşit uneori. SpaŃul Web este doar o
aplicaŃie distribuită în Internet care pune la dispoziŃia utilizatorilor un sistem
global şi standardizat de comunicare multimedia.
IniŃial WWW a fost conceput de cercetătorii de la Laboratorul European
pentru Particule Fizice de la CERN (Centrul de Cercetări Nucleare de la
Geneva), sub conducerea lui Tim Berners-Lee, care au propus un sistem
hipertext (text neliniar, care permite salturi, analog trimiterilor din Biblie), care
permitea partajarea eficientă a informaŃiilor între membri unui grup de
cercetătători care studiau fizica energiilor înalte.
Deci, sistemul Web poate fi folosit şi pe calculatoare dintr-o reŃea care
nu este conectată la Internet sau chiar pe un singur calculator izolat, dar astăzi
se foloseşte mai ales în Internet pentru distribuŃia informaŃiilor hipermedia.
World Wide Web are facilităŃi multimedia şi integrative, o interfaŃă
grafică pentru utilizator - GUI (Graphic User Interface) foarte atrăgătoare din
punct de vedere grafic, practică şi simplu de folosit (prietenoasă).
Deci, Web-ul este un sistem distribuit deschis utilizat pentru distribuŃia
locală sau globală a informaŃiilor, putând fi extins şi implementat în diferite
moduri fără a-i afecta funcŃionalitatea. Se utilizează în prezent, în general, în
Internet pe baza modelului client/server. ClienŃii, adică navigatoarele Web sau
browserele Web (Internet Explorer, Netscape Navigator, NCSA Mosaic,
Mozilla, Opera ş.a.), au acces la informaŃiile hipermedia şi multiprotocol
organizate asociativ, aflate pe un server Web (cele mai cunoscute servere Web
sunt: Apache, Netscape Enterprise Server, Sun Web Server, Microsoft Internet
Information Server, Stronghold, Jigsaw).
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 125
ANEXĂ
MinidicŃionar de calcul paralel şi distribuit
Surse: [Dzi01], [DL03] ş.a.
Expresia
în română Descriere:
// engleză
1. Paralelism “Paralelism” (P): = termen generic pentru desemnarea
//parallelism unui ansamblu de tehnici şi procedee de creştere a
performanŃelor unui sistem informatic prin exploatarea
[PW95] simultană a mai multor resurse similare sau nu (în
[Mor98+] special elemente de procesare sau procesoare
[Gri00] interconectate în diverse moduri în acelaşi sistem fizic
sau computere cuplate într-o reŃea eterogenă etc.);
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 129
25. AplicaŃie Un program care poate rula în acelaşi timp două sau trei
multifir fire (//threads), porŃiuni independente de program;
// multithreaded Avantajul divizării în fire (threads) constă în
application posibilitatea oferită sistemului de operare de a decide
care fir are prioritate maximă de execuŃie.
influenŃată:
Elementul esenŃial ce caracterizează un sistem de
calcul în timp real este timpul de răspuns al aplicaŃiei,
timp care de multe ori nu poate fi suficient de micşorat
decât prin mijloace sau procedee de calcul paralel
52. Bază de date Este o colecŃie de date distribuită în mai multe locaŃii
distribuită fizice, controlată de un sistem de management al bazei
//distributed de date în care dispozitivele de stocare nu sunt ataşate în
database totalitate de o singură unitate centrală de prelucrare
obişnuită. Datele pot fi stocate în mai multe calculatoare
plasate în aceeaşi locaŃie fizică sau într-o reŃea. O bază
de date distribuită este distribuită în partiŃii/fragmente
separate. Fiecare partiŃie/fragment a unei baze de date
distribuită poate fi reprodusă (adică eşecuri redundante,
cum ar fi o matrice de hard-disk-uri). În afară de
replicarea şi fragmentarea bazelor de date distribuite,
există multe alte modele de tehnologii ale bazelor de
date distribuite. De exemplu, autonomia locală, şi
tehnologii sincrone şi asincrone ale bazelor de date
distrbuite. Aceste implementări ale tehnologiilor poate,
şi în mod sigur, depinde de nevoile beneficiarului şi
sensibilitatea/confidenŃialitatea datelor care vor fi
stocate în baza de date.
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 143
BIBLIOGRAFIE
[Dzi06] I. DZIłAC:
Parallel and Distributed Methods for Algebraic Systems
Resolution, Ed. Univ. Agora, Oradea, 2006.
[FKT01] I. FOSTER, C. KESSELMAN, S. TUECKE.
The anatomy of the Grid: Enabling scalable virtual
organization. The Intl. Journal of High Performance Computing
Applications, 15(3):200--222, Fall 2001.
[Gri00] D. GRIGORAŞ:
Calculul paralel- De la sisteme la programarea aplicaŃiilor, Ed.
Agora, 2000.
[HJ91] R.W. HOCKNEY, C.R. JESSHOPE:
Calculatoare paralele, arhitectură, programare şi algoritmi,
Ed. Tehnică, 1991 (traducere de Dan Grigoraş).
[Hwa93] K. HWANG:
Advanced Computer Architecture: Parallelism, Scalability,
Programability, Mc Graw-Hill, NV, 1993.
[Jod95a] E. JODAL:
DicŃionar de tehnică de calcul englez român, Ed.Albastră, 1995.
[Jod95b] E. JODAL:
DicŃionar de tehnică de calcul român englez, Ed, Albastră. 1995.
[KBM02] K. KRAUTER, R. BUYYA, M. MAHESWARAN:
A taxonomy and survey of grid resource management systems
for distributed computing, Softw. Pract. Exper. 2002; 32:135–
164 (DOI: 10.1002/spe.432)
[Kum+94] V. KUMAR, A. GRAMA , A. GUPTA, G. KARYPIS:
Introduction to Parallel Computing, Design and Analysis of
Algorithms, The Benjamin/ Cummings Publishing Company,
Inc., 1994.
[Lew93] T. LEWIS:
Foundations of parallel programming. A machine independent
approach, IEEE Computer Society Press, Los Alamitos, 1993.
[Mar+99] V. MARINESCU, R. HRIN, M. TOMESCU, M. HRIN, L.
ANANIA:
DicŃionar informatic trilingv, Ed. ALL, 1999.
[MD87] G. MOLDOVAN; S. DAMIAN:
On some generalizations of an optimization problem for
distributed databases, Stud. Univ. Babes-Bolyai, Math. 32,
No.3, pp. 67-76 (1987).
[MD88] GR. MOLDOVAN; S. DAMIAN:
On an optimization problem for distributed databases, An. Univ.
Bucur., Mat. 37, No.2, pp. 82-87 (1988).
Ioan DziŃac, Grigor Moldovan, Sisteme distribuite: Modele informatice 145
Webgrafie:
1. http://www.networkcomputing.com/
2. http://boinc.berkeley.edu/
3. http://www.networkcomputing.co.uk/
4. http://www.distributed.net/
5. http://dsonline.computer.org/portal/site/dsonline/index.jsp
6. http://distributedcomputing.info/
7. www.informatica.com/solutions/resource_center/glossary/default.htm
8. http://www.gridcomputing.com/
9. http://www-1.ibm.com/grid/
10. http://www.oracle.com/technologies/grid/index.html
11. http://www.gridcomputingplanet.com/
12. http://gridcafe.web.cern.ch/gridcafe/
13. http://www.realitygrid.org/information.html
14. http://www.springerlink.com/content/1573-7543/
15. http://www.ieeetfcc.org/
16. http://www.trygve.com/furbeowulf.html
17. http://library.thinkquest.org/C007645/english/0-welcome.htm
18. http://www.internet.com/
19. http://www.legi-internet.ro/
20. http://www.intranetjournal.com/
21. http://www.ici.ro/ici//revista/ria2003_4/art3.html
22. http://www-unix.mcs.anl.gov/mpi/
23. http://www.csm.ornl.gov/pvm/
24. http://www.linux.org
25. http://info.tech.pub.ro/~fionescu/CP/CP.html
26. http://www.linux-ha.org/ClusterResourceManager
27. http://www.csm.ornl.gov/pvm/
28. http://www.globus.org/
29. http://www.globus.org/toolkit/
30. http://detective.internet2.edu/applet/index.html
31. http://www.epm.ornl.gov/pvm/pvm_home.html
32. http://www.netlib.org/pvm3
33. http://www.ICANN.org
34. http://www.gac.icann.org/docs/index.htm
35. http://gac.icann.org/web/about/gac-outreach_Romanian.htm
36. http://www.domreg.ro/domain.html
Din Sisteme_distribuite_Dzitac.pdf
Cap1
Din acp_curs.pdf
Cap1,2,4