line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
#!/usr/bin/perl |
2
|
|
|
|
|
|
|
#------------------------------------------------------------------------------- |
3
|
|
|
|
|
|
|
# An extensible array implemented as a binary heap in 100% Pure Perl |
4
|
|
|
|
|
|
|
# Philip R Brenan at gmail dot com, Appa Apps Ltd, 2017 |
5
|
|
|
|
|
|
|
#------------------------------------------------------------------------------- |
6
|
|
|
|
|
|
|
|
7
|
|
|
|
|
|
|
package Binary::Heap::Array; |
8
|
|
|
|
|
|
|
require v5.16.0; |
9
|
1
|
|
|
1
|
|
536
|
use warnings FATAL => qw(all); |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
27
|
|
10
|
1
|
|
|
1
|
|
3
|
use strict; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
14
|
|
11
|
1
|
|
|
1
|
|
2
|
use Carp; |
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
59
|
|
12
|
1
|
|
|
1
|
|
459
|
use Data::Table::Text 2017.114 qw(:all); |
|
1
|
|
|
|
|
15110
|
|
|
1
|
|
|
|
|
191
|
|
13
|
1
|
|
|
1
|
|
433
|
use Time::HiRes qw(time); |
|
1
|
|
|
|
|
967
|
|
|
1
|
|
|
|
|
3
|
|
14
|
|
|
|
|
|
|
our $VERSION = 2017.121; |
15
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
saveToS3('BinaryHeapArray') if 0; # Save to S3:- this will not work, unless you're me, or you happen, to know the key |
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
my @speedChars = split //, 'ipsw'; # The names of the optimisations |
19
|
|
|
|
|
|
|
my @packages; # The names of the generated packages |
20
|
|
|
|
|
|
|
our @optimisations; # All combinations of optimizations |
21
|
|
|
|
|
|
|
|
22
|
|
|
|
|
|
|
for my $speedNo(0..(1<<@speedChars)-1) # Create a package for each combination of optimisations |
23
|
|
|
|
|
|
|
{my $pack = ''; |
24
|
|
|
|
|
|
|
my $opts = ''; |
25
|
|
|
|
|
|
|
for(keys @speedChars) # Each optimisation available |
26
|
|
|
|
|
|
|
{my $c = ($speedNo>>$_) % 2; |
27
|
|
|
|
|
|
|
$pack .= $c ? uc($speedChars[$_]) : lc($speedChars[$_]); |
28
|
|
|
|
|
|
|
$opts .= $c ? lc($speedChars[$_]) : ''; |
29
|
|
|
|
|
|
|
} |
30
|
|
|
|
|
|
|
push @optimisations, $opts; # All optimization possibilities |
31
|
|
|
|
|
|
|
|
32
|
|
|
|
|
|
|
my $code = &code; # Base code |
33
|
|
|
|
|
|
|
my $s = <
|
34
|
|
|
|
|
|
|
package Binary::Heap::Array::$pack; |
35
|
|
|
|
|
|
|
use Data::Dump qw(dump); |
36
|
|
|
|
|
|
|
use Data::Table::Text 2017.114 qw(:all); |
37
|
|
|
|
|
|
|
use Carp; |
38
|
|
|
|
|
|
|
|
39
|
|
|
|
|
|
|
sub speedNo{$speedNo} # Speed number |
40
|
|
|
|
|
|
|
|
41
|
|
|
|
|
|
|
$code |
42
|
|
|
|
|
|
|
END |
43
|
1
|
0
|
0
|
1
|
|
3
|
eval $s; # Generate and optimise the package |
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
53
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
0
|
1
|
|
13
|
|
|
1
|
0
|
0
|
1
|
|
159
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
109
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
49
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
0
|
1
|
|
0
|
|
|
1
|
0
|
0
|
1
|
|
48
|
|
|
1
|
0
|
0
|
1
|
|
2
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
58
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
55
|
|
|
1
|
0
|
0
|
1
|
|
5
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
73
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
51
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
1503
|
|
|
1
|
0
|
0
|
1
|
|
4
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
33
|
1
|
|
10
|
|
|
1
|
0
|
33
|
1
|
|
5
|
|
|
1
|
0
|
33
|
1
|
|
1
|
|
|
1
|
0
|
33
|
1
|
|
50
|
|
|
1
|
0
|
33
|
1
|
|
3
|
|
|
1
|
0
|
33
|
1
|
|
12
|
|
|
1
|
0
|
33
|
1
|
|
155
|
|
|
1
|
0
|
33
|
1
|
|
4
|
|
|
1
|
0
|
33
|
1
|
|
0
|
|
|
1
|
0
|
33
|
1
|
|
104
|
|
|
1
|
0
|
33
|
1
|
|
3
|
|
|
1
|
0
|
33
|
1
|
|
1
|
|
|
1
|
0
|
33
|
1
|
|
51
|
|
|
1
|
0
|
33
|
1
|
|
3
|
|
|
1
|
0
|
33
|
1
|
|
1
|
|
|
1
|
0
|
33
|
1
|
|
45
|
|
|
1
|
0
|
0
|
1
|
|
2
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
66
|
1
|
|
53
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
66
|
1
|
|
48
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
66
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
49
|
|
|
1
|
0
|
66
|
1
|
|
14
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
66
|
1
|
|
52
|
|
|
1
|
0
|
66
|
1
|
|
3
|
|
|
1
|
0
|
66
|
1
|
|
0
|
|
|
1
|
0
|
66
|
1
|
|
1748
|
|
|
1
|
0
|
0
|
1
|
|
4
|
|
|
1
|
0
|
66
|
1
|
|
2
|
|
|
1
|
0
|
0
|
1
|
|
5
|
|
|
1
|
0
|
66
|
1
|
|
4
|
|
|
1
|
0
|
66
|
1
|
|
2
|
|
|
1
|
0
|
0
|
1
|
|
39
|
|
|
1
|
0
|
66
|
1
|
|
3
|
|
|
1
|
0
|
66
|
1
|
|
12
|
|
|
1
|
0
|
0
|
1
|
|
155
|
|
|
1
|
0
|
0
|
1
|
|
4
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
106
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
66
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
49
|
|
|
1
|
0
|
66
|
1
|
|
3
|
|
|
1
|
0
|
66
|
1
|
|
1
|
|
|
1
|
0
|
0
|
1
|
|
47
|
|
|
1
|
0
|
66
|
1
|
|
2
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
66
|
1
|
|
53
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
0
|
1
|
|
1
|
|
|
1
|
0
|
66
|
1
|
|
50
|
|
|
1
|
0
|
66
|
1
|
|
3
|
|
|
1
|
0
|
66
|
1
|
|
1
|
|
|
1
|
0
|
66
|
1
|
|
49
|
|
|
1
|
0
|
0
|
1
|
|
3
|
|
|
1
|
0
|
66
|
1
|
|
0
|
|
|
1
|
0
|
0
|
1
|
|
45
|
|
|
1
|
0
|
66
|
1
|
|
3
|
|
|
1
|
0
|
0
|
1
|
|
0
|
|
|
1
|
0
|
0
|
1
|
|
1471
|
|
|
1
|
50
|
0
|
1
|
|
5
|
|
|
1
|
100
|
33
|
1
|
|
1
|
|
|
1
|
50
|
33
|
1
|
|
6
|
|
|
1
|
100
|
0
|
1
|
|
5
|
|
|
1
|
50
|
0
|
1
|
|
2
|
|
|
1
|
100
|
33
|
1
|
|
57
|
|
|
1
|
50
|
33
|
1
|
|
4
|
|
|
1
|
100
|
0
|
1
|
|
14
|
|
|
1
|
50
|
33
|
1
|
|
156
|
|
|
1
|
100
|
0
|
1
|
|
4
|
|
|
1
|
50
|
0
|
1
|
|
1
|
|
|
1
|
100
|
33
|
1
|
|
99
|
|
|
1
|
50
|
0
|
1
|
|
4
|
|
|
1
|
100
|
33
|
1
|
|
1
|
|
|
1
|
50
|
0
|
1
|
|
64
|
|
|
1
|
100
|
33
|
1
|
|
3
|
|
|
1
|
50
|
0
|
1
|
|
1
|
|
|
1
|
100
|
66
|
1
|
|
46
|
|
|
1
|
50
|
66
|
1
|
|
3
|
|
|
1
|
100
|
0
|
1
|
|
1
|
|
|
1
|
50
|
0
|
1
|
|
60
|
|
|
1
|
100
|
0
|
1
|
|
3
|
|
|
1
|
50
|
0
|
1
|
|
1
|
|
|
1
|
100
|
66
|
1
|
|
54
|
|
|
1
|
50
|
66
|
1
|
|
6
|
|
|
1
|
100
|
0
|
1
|
|
1
|
|
|
1
|
50
|
0
|
1
|
|
47
|
|
|
1
|
100
|
66
|
1
|
|
3
|
|
|
1
|
50
|
66
|
1
|
|
0
|
|
|
1
|
100
|
66
|
1
|
|
48
|
|
|
1
|
50
|
66
|
1
|
|
2
|
|
|
1
|
100
|
0
|
1
|
|
1
|
|
|
1
|
50
|
0
|
1
|
|
1433
|
|
|
1
|
100
|
66
|
1
|
|
5
|
|
|
1
|
100
|
66
|
1
|
|
1
|
|
|
1
|
50
|
0
|
1
|
|
8
|
|
|
1
|
100
|
66
|
1
|
|
4
|
|
|
1
|
100
|
0
|
1
|
|
1
|
|
|
1
|
50
|
66
|
1
|
|
43
|
|
|
1
|
100
|
0
|
1
|
|
5
|
|
|
1
|
100
|
0
|
1
|
|
12
|
|
|
1
|
50
|
0
|
1
|
|
152
|
|
|
1
|
100
|
66
|
1
|
|
4
|
|
|
1
|
100
|
66
|
1
|
|
1
|
|
|
1
|
50
|
66
|
1
|
|
129
|
|
|
1
|
100
|
66
|
1
|
|
4
|
|
|
1
|
100
|
0
|
1
|
|
1
|
|
|
1
|
50
|
0
|
1
|
|
50
|
|
|
1
|
100
|
66
|
1
|
|
4
|
|
|
1
|
100
|
33
|
1
|
|
0
|
|
|
1
|
50
|
33
|
1
|
|
49
|
|
|
1
|
100
|
33
|
1
|
|
3
|
|
|
1
|
100
|
33
|
1
|
|
1
|
|
|
1
|
50
|
33
|
1
|
|
55
|
|
|
1
|
100
|
33
|
1
|
|
5
|
|
|
1
|
100
|
33
|
1
|
|
1
|
|
|
1
|
50
|
33
|
1
|
|
51
|
|
|
1
|
100
|
66
|
1
|
|
3
|
|
|
1
|
100
|
33
|
1
|
|
1
|
|
|
1
|
50
|
33
|
1
|
|
46
|
|
|
1
|
100
|
33
|
1
|
|
3
|
|
|
1
|
100
|
33
|
1
|
|
1
|
|
|
1
|
50
|
33
|
1
|
|
47
|
|
|
1
|
100
|
33
|
1
|
|
3
|
|
|
1
|
100
|
33
|
1
|
|
1
|
|
|
1
|
50
|
33
|
1
|
|
1424
|
|
|
1
|
100
|
33
|
1
|
|
4
|
|
|
1
|
100
|
33
|
1
|
|
1
|
|
|
1
|
50
|
33
|
1
|
|
5
|
|
|
1
|
100
|
66
|
1
|
|
4
|
|
|
1
|
100
|
33
|
1
|
|
1
|
|
|
1
|
50
|
33
|
1
|
|
40
|
|
|
1
|
100
|
66
|
1
|
|
3
|
|
|
1
|
100
|
33
|
1
|
|
12
|
|
|
1
|
50
|
33
|
1
|
|
154
|
|
|
1
|
100
|
66
|
1
|
|
3
|
|
|
1
|
100
|
33
|
1
|
|
1
|
|
|
1
|
50
|
33
|
1
|
|
104
|
|
|
1
|
100
|
33
|
1
|
|
3
|
|
|
1
|
100
|
33
|
1
|
|
4
|
|
|
1
|
50
|
33
|
0
|
|
49
|
|
|
1
|
100
|
66
|
13664
|
|
3
|
|
|
1
|
100
|
33
|
9704
|
|
1
|
|
|
1
|
50
|
33
|
9704
|
|
45
|
|
|
1
|
100
|
33
|
9704
|
|
3
|
|
|
1
|
100
|
33
|
13640
|
|
2
|
|
|
1
|
50
|
33
|
13674
|
|
56
|
|
|
1
|
100
|
33
|
13640
|
|
3
|
|
|
1
|
100
|
33
|
9704
|
|
4
|
|
|
1
|
50
|
33
|
13664
|
|
71
|
|
|
1
|
100
|
66
|
13643
|
|
4
|
|
|
1
|
100
|
33
|
9704
|
|
1
|
|
|
1
|
50
|
33
|
9704
|
|
77
|
|
|
1
|
100
|
66
|
9704
|
|
3
|
|
|
1
|
100
|
33
|
9704
|
|
1
|
|
|
1
|
50
|
33
|
13664
|
|
54
|
|
|
1
|
100
|
0
|
13643
|
|
3
|
|
|
1
|
100
|
0
|
547
|
|
1
|
|
|
1
|
50
|
66
|
547
|
|
1443
|
|
|
1
|
100
|
33
|
3712
|
|
4
|
|
|
1
|
100
|
0
|
547
|
|
1
|
|
|
1
|
50
|
66
|
3733
|
|
5
|
|
|
1
|
100
|
0
|
3712
|
|
4
|
|
|
1
|
100
|
0
|
3712
|
|
2
|
|
|
1
|
50
|
66
|
3712
|
|
41
|
|
|
1
|
100
|
33
|
547
|
|
3
|
|
|
1
|
100
|
33
|
547
|
|
14
|
|
|
1
|
50
|
0
|
547
|
|
172
|
|
|
1
|
100
|
0
|
3733
|
|
4
|
|
|
1
|
100
|
0
|
3733
|
|
1
|
|
|
1
|
50
|
66
|
3737
|
|
114
|
|
|
1
|
100
|
33
|
547
|
|
4
|
|
|
1
|
100
|
0
|
547
|
|
1
|
|
|
1
|
50
|
0
|
9937
|
|
47
|
|
|
1
|
100
|
0
|
9928
|
|
3
|
|
|
1
|
100
|
0
|
9157
|
|
2
|
|
|
1
|
50
|
0
|
9157
|
|
44
|
|
|
1
|
100
|
0
|
9157
|
|
4
|
|
|
1
|
100
|
0
|
9931
|
|
0
|
|
|
1
|
50
|
0
|
9931
|
|
57
|
|
|
1
|
100
|
0
|
9931
|
|
3
|
|
|
1
|
100
|
0
|
9157
|
|
0
|
|
|
1
|
50
|
0
|
9157
|
|
50
|
|
|
1
|
100
|
0
|
9928
|
|
4
|
|
|
1
|
100
|
0
|
9157
|
|
1
|
|
|
1
|
50
|
0
|
9931
|
|
63
|
|
|
1
|
100
|
0
|
9157
|
|
3
|
|
|
1
|
100
|
0
|
9931
|
|
1
|
|
|
1
|
100
|
100
|
9157
|
|
73
|
|
|
1
|
100
|
100
|
4257
|
|
5
|
|
|
1
|
100
|
100
|
4257
|
|
1
|
|
|
1
|
50
|
100
|
4257
|
|
1487
|
|
|
1
|
100
|
100
|
4257
|
|
4
|
|
|
1
|
0
|
100
|
4257
|
|
1
|
|
|
1
|
0
|
100
|
4257
|
|
5
|
|
|
1
|
50
|
100
|
4257
|
|
5
|
|
|
1
|
100
|
100
|
4257
|
|
1
|
|
|
1
|
0
|
100
|
4257
|
|
44
|
|
|
1
|
0
|
100
|
4257
|
|
4
|
|
|
1
|
50
|
100
|
4257
|
|
17
|
|
|
1
|
100
|
100
|
4257
|
|
171
|
|
|
1
|
0
|
100
|
4257
|
|
5
|
|
|
1
|
0
|
100
|
4257
|
|
0
|
|
|
1
|
50
|
100
|
4257
|
|
100
|
|
|
1
|
100
|
33
|
4257
|
|
3
|
|
|
1
|
100
|
0
|
0
|
|
1
|
|
|
1
|
100
|
33
|
0
|
|
51
|
|
|
1
|
50
|
0
|
0
|
|
3
|
|
|
1
|
100
|
66
|
0
|
|
1
|
|
|
1
|
100
|
33
|
0
|
|
46
|
|
|
1
|
100
|
33
|
0
|
|
3
|
|
|
1
|
50
|
0
|
0
|
|
4
|
|
|
1
|
100
|
66
|
0
|
|
55
|
|
|
1
|
100
|
33
|
0
|
|
6
|
|
|
1
|
100
|
66
|
0
|
|
1
|
|
|
1
|
50
|
33
|
0
|
|
50
|
|
|
1
|
100
|
33
|
0
|
|
3
|
|
|
1
|
100
|
0
|
0
|
|
1
|
|
|
1
|
100
|
33
|
0
|
|
47
|
|
|
1
|
50
|
0
|
0
|
|
3
|
|
|
1
|
100
|
66
|
0
|
|
1
|
|
|
1
|
100
|
33
|
0
|
|
44
|
|
|
1
|
100
|
33
|
0
|
|
4
|
|
|
1
|
50
|
0
|
941725
|
|
1
|
|
|
1
|
100
|
33
|
0
|
|
1423
|
|
|
1
|
0
|
0
|
0
|
|
7
|
|
|
1
|
0
|
33
|
941725
|
|
1
|
|
|
1
|
50
|
0
|
0
|
|
6
|
|
|
1
|
100
|
66
|
60179
|
|
4
|
|
|
1
|
0
|
33
|
0
|
|
1
|
|
|
1
|
0
|
66
|
941725
|
|
45
|
|
|
1
|
50
|
33
|
0
|
|
3
|
|
|
1
|
100
|
66
|
941725
|
|
12
|
|
|
1
|
0
|
33
|
60179
|
|
151
|
|
|
1
|
0
|
66
|
60204
|
|
4
|
|
|
1
|
50
|
33
|
60179
|
|
1
|
|
|
1
|
100
|
|
0
|
|
99
|
|
|
1
|
0
|
|
80892
|
|
3
|
|
|
1
|
0
|
|
0
|
|
1
|
|
|
1
|
50
|
|
80923
|
|
46
|
|
|
1
|
100
|
|
80923
|
|
4
|
|
|
1
|
0
|
|
0
|
|
1
|
|
|
1
|
0
|
|
1292606
|
|
72
|
|
|
1
|
50
|
|
1292606
|
|
3
|
|
|
1
|
100
|
|
0
|
|
1
|
|
|
1
|
100
|
|
0
|
|
58
|
|
|
1
|
100
|
|
0
|
|
4
|
|
|
1
|
50
|
|
0
|
|
0
|
|
|
1
|
100
|
|
0
|
|
49
|
|
|
1
|
100
|
|
1292606
|
|
3
|
|
|
1
|
100
|
|
0
|
|
1
|
|
|
1
|
50
|
|
1292606
|
|
47
|
|
|
1
|
0
|
|
80881
|
|
3
|
|
|
1
|
0
|
|
9
|
|
1
|
|
|
1
|
0
|
|
9
|
|
72
|
|
|
1
|
0
|
|
9
|
|
7
|
|
|
1
|
0
|
|
9
|
|
1
|
|
|
1
|
0
|
|
9
|
|
1382
|
|
|
1
|
0
|
|
9
|
|
4
|
|
|
1
|
0
|
|
9
|
|
1
|
|
|
1
|
0
|
|
9
|
|
8
|
|
|
1
|
0
|
|
9
|
|
5
|
|
|
1
|
0
|
|
9
|
|
1
|
|
|
1
|
0
|
|
9
|
|
40
|
|
|
1
|
0
|
|
9
|
|
14
|
|
|
1
|
0
|
|
9
|
|
15
|
|
|
1
|
0
|
|
9
|
|
160
|
|
|
1
|
0
|
|
9
|
|
4
|
|
|
1
|
0
|
|
9
|
|
1
|
|
|
1
|
0
|
|
36350
|
|
101
|
|
|
1
|
50
|
|
36329
|
|
4
|
|
|
1
|
0
|
|
36329
|
|
1
|
|
|
1
|
0
|
|
333714
|
|
61
|
|
|
1
|
50
|
|
36350
|
|
3
|
|
|
1
|
0
|
|
36331
|
|
1
|
|
|
1
|
50
|
|
333714
|
|
47
|
|
|
1
|
0
|
|
333714
|
|
3
|
|
|
1
|
50
|
|
333714
|
|
0
|
|
|
1
|
0
|
|
333714
|
|
55
|
|
|
1
|
50
|
|
333714
|
|
3
|
|
|
1
|
50
|
|
36329
|
|
1
|
|
|
1
|
50
|
|
333714
|
|
51
|
|
|
1
|
50
|
|
333714
|
|
4
|
|
|
1
|
0
|
|
36350
|
|
1
|
|
|
1
|
50
|
|
36350
|
|
49
|
|
|
1
|
0
|
|
0
|
|
3
|
|
|
1
|
50
|
|
3465362
|
|
1
|
|
|
1
|
50
|
|
0
|
|
42
|
|
|
1
|
0
|
|
2817727
|
|
3
|
|
|
1
|
50
|
|
0
|
|
1
|
|
|
1
|
50
|
|
0
|
|
1461
|
|
|
1
|
0
|
|
181243
|
|
5
|
|
|
1
|
0
|
|
3128036
|
|
1
|
|
|
1
|
0
|
|
223837
|
|
9
|
|
|
1
|
0
|
|
162182
|
|
7
|
|
|
1
|
0
|
|
0
|
|
2
|
|
|
1
|
50
|
|
204728
|
|
58
|
|
|
1
|
0
|
|
0
|
|
4
|
|
|
1
|
50
|
|
3775671
|
|
14
|
|
|
1
|
50
|
|
0
|
|
162
|
|
|
1
|
50
|
|
0
|
|
3
|
|
|
1
|
50
|
|
152204
|
|
1
|
|
|
1
|
50
|
|
152204
|
|
99
|
|
|
1
|
50
|
|
133144
|
|
3
|
|
|
1
|
50
|
|
1936991
|
|
1
|
|
|
1
|
50
|
|
979047
|
|
51
|
|
|
1
|
50
|
|
1936991
|
|
3
|
|
|
1
|
50
|
|
90579
|
|
1
|
|
|
1
|
50
|
|
1289356
|
|
55
|
|
|
1
|
50
|
|
90593
|
|
3
|
|
|
1
|
50
|
|
109618
|
|
1
|
|
|
1
|
50
|
|
109618
|
|
53
|
|
|
1
|
50
|
|
979047
|
|
3
|
|
|
1
|
50
|
|
1626682
|
|
1
|
|
|
1
|
50
|
|
1289356
|
|
48
|
|
|
1
|
50
|
|
133144
|
|
3
|
|
|
1
|
50
|
|
1626682
|
|
2
|
|
|
1
|
50
|
|
1734
|
|
48
|
|
|
1
|
50
|
|
297683
|
|
3
|
|
|
1
|
50
|
|
297683
|
|
2
|
|
|
1
|
50
|
|
1734
|
|
42
|
|
|
1
|
50
|
|
1734
|
|
3
|
|
|
1
|
50
|
|
297683
|
|
1
|
|
|
1
|
50
|
|
297683
|
|
1490
|
|
|
1
|
50
|
|
1734
|
|
5
|
|
|
1
|
50
|
|
297683
|
|
1
|
|
|
1
|
50
|
|
1734
|
|
5
|
|
|
1
|
50
|
|
1734
|
|
4
|
|
|
1
|
50
|
|
297683
|
|
1
|
|
|
1
|
50
|
|
1734
|
|
41
|
|
|
1
|
50
|
|
297683
|
|
3
|
|
|
1
|
50
|
|
1735
|
|
14
|
|
|
1
|
100
|
|
297683
|
|
158
|
|
|
1
|
100
|
|
0
|
|
4
|
|
|
1
|
100
|
|
48989
|
|
1
|
|
|
1
|
100
|
|
67957
|
|
132
|
|
|
1
|
100
|
|
0
|
|
4
|
|
|
1
|
100
|
|
0
|
|
1
|
|
|
1
|
100
|
|
0
|
|
50
|
|
|
1
|
100
|
|
0
|
|
4
|
|
|
1
|
100
|
|
48982
|
|
1
|
|
|
1
|
100
|
|
67957
|
|
49
|
|
|
1
|
100
|
|
0
|
|
3
|
|
|
1
|
100
|
|
0
|
|
1
|
|
|
1
|
100
|
|
48982
|
|
112
|
|
|
1
|
100
|
|
67960
|
|
4
|
|
|
1
|
100
|
|
67960
|
|
1
|
|
|
1
|
100
|
|
48982
|
|
56
|
|
|
1
|
0
|
|
0
|
|
4
|
|
|
1
|
50
|
|
0
|
|
1
|
|
|
1
|
0
|
|
16575
|
|
51
|
|
|
1
|
50
|
|
16588
|
|
3
|
|
|
1
|
0
|
|
0
|
|
1
|
|
|
1
|
0
|
|
35594
|
|
50
|
|
|
1
|
50
|
|
0
|
|
7
|
|
|
1
|
50
|
|
16575
|
|
0
|
|
|
1
|
50
|
|
0
|
|
1405
|
|
|
1
|
50
|
|
0
|
|
4
|
|
|
1
|
0
|
|
0
|
|
1
|
|
|
1
|
50
|
|
35588
|
|
5
|
|
|
1
|
0
|
|
16575
|
|
4
|
|
|
1
|
50
|
|
35588
|
|
2
|
|
|
1
|
0
|
|
35594
|
|
41
|
|
|
1
|
0
|
|
0
|
|
4
|
|
|
1
|
50
|
|
0
|
|
12
|
|
|
1
|
50
|
|
37807
|
|
154
|
|
|
1
|
50
|
|
333714
|
|
4
|
|
|
1
|
50
|
|
333714
|
|
1
|
|
|
1
|
50
|
|
37806
|
|
99
|
|
|
1
|
50
|
|
333714
|
|
4
|
|
|
1
|
50
|
|
333714
|
|
1
|
|
|
1
|
50
|
|
333714
|
|
51
|
|
|
1
|
50
|
|
37807
|
|
3
|
|
|
1
|
50
|
|
37806
|
|
2
|
|
|
1
|
50
|
|
37808
|
|
46
|
|
|
1
|
50
|
|
333714
|
|
2
|
|
|
1
|
50
|
|
37807
|
|
1
|
|
|
1
|
50
|
|
333714
|
|
87
|
|
|
1
|
50
|
|
333714
|
|
4
|
|
|
1
|
50
|
|
37806
|
|
1
|
|
|
1
|
100
|
|
37807
|
|
55
|
|
|
1
|
50
|
|
827
|
|
3
|
|
|
1
|
0
|
|
828
|
|
1
|
|
|
1
|
0
|
|
827
|
|
48
|
|
|
1
|
0
|
|
827
|
|
3
|
|
|
1
|
0
|
|
827
|
|
1
|
|
|
1
|
0
|
|
827
|
|
49
|
|
|
1
|
0
|
|
827
|
|
7
|
|
|
1
|
0
|
|
827
|
|
0
|
|
|
1
|
0
|
|
827
|
|
1426
|
|
|
1
|
0
|
|
827
|
|
4
|
|
|
1
|
0
|
|
827
|
|
1
|
|
|
1
|
50
|
|
827
|
|
6
|
|
|
1
|
100
|
|
827
|
|
4
|
|
|
1
|
0
|
|
827
|
|
2
|
|
|
1
|
50
|
|
827
|
|
40
|
|
|
1
|
50
|
|
827
|
|
4
|
|
|
1
|
50
|
|
19059
|
|
13
|
|
|
1
|
50
|
|
310353
|
|
152
|
|
|
1
|
50
|
|
310353
|
|
4
|
|
|
1
|
50
|
|
19015
|
|
1
|
|
|
1
|
100
|
|
310353
|
|
104
|
|
|
1
|
50
|
|
310353
|
|
3
|
|
|
1
|
100
|
|
310353
|
|
2
|
|
|
1
|
100
|
|
19059
|
|
52
|
|
|
1
|
50
|
|
310353
|
|
56
|
|
|
1
|
100
|
|
19018
|
|
2
|
|
|
1
|
0
|
|
19018
|
|
45
|
|
|
1
|
50
|
|
19077
|
|
3
|
|
|
1
|
50
|
|
310353
|
|
2
|
|
|
1
|
50
|
|
19059
|
|
56
|
|
|
1
|
50
|
|
310353
|
|
3
|
|
|
1
|
50
|
|
19015
|
|
2
|
|
|
1
|
50
|
|
0
|
|
47
|
|
|
1
|
50
|
|
0
|
|
3
|
|
|
1
|
50
|
|
0
|
|
1
|
|
|
1
|
100
|
|
0
|
|
49
|
|
|
1
|
100
|
|
0
|
|
3
|
|
|
1
|
50
|
|
0
|
|
1
|
|
|
1
|
100
|
|
0
|
|
63
|
|
|
1
|
50
|
|
0
|
|
5
|
|
|
1
|
0
|
|
0
|
|
2
|
|
|
1
|
0
|
|
0
|
|
1440
|
|
|
1
|
0
|
|
0
|
|
5
|
|
|
1
|
0
|
|
0
|
|
1
|
|
|
1
|
0
|
|
0
|
|
6
|
|
|
1
|
0
|
|
0
|
|
6
|
|
|
1
|
0
|
|
0
|
|
1
|
|
|
1
|
0
|
|
0
|
|
44
|
|
|
1
|
0
|
|
3434540
|
|
4
|
|
|
1
|
0
|
|
7210211
|
|
12
|
|
|
1
|
50
|
|
403372
|
|
177
|
|
|
1
|
100
|
|
3124231
|
|
4
|
|
|
1
|
50
|
|
198644
|
|
1
|
|
|
1
|
0
|
|
441578
|
|
106
|
|
|
1
|
0
|
|
175159
|
|
4
|
|
|
1
|
0
|
|
5294343
|
|
1
|
|
|
1
|
0
|
|
5914961
|
|
47
|
|
|
1
|
0
|
|
156079
|
|
3
|
|
|
1
|
0
|
|
356402
|
|
1
|
|
|
1
|
0
|
|
2786925
|
|
44
|
|
|
1
|
0
|
|
217741
|
|
3
|
|
|
1
|
0
|
|
318278
|
|
1
|
|
|
1
|
0
|
|
6589593
|
|
55
|
|
|
1
|
50
|
|
2476616
|
|
2
|
|
|
1
|
100
|
|
6613348
|
|
1
|
|
|
1
|
0
|
|
727241
|
|
53
|
|
|
1
|
50
|
|
576769
|
|
3
|
|
|
1
|
50
|
|
758012
|
|
1
|
|
|
1
|
50
|
|
10389019
|
|
46
|
|
|
1
|
50
|
|
7579397
|
|
6
|
|
|
1
|
50
|
|
7258334
|
|
1
|
|
|
1
|
50
|
|
522513
|
|
48
|
|
|
1
|
50
|
|
10397124
|
|
3
|
|
|
1
|
50
|
|
6934411
|
|
1
|
|
|
1
|
100
|
|
538422
|
|
1429
|
|
|
1
|
100
|
|
560829
|
|
4
|
|
|
1
|
50
|
|
10386370
|
|
1
|
|
|
1
|
100
|
|
10399773
|
|
5
|
|
|
1
|
0
|
|
762259
|
|
4
|
|
|
1
|
50
|
|
723135
|
|
1
|
|
|
1
|
50
|
|
647721
|
|
40
|
|
|
1
|
50
|
|
124645
|
|
3
|
|
|
1
|
50
|
|
958074
|
|
13
|
|
|
1
|
50
|
|
958074
|
|
154
|
|
|
1
|
50
|
|
181590
|
|
4
|
|
|
1
|
50
|
|
181590
|
|
1
|
|
|
1
|
50
|
|
647721
|
|
132
|
|
|
1
|
100
|
|
181602
|
|
5
|
|
|
1
|
100
|
|
124607
|
|
1
|
|
|
1
|
50
|
|
181602
|
|
47
|
|
|
1
|
100
|
|
958074
|
|
3
|
|
|
1
|
50
|
|
124607
|
|
1
|
|
|
1
|
0
|
|
647721
|
|
50
|
|
|
1
|
0
|
|
124607
|
|
3
|
|
|
1
|
0
|
|
647721
|
|
0
|
|
|
1
|
0
|
|
958074
|
|
56
|
|
|
1
|
0
|
|
60137
|
|
3
|
|
|
1
|
0
|
|
120359
|
|
1
|
|
|
1
|
0
|
|
60140
|
|
50
|
|
|
1
|
0
|
|
941726
|
|
3
|
|
|
1
|
0
|
|
120359
|
|
1
|
|
|
1
|
0
|
|
1883451
|
|
50
|
|
|
1
|
50
|
|
1883451
|
|
3
|
|
|
1
|
100
|
|
941726
|
|
2
|
|
|
1
|
0
|
|
1883451
|
|
48
|
|
|
1
|
50
|
|
60140
|
|
3
|
|
|
1
|
50
|
|
1883451
|
|
1
|
|
|
1
|
50
|
|
60137
|
|
1423
|
|
|
1
|
50
|
|
120409
|
|
4
|
|
|
1
|
50
|
|
941726
|
|
2
|
|
|
1
|
50
|
|
941726
|
|
5
|
|
|
0
|
100
|
|
120359
|
|
0
|
|
|
0
|
50
|
|
1279008
|
|
0
|
|
|
0
|
100
|
|
1279008
|
|
0
|
|
|
0
|
100
|
|
78954
|
|
0
|
|
|
0
|
50
|
|
2571609
|
|
0
|
|
|
0
|
100
|
|
159784
|
|
0
|
|
|
0
|
50
|
|
2571609
|
|
0
|
|
|
0
|
0
|
|
1279008
|
|
0
|
|
|
0
|
0
|
|
1279008
|
|
0
|
|
|
0
|
0
|
|
78903
|
|
0
|
|
|
0
|
0
|
|
2571609
|
|
0
|
|
|
0
|
0
|
|
78954
|
|
0
|
|
|
0
|
0
|
|
159803
|
|
0
|
|
|
0
|
0
|
|
159868
|
|
0
|
|
|
0
|
0
|
|
159868
|
|
0
|
|
|
0
|
0
|
|
78903
|
|
0
|
|
|
0
|
0
|
|
2571609
|
|
0
|
|
|
0
|
50
|
|
190851
|
|
0
|
|
|
0
|
100
|
|
309838
|
|
0
|
|
|
0
|
50
|
|
1660047
|
|
0
|
|
|
0
|
0
|
|
681000
|
|
0
|
|
|
0
|
0
|
|
142837
|
|
0
|
|
|
0
|
0
|
|
100285
|
|
0
|
|
|
0
|
0
|
|
2280709
|
|
0
|
|
|
0
|
0
|
|
1638988
|
|
0
|
|
|
0
|
0
|
|
275981
|
|
0
|
|
|
0
|
0
|
|
110271
|
|
0
|
|
|
0
|
0
|
|
991353
|
|
0
|
|
|
0
|
0
|
|
157634
|
|
0
|
|
|
0
|
0
|
|
1328635
|
|
0
|
|
|
0
|
50
|
|
2955317
|
|
0
|
|
|
0
|
100
|
|
3575979
|
|
0
|
|
|
0
|
0
|
|
219889
|
|
0
|
|
|
0
|
50
|
|
0
|
|
0
|
|
|
0
|
50
|
|
0
|
|
0
|
|
|
0
|
50
|
|
0
|
|
0
|
|
|
0
|
50
|
|
0
|
|
0
|
|
|
0
|
50
|
|
0
|
|
0
|
|
|
0
|
50
|
|
0
|
|
0
|
|
|
0
|
50
|
|
0
|
|
0
|
|
|
0
|
50
|
|
0
|
|
0
|
|
|
0
|
100
|
|
0
|
|
0
|
|
|
0
|
100
|
|
0
|
|
0
|
|
|
0
|
50
|
|
0
|
|
0
|
|
|
0
|
100
|
|
0
|
|
0
|
|
|
0
|
50
|
|
0
|
|
0
|
|
|
0
|
0
|
|
0
|
|
0
|
|
|
0
|
0
|
|
0
|
|
0
|
|
|
0
|
0
|
|
0
|
|
0
|
|
|
0
|
0
|
|
782
|
|
0
|
|
|
0
|
0
|
|
782
|
|
0
|
|
|
0
|
0
|
|
782
|
|
0
|
|
|
0
|
0
|
|
782
|
|
0
|
|
|
0
|
0
|
|
782
|
|
0
|
|
|
0
|
0
|
|
785
|
|
0
|
|
|
0
|
0
|
|
782
|
|
0
|
|
|
0
|
50
|
|
782
|
|
0
|
|
|
0
|
100
|
|
782
|
|
0
|
|
|
0
|
0
|
|
782
|
|
0
|
|
|
0
|
50
|
|
782
|
|
0
|
|
|
0
|
50
|
|
782
|
|
0
|
|
|
0
|
50
|
|
782
|
|
0
|
|
|
0
|
50
|
|
782
|
|
0
|
|
|
0
|
50
|
|
782
|
|
0
|
|
|
0
|
50
|
|
782
|
|
0
|
|
|
0
|
100
|
|
42565
|
|
0
|
|
|
0
|
50
|
|
647630
|
|
0
|
|
|
0
|
100
|
|
647630
|
|
0
|
|
|
0
|
100
|
|
647630
|
|
0
|
|
|
0
|
50
|
|
647635
|
|
0
|
|
|
0
|
100
|
|
42592
|
|
0
|
|
|
0
|
50
|
|
42565
|
|
0
|
|
|
0
|
0
|
|
647630
|
|
0
|
|
|
0
|
0
|
|
647635
|
|
0
|
|
|
0
|
0
|
|
647635
|
|
0
|
|
|
0
|
0
|
|
42586
|
|
0
|
|
|
0
|
0
|
|
42592
|
|
0
|
|
|
0
|
0
|
|
647635
|
|
0
|
|
|
0
|
0
|
|
42586
|
|
0
|
|
|
0
|
0
|
|
42570
|
|
0
|
|
|
0
|
0
|
|
42565
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
0
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
50
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
0
|
100
|
|
|
|
0
|
|
|
13664
|
50
|
|
|
|
1803247
|
|
|
13664
|
0
|
|
|
|
15045
|
|
|
13664
|
0
|
|
|
|
45252
|
|
|
13664
|
50
|
|
|
|
22112
|
|
|
3733
|
50
|
|
|
|
4958
|
|
|
9704
|
50
|
|
|
|
2711238
|
|
|
9704
|
50
|
|
|
|
16051
|
|
|
9704
|
50
|
|
|
|
32286
|
|
|
9704
|
50
|
|
|
|
20983
|
|
|
547
|
50
|
|
|
|
926
|
|
|
9704
|
100
|
|
|
|
2571081
|
|
|
9704
|
50
|
|
|
|
13261
|
|
|
9704
|
50
|
|
|
|
31503
|
|
|
9704
|
0
|
|
|
|
19322
|
|
|
547
|
0
|
|
|
|
690
|
|
|
9704
|
50
|
|
|
|
2504889
|
|
|
9704
|
50
|
|
|
|
12550
|
|
|
9704
|
50
|
|
|
|
35811
|
|
|
9704
|
50
|
|
|
|
21115
|
|
|
547
|
50
|
|
|
|
690
|
|
|
13640
|
50
|
|
|
|
2139222
|
|
|
13640
|
50
|
|
|
|
16847
|
|
|
13640
|
100
|
|
|
|
42219
|
|
|
13640
|
50
|
|
|
|
23029
|
|
|
3712
|
50
|
|
|
|
4936
|
|
|
13674
|
0
|
|
|
|
2100740
|
|
|
13674
|
50
|
|
|
|
16239
|
|
|
13674
|
50
|
|
|
|
50081
|
|
|
13674
|
50
|
|
|
|
23434
|
|
|
3737
|
50
|
|
|
|
4942
|
|
|
13640
|
50
|
|
|
|
2965225
|
|
|
13640
|
50
|
|
|
|
15894
|
|
|
13640
|
50
|
|
|
|
42196
|
|
|
13640
|
50
|
|
|
|
22041
|
|
|
3712
|
100
|
|
|
|
4084
|
|
|
9704
|
100
|
|
|
|
2467477
|
|
|
9704
|
50
|
|
|
|
13835
|
|
|
9704
|
50
|
|
|
|
37791
|
|
|
9704
|
100
|
|
|
|
18966
|
|
|
547
|
50
|
|
|
|
684
|
|
|
13664
|
50
|
|
|
|
2277232
|
|
|
13664
|
50
|
|
|
|
16931
|
|
|
13664
|
50
|
|
|
|
50788
|
|
|
13664
|
50
|
|
|
|
23495
|
|
|
3733
|
50
|
|
|
|
5343
|
|
|
13643
|
50
|
|
|
|
1909383
|
|
|
13643
|
100
|
|
|
|
16354
|
|
|
13643
|
100
|
|
|
|
42455
|
|
|
13643
|
100
|
|
|
|
24138
|
|
|
3712
|
0
|
|
|
|
4788
|
|
|
9704
|
50
|
|
|
|
2826671
|
|
|
9704
|
100
|
|
|
|
15518
|
|
|
9704
|
50
|
|
|
|
32464
|
|
|
9704
|
50
|
|
|
|
21075
|
|
|
547
|
100
|
|
|
|
758
|
|
|
9704
|
50
|
|
|
|
2719994
|
|
|
9704
|
50
|
|
|
|
13383
|
|
|
9704
|
100
|
|
|
|
37792
|
|
|
9704
|
50
|
|
|
|
19275
|
|
|
547
|
50
|
|
|
|
812
|
|
|
9704
|
100
|
|
|
|
2674774
|
|
|
9704
|
50
|
|
|
|
13429
|
|
|
9704
|
50
|
|
|
|
37125
|
|
|
9704
|
100
|
|
|
|
19175
|
|
|
547
|
0
|
|
|
|
796
|
|
|
9704
|
50
|
|
|
|
2554397
|
|
|
9704
|
100
|
|
|
|
12789
|
|
|
9704
|
0
|
|
|
|
38014
|
|
|
9704
|
50
|
|
|
|
19489
|
|
|
547
|
100
|
|
|
|
882
|
|
|
13664
|
0
|
|
|
|
2176465
|
|
|
13664
|
50
|
|
|
|
15260
|
|
|
13664
|
100
|
|
|
|
46761
|
|
|
13664
|
0
|
|
|
|
23747
|
|
|
3733
|
50
|
|
|
|
4581
|
|
|
13643
|
100
|
|
|
|
1809457
|
|
|
13643
|
50
|
|
|
|
15168
|
|
|
13643
|
50
|
|
|
|
40534
|
|
|
13643
|
100
|
|
|
|
23137
|
|
|
3712
|
50
|
|
|
|
4415
|
|
|
547
|
50
|
|
|
|
554
|
|
|
547
|
100
|
|
|
|
602
|
|
|
547
|
50
|
|
|
|
669
|
|
|
547
|
50
|
|
|
|
664
|
|
|
547
|
100
|
|
|
|
1013
|
|
|
3718
|
0
|
|
|
|
2681
|
|
|
3718
|
50
|
|
|
|
5351
|
|
|
1441
|
100
|
|
|
|
1065
|
|
|
1441
|
50
|
|
|
|
3051
|
|
|
894
|
50
|
|
|
|
661
|
|
|
0
|
100
|
|
|
|
0
|
|
|
547
|
0
|
|
|
|
441
|
|
|
547
|
50
|
|
|
|
558
|
|
|
547
|
100
|
|
|
|
555
|
|
|
547
|
0
|
|
|
|
548
|
|
|
547
|
50
|
|
|
|
963
|
|
|
3718
|
50
|
|
|
|
2134
|
|
|
3718
|
0
|
|
|
|
4435
|
|
|
1441
|
0
|
|
|
|
953
|
|
|
1441
|
0
|
|
|
|
2526
|
|
|
894
|
50
|
|
|
|
663
|
|
|
0
|
0
|
|
|
|
0
|
|
|
3712
|
0
|
|
|
|
2998
|
|
|
3712
|
0
|
|
|
|
3523
|
|
|
3712
|
50
|
|
|
|
3602
|
|
|
3712
|
100
|
|
|
|
3608
|
|
|
3712
|
100
|
|
|
|
5429
|
|
|
12214
|
50
|
|
|
|
7777
|
|
|
12214
|
50
|
|
|
|
14670
|
|
|
6721
|
100
|
|
|
|
4518
|
|
|
6721
|
50
|
|
|
|
12310
|
|
|
3009
|
50
|
|
|
|
2446
|
|
|
0
|
50
|
|
|
|
0
|
|
|
547
|
0
|
|
|
|
477
|
|
|
547
|
0
|
|
|
|
492
|
|
|
547
|
0
|
|
|
|
619
|
|
|
547
|
50
|
|
|
|
533
|
|
|
547
|
100
|
|
|
|
870
|
|
|
3718
|
100
|
|
|
|
2239
|
|
|
3718
|
50
|
|
|
|
4449
|
|
|
1441
|
50
|
|
|
|
1016
|
|
|
1441
|
0
|
|
|
|
2854
|
|
|
894
|
0
|
|
|
|
678
|
|
|
0
|
0
|
|
|
|
0
|
|
|
3733
|
50
|
|
|
|
2861
|
|
|
3733
|
0
|
|
|
|
3977
|
|
|
3733
|
0
|
|
|
|
3828
|
|
|
3733
|
0
|
|
|
|
3562
|
|
|
3733
|
50
|
|
|
|
7243
|
|
|
11913
|
100
|
|
|
|
7481
|
|
|
11913
|
100
|
|
|
|
14530
|
|
|
7529
|
50
|
|
|
|
5272
|
|
|
7529
|
50
|
|
|
|
12730
|
|
|
3796
|
100
|
|
|
|
3011
|
|
|
0
|
50
|
|
|
|
0
|
|
|
3712
|
50
|
|
|
|
2853
|
|
|
3712
|
50
|
|
|
|
3294
|
|
|
3712
|
100
|
|
|
|
3661
|
|
|
3712
|
50
|
|
|
|
3332
|
|
|
3712
|
50
|
|
|
|
5080
|
|
|
12145
|
50
|
|
|
|
7845
|
|
|
12145
|
0
|
|
|
|
14894
|
|
|
7250
|
0
|
|
|
|
4773
|
|
|
7250
|
0
|
|
|
|
12633
|
|
|
3538
|
50
|
|
|
|
2833
|
|
|
0
|
0
|
|
|
|
0
|
|
|
3712
|
0
|
|
|
|
3198
|
|
|
3712
|
0
|
|
|
|
3345
|
|
|
3712
|
50
|
|
|
|
3766
|
|
|
3712
|
0
|
|
|
|
3611
|
|
|
3712
|
0
|
|
|
|
5832
|
|
|
12145
|
0
|
|
|
|
7783
|
|
|
12145
|
50
|
|
|
|
15476
|
|
|
7250
|
100
|
|
|
|
5212
|
|
|
7250
|
100
|
|
|
|
12830
|
|
|
3538
|
50
|
|
|
|
2991
|
|
|
0
|
50
|
|
|
|
0
|
|
|
3712
|
100
|
|
|
|
2822
|
|
|
3712
|
50
|
|
|
|
3309
|
|
|
3712
|
50
|
|
|
|
3614
|
|
|
3712
|
0
|
|
|
|
3339
|
|
|
3712
|
0
|
|
|
|
5283
|
|
|
12214
|
0
|
|
|
|
7623
|
|
|
12214
|
0
|
|
|
|
14808
|
|
|
6721
|
0
|
|
|
|
4857
|
|
|
6721
|
0
|
|
|
|
12149
|
|
|
3009
|
0
|
|
|
|
2373
|
|
|
0
|
0
|
|
|
|
0
|
|
|
547
|
0
|
|
|
|
460
|
|
|
547
|
0
|
|
|
|
524
|
|
|
547
|
0
|
|
|
|
660
|
|
|
547
|
0
|
|
|
|
581
|
|
|
547
|
0
|
|
|
|
821
|
|
|
3718
|
0
|
|
|
|
2234
|
|
|
3718
|
0
|
|
|
|
4389
|
|
|
1441
|
0
|
|
|
|
920
|
|
|
1441
|
0
|
|
|
|
2875
|
|
|
894
|
0
|
|
|
|
707
|
|
|
0
|
0
|
|
|
|
0
|
|
|
547
|
0
|
|
|
|
420
|
|
|
547
|
50
|
|
|
|
521
|
|
|
547
|
50
|
|
|
|
530
|
|
|
547
|
0
|
|
|
|
565
|
|
|
547
|
0
|
|
|
|
734
|
|
|
3718
|
0
|
|
|
|
2232
|
|
|
3718
|
0
|
|
|
|
4439
|
|
|
1441
|
50
|
|
|
|
884
|
|
|
1441
|
50
|
|
|
|
2699
|
|
|
894
|
50
|
|
|
|
670
|
|
|
0
|
50
|
|
|
|
0
|
|
|
547
|
50
|
|
|
|
467
|
|
|
547
|
50
|
|
|
|
550
|
|
|
547
|
100
|
|
|
|
529
|
|
|
547
|
50
|
|
|
|
528
|
|
|
547
|
0
|
|
|
|
792
|
|
|
3718
|
0
|
|
|
|
2124
|
|
|
3718
|
0
|
|
|
|
4492
|
|
|
1441
|
0
|
|
|
|
969
|
|
|
1441
|
50
|
|
|
|
2639
|
|
|
894
|
50
|
|
|
|
697
|
|
|
0
|
50
|
|
|
|
0
|
|
|
3733
|
50
|
|
|
|
2870
|
|
|
3733
|
50
|
|
|
|
3407
|
|
|
3733
|
50
|
|
|
|
4243
|
|
|
3733
|
100
|
|
|
|
3824
|
|
|
3733
|
50
|
|
|
|
6128
|
|
|
11913
|
50
|
|
|
|
7671
|
|
|
11913
|
50
|
|
|
|
14312
|
|
|
7529
|
50
|
|
|
|
5114
|
|
|
7529
|
50
|
|
|
|
13184
|
|
|
3796
|
100
|
|
|
|
2901
|
|
|
0
|
50
|
|
|
|
0
|
|
|
3733
|
0
|
|
|
|
3198
|
|
|
3733
|
0
|
|
|
|
3365
|
|
|
3733
|
0
|
|
|
|
3987
|
|
|
3733
|
0
|
|
|
|
3794
|
|
|
3733
|
50
|
|
|
|
5690
|
|
|
11913
|
50
|
|
|
|
7539
|
|
|
11913
|
0
|
|
|
|
14628
|
|
|
7529
|
0
|
|
|
|
5240
|
|
|
7529
|
0
|
|
|
|
13481
|
|
|
3796
|
0
|
|
|
|
3043
|
|
|
0
|
50
|
|
|
|
0
|
|
|
3737
|
50
|
|
|
|
2761
|
|
|
3737
|
50
|
|
|
|
3295
|
|
|
3737
|
50
|
|
|
|
3734
|
|
|
3737
|
50
|
|
|
|
4087
|
|
|
3737
|
50
|
|
|
|
6877
|
|
|
11921
|
100
|
|
|
|
8224
|
|
|
11921
|
50
|
|
|
|
14854
|
|
|
7533
|
0
|
|
|
|
5091
|
|
|
7533
|
0
|
|
|
|
12924
|
|
|
3796
|
0
|
|
|
|
3047
|
|
|
0
|
0
|
|
|
|
0
|
|
|
547
|
50
|
|
|
|
499
|
|
|
547
|
50
|
|
|
|
570
|
|
|
547
|
0
|
|
|
|
633
|
|
|
547
|
0
|
|
|
|
577
|
|
|
547
|
0
|
|
|
|
1189
|
|
|
3718
|
0
|
|
|
|
2111
|
|
|
3718
|
50
|
|
|
|
4500
|
|
|
1441
|
50
|
|
|
|
1006
|
|
|
1441
|
0
|
|
|
|
2650
|
|
|
894
|
0
|
|
|
|
699
|
|
|
0
|
0
|
|
|
|
0
|
|
|
547
|
0
|
|
|
|
512
|
|
|
547
|
50
|
|
|
|
592
|
|
|
547
|
50
|
|
|
|
699
|
|
|
547
|
50
|
|
|
|
619
|
|
|
547
|
50
|
|
|
|
876
|
|
|
3718
|
50
|
|
|
|
2396
|
|
|
3718
|
50
|
|
|
|
4836
|
|
|
1441
|
100
|
|
|
|
1087
|
|
|
1441
|
50
|
|
|
|
3239
|
|
|
894
|
50
|
|
|
|
746
|
|
|
0
|
50
|
|
|
|
0
|
|
|
9937
|
50
|
|
|
|
7817
|
|
|
9937
|
50
|
|
|
|
10510
|
|
|
9937
|
100
|
|
|
|
11569
|
|
|
9937
|
50
|
|
|
|
10886
|
|
|
9937
|
50
|
|
|
|
17935
|
|
|
72393
|
50
|
|
|
|
44022
|
|
|
72393
|
50
|
|
|
|
87637
|
|
|
19517
|
50
|
|
|
|
16436
|
|
|
19517
|
100
|
|
|
|
41271
|
|
|
9580
|
50
|
|
|
|
9573
|
|
|
0
|
50
|
|
|
|
0
|
|
|
9928
|
50
|
|
|
|
7715
|
|
|
9928
|
50
|
|
|
|
9435
|
|
|
9928
|
50
|
|
|
|
10361
|
|
|
9928
|
100
|
|
|
|
9686
|
|
|
9928
|
50
|
|
|
|
16431
|
|
|
64475
|
50
|
|
|
|
38222
|
|
|
64475
|
100
|
|
|
|
75945
|
|
|
14748
|
50
|
|
|
|
11811
|
|
|
14748
|
0
|
|
|
|
35926
|
|
|
4820
|
50
|
|
|
|
4088
|
|
|
0
|
0
|
|
|
|
0
|
|
|
9157
|
50
|
|
|
|
7771
|
|
|
9157
|
0
|
|
|
|
9202
|
|
|
9157
|
50
|
|
|
|
9213
|
|
|
9157
|
100
|
|
|
|
9015
|
|
|
9157
|
50
|
|
|
|
15708
|
|
|
68323
|
100
|
|
|
|
43292
|
|
|
68323
|
50
|
|
|
|
85007
|
|
|
13286
|
100
|
|
|
|
10214
|
|
|
13286
|
50
|
|
|
|
36400
|
|
|
4129
|
0
|
|
|
|
4260
|
|
|
0
|
50
|
|
|
|
0
|
|
|
9157
|
100
|
|
|
|
7489
|
|
|
9157
|
50
|
|
|
|
9769
|
|
|
9157
|
100
|
|
|
|
8925
|
|
|
9157
|
50
|
|
|
|
10760
|
|
|
9157
|
0
|
|
|
|
16300
|
|
|
68323
|
50
|
|
|
|
40962
|
|
|
68323
|
100
|
|
|
|
81811
|
|
|
13286
|
50
|
|
|
|
11860
|
|
|
13286
|
100
|
|
|
|
35599
|
|
|
4129
|
50
|
|
|
|
3707
|
|
|
0
|
0
|
|
|
|
0
|
|
|
9157
|
50
|
|
|
|
8543
|
|
|
9157
|
0
|
|
|
|
9163
|
|
|
9157
|
50
|
|
|
|
11016
|
|
|
9157
|
0
|
|
|
|
10693
|
|
|
9157
|
|
|
|
|
17276
|
|
|
68326
|
|
|
|
|
43347
|
|
|
68326
|
|
|
|
|
83009
|
|
|
13286
|
|
|
|
|
10677
|
|
|
13286
|
|
|
|
|
34174
|
|
|
4129
|
|
|
|
|
5037
|
|
|
0
|
|
|
|
|
0
|
|
|
9931
|
|
|
|
|
8242
|
|
|
9931
|
|
|
|
|
9105
|
|
|
9931
|
|
|
|
|
10633
|
|
|
9931
|
|
|
|
|
9817
|
|
|
9931
|
|
|
|
|
15497
|
|
|
72387
|
|
|
|
|
43284
|
|
|
72387
|
|
|
|
|
86378
|
|
|
19511
|
|
|
|
|
13843
|
|
|
19511
|
|
|
|
|
40659
|
|
|
9580
|
|
|
|
|
8397
|
|
|
0
|
|
|
|
|
0
|
|
|
9931
|
|
|
|
|
8307
|
|
|
9931
|
|
|
|
|
9384
|
|
|
9931
|
|
|
|
|
11288
|
|
|
9931
|
|
|
|
|
10145
|
|
|
9931
|
|
|
|
|
16517
|
|
|
72387
|
|
|
|
|
43026
|
|
|
72387
|
|
|
|
|
89171
|
|
|
19511
|
|
|
|
|
13594
|
|
|
19511
|
|
|
|
|
41171
|
|
|
9580
|
|
|
|
|
8525
|
|
|
0
|
|
|
|
|
0
|
|
|
9931
|
|
|
|
|
7731
|
|
|
9931
|
|
|
|
|
9975
|
|
|
9931
|
|
|
|
|
10112
|
|
|
9931
|
|
|
|
|
9411
|
|
|
9931
|
|
|
|
|
17396
|
|
|
72387
|
|
|
|
|
42195
|
|
|
72387
|
|
|
|
|
86238
|
|
|
19511
|
|
|
|
|
15151
|
|
|
19511
|
|
|
|
|
37441
|
|
|
9580
|
|
|
|
|
8574
|
|
|
0
|
|
|
|
|
0
|
|
|
9157
|
|
|
|
|
8007
|
|
|
9157
|
|
|
|
|
8171
|
|
|
9157
|
|
|
|
|
8998
|
|
|
9157
|
|
|
|
|
9209
|
|
|
9157
|
|
|
|
|
16195
|
|
|
68326
|
|
|
|
|
41525
|
|
|
68326
|
|
|
|
|
81756
|
|
|
13286
|
|
|
|
|
10941
|
|
|
13286
|
|
|
|
|
35018
|
|
|
4129
|
|
|
|
|
4082
|
|
|
0
|
|
|
|
|
0
|
|
|
9157
|
|
|
|
|
7358
|
|
|
9157
|
|
|
|
|
9551
|
|
|
9157
|
|
|
|
|
9596
|
|
|
9157
|
|
|
|
|
9867
|
|
|
9157
|
|
|
|
|
15475
|
|
|
68323
|
|
|
|
|
41602
|
|
|
68323
|
|
|
|
|
82216
|
|
|
13286
|
|
|
|
|
10021
|
|
|
13286
|
|
|
|
|
34289
|
|
|
4129
|
|
|
|
|
4019
|
|
|
0
|
|
|
|
|
0
|
|
|
9928
|
|
|
|
|
8443
|
|
|
9928
|
|
|
|
|
8913
|
|
|
9928
|
|
|
|
|
10948
|
|
|
9928
|
|
|
|
|
9366
|
|
|
9928
|
|
|
|
|
16356
|
|
|
64475
|
|
|
|
|
39522
|
|
|
64475
|
|
|
|
|
79671
|
|
|
14748
|
|
|
|
|
11015
|
|
|
14748
|
|
|
|
|
36002
|
|
|
4820
|
|
|
|
|
4300
|
|
|
0
|
|
|
|
|
0
|
|
|
9157
|
|
|
|
|
8806
|
|
|
9157
|
|
|
|
|
9401
|
|
|
9157
|
|
|
|
|
9574
|
|
|
9157
|
|
|
|
|
10713
|
|
|
9157
|
|
|
|
|
19536
|
|
|
68323
|
|
|
|
|
42722
|
|
|
68323
|
|
|
|
|
84654
|
|
|
13286
|
|
|
|
|
11212
|
|
|
13286
|
|
|
|
|
35781
|
|
|
4129
|
|
|
|
|
4394
|
|
|
0
|
|
|
|
|
0
|
|
|
9931
|
|
|
|
|
7813
|
|
|
9931
|
|
|
|
|
8747
|
|
|
9931
|
|
|
|
|
10392
|
|
|
9931
|
|
|
|
|
9822
|
|
|
9931
|
|
|
|
|
15552
|
|
|
64809
|
|
|
|
|
38883
|
|
|
64809
|
|
|
|
|
75970
|
|
|
15159
|
|
|
|
|
12687
|
|
|
15159
|
|
|
|
|
32787
|
|
|
5228
|
|
|
|
|
4614
|
|
|
0
|
|
|
|
|
0
|
|
|
9157
|
|
|
|
|
7694
|
|
|
9157
|
|
|
|
|
9171
|
|
|
9157
|
|
|
|
|
11968
|
|
|
9157
|
|
|
|
|
11262
|
|
|
9157
|
|
|
|
|
18425
|
|
|
68326
|
|
|
|
|
41583
|
|
|
68326
|
|
|
|
|
84952
|
|
|
13286
|
|
|
|
|
20757
|
|
|
13286
|
|
|
|
|
33436
|
|
|
4129
|
|
|
|
|
3902
|
|
|
0
|
|
|
|
|
0
|
|
|
9931
|
|
|
|
|
7609
|
|
|
9931
|
|
|
|
|
9087
|
|
|
9931
|
|
|
|
|
10615
|
|
|
9931
|
|
|
|
|
9053
|
|
|
9931
|
|
|
|
|
16402
|
|
|
64809
|
|
|
|
|
38444
|
|
|
64809
|
|
|
|
|
76473
|
|
|
15159
|
|
|
|
|
10329
|
|
|
15159
|
|
|
|
|
35281
|
|
|
5228
|
|
|
|
|
4642
|
|
|
0
|
|
|
|
|
0
|
|
|
9157
|
|
|
|
|
7775
|
|
|
9157
|
|
|
|
|
9788
|
|
|
9157
|
|
|
|
|
9356
|
|
|
9157
|
|
|
|
|
9270
|
|
|
9157
|
|
|
|
|
15897
|
|
|
68326
|
|
|
|
|
40619
|
|
|
68326
|
|
|
|
|
84670
|
|
|
13286
|
|
|
|
|
10237
|
|
|
13286
|
|
|
|
|
34092
|
|
|
4129
|
|
|
|
|
3974
|
|
|
0
|
|
|
|
|
0
|
|
|
4257
|
|
|
|
|
3770
|
|
|
4257
|
|
|
|
|
4677
|
|
|
4257
|
|
|
|
|
4314
|
|
|
4257
|
|
|
|
|
3191
|
|
|
4257
|
|
|
|
|
6828
|
|
|
39259
|
|
|
|
|
50611
|
|
|
24743
|
|
|
|
|
20666
|
|
|
24743
|
|
|
|
|
16600
|
|
|
24743
|
|
|
|
|
20840
|
|
|
4257
|
|
|
|
|
4819
|
|
|
4257
|
|
|
|
|
4377
|
|
|
4257
|
|
|
|
|
4773
|
|
|
4257
|
|
|
|
|
24765
|
|
|
4257
|
|
|
|
|
7698
|
|
|
4257
|
|
|
|
|
81188
|
|
|
4257
|
|
|
|
|
4064
|
|
|
4257
|
|
|
|
|
5044
|
|
|
4257
|
|
|
|
|
4806
|
|
|
4257
|
|
|
|
|
2960
|
|
|
4257
|
|
|
|
|
6569
|
|
|
36004
|
|
|
|
|
45204
|
|
|
18768
|
|
|
|
|
16433
|
|
|
18768
|
|
|
|
|
12679
|
|
|
18768
|
|
|
|
|
16071
|
|
|
4257
|
|
|
|
|
4851
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
4257
|
|
|
|
|
81759
|
|
|
4257
|
|
|
|
|
4099
|
|
|
4257
|
|
|
|
|
4835
|
|
|
4257
|
|
|
|
|
4604
|
|
|
4257
|
|
|
|
|
3325
|
|
|
4257
|
|
|
|
|
6967
|
|
|
36004
|
|
|
|
|
44986
|
|
|
18768
|
|
|
|
|
17063
|
|
|
18768
|
|
|
|
|
13138
|
|
|
18768
|
|
|
|
|
16772
|
|
|
4257
|
|
|
|
|
4792
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
4257
|
|
|
|
|
77895
|
|
|
4257
|
|
|
|
|
4029
|
|
|
4257
|
|
|
|
|
5410
|
|
|
4257
|
|
|
|
|
4761
|
|
|
4257
|
|
|
|
|
3191
|
|
|
4257
|
|
|
|
|
6053
|
|
|
36004
|
|
|
|
|
44635
|
|
|
18768
|
|
|
|
|
16364
|
|
|
18768
|
|
|
|
|
12826
|
|
|
18768
|
|
|
|
|
15703
|
|
|
4257
|
|
|
|
|
4588
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
4257
|
|
|
|
|
76413
|
|
|
4257
|
|
|
|
|
3800
|
|
|
4257
|
|
|
|
|
4678
|
|
|
4257
|
|
|
|
|
4762
|
|
|
4257
|
|
|
|
|
3207
|
|
|
4257
|
|
|
|
|
6254
|
|
|
39259
|
|
|
|
|
50022
|
|
|
24743
|
|
|
|
|
22328
|
|
|
24743
|
|
|
|
|
18207
|
|
|
24743
|
|
|
|
|
20611
|
|
|
4257
|
|
|
|
|
5782
|
|
|
4257
|
|
|
|
|
4723
|
|
|
4257
|
|
|
|
|
4249
|
|
|
4257
|
|
|
|
|
25146
|
|
|
4257
|
|
|
|
|
8106
|
|
|
4257
|
|
|
|
|
74401
|
|
|
4257
|
|
|
|
|
3936
|
|
|
4257
|
|
|
|
|
4393
|
|
|
4257
|
|
|
|
|
4495
|
|
|
4257
|
|
|
|
|
3202
|
|
|
4257
|
|
|
|
|
5942
|
|
|
39786
|
|
|
|
|
49152
|
|
|
22620
|
|
|
|
|
18843
|
|
|
22620
|
|
|
|
|
14750
|
|
|
22620
|
|
|
|
|
18888
|
|
|
4257
|
|
|
|
|
5211
|
|
|
4257
|
|
|
|
|
4386
|
|
|
4257
|
|
|
|
|
4231
|
|
|
4257
|
|
|
|
|
16344
|
|
|
4257
|
|
|
|
|
7250
|
|
|
4257
|
|
|
|
|
76589
|
|
|
4257
|
|
|
|
|
3525
|
|
|
4257
|
|
|
|
|
4668
|
|
|
4257
|
|
|
|
|
4625
|
|
|
4257
|
|
|
|
|
3211
|
|
|
4257
|
|
|
|
|
6148
|
|
|
39844
|
|
|
|
|
48228
|
|
|
20233
|
|
|
|
|
16948
|
|
|
20233
|
|
|
|
|
13281
|
|
|
20233
|
|
|
|
|
17631
|
|
|
4257
|
|
|
|
|
4553
|
|
|
4257
|
|
|
|
|
4514
|
|
|
4257
|
|
|
|
|
4147
|
|
|
4257
|
|
|
|
|
16648
|
|
|
4257
|
|
|
|
|
6871
|
|
|
4257
|
|
|
|
|
71945
|
|
|
4257
|
|
|
|
|
3601
|
|
|
4257
|
|
|
|
|
4400
|
|
|
4257
|
|
|
|
|
4450
|
|
|
4257
|
|
|
|
|
3520
|
|
|
4257
|
|
|
|
|
6243
|
|
|
39844
|
|
|
|
|
48549
|
|
|
20233
|
|
|
|
|
18445
|
|
|
20233
|
|
|
|
|
13630
|
|
|
20233
|
|
|
|
|
17767
|
|
|
4257
|
|
|
|
|
4854
|
|
|
4257
|
|
|
|
|
4266
|
|
|
4257
|
|
|
|
|
4112
|
|
|
4257
|
|
|
|
|
16711
|
|
|
4257
|
|
|
|
|
7150
|
|
|
4257
|
|
|
|
|
74377
|
|
|
4257
|
|
|
|
|
3727
|
|
|
4257
|
|
|
|
|
4968
|
|
|
4257
|
|
|
|
|
4582
|
|
|
4257
|
|
|
|
|
3025
|
|
|
4257
|
|
|
|
|
6272
|
|
|
39786
|
|
|
|
|
52072
|
|
|
22620
|
|
|
|
|
19511
|
|
|
22620
|
|
|
|
|
15823
|
|
|
22620
|
|
|
|
|
20203
|
|
|
4257
|
|
|
|
|
5257
|
|
|
4257
|
|
|
|
|
4679
|
|
|
4257
|
|
|
|
|
4635
|
|
|
4257
|
|
|
|
|
16461
|
|
|
4257
|
|
|
|
|
7408
|
|
|
4257
|
|
|
|
|
77466
|
|
|
4257
|
|
|
|
|
3973
|
|
|
4257
|
|
|
|
|
5869
|
|
|
4257
|
|
|
|
|
5759
|
|
|
4257
|
|
|
|
|
3710
|
|
|
4257
|
|
|
|
|
6617
|
|
|
35978
|
|
|
|
|
48123
|
|
|
18768
|
|
|
|
|
17389
|
|
|
18768
|
|
|
|
|
13227
|
|
|
18768
|
|
|
|
|
16512
|
|
|
4257
|
|
|
|
|
5072
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
4257
|
|
|
|
|
82865
|
|
|
4257
|
|
|
|
|
4221
|
|
|
4257
|
|
|
|
|
5097
|
|
|
4257
|
|
|
|
|
5646
|
|
|
4257
|
|
|
|
|
3620
|
|
|
4257
|
|
|
|
|
7033
|
|
|
36004
|
|
|
|
|
45116
|
|
|
18768
|
|
|
|
|
16992
|
|
|
18768
|
|
|
|
|
12871
|
|
|
18768
|
|
|
|
|
16737
|
|
|
4257
|
|
|
|
|
5249
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
4257
|
|
|
|
|
80554
|
|
|
4257
|
|
|
|
|
3950
|
|
|
4257
|
|
|
|
|
5178
|
|
|
4257
|
|
|
|
|
4988
|
|
|
4257
|
|
|
|
|
3472
|
|
|
4257
|
|
|
|
|
6143
|
|
|
35978
|
|
|
|
|
44992
|
|
|
18768
|
|
|
|
|
16374
|
|
|
18768
|
|
|
|
|
12952
|
|
|
18768
|
|
|
|
|
16551
|
|
|
4257
|
|
|
|
|
4995
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
4257
|
|
|
|
|
79634
|
|
|
4257
|
|
|
|
|
4199
|
|
|
4257
|
|
|
|
|
4696
|
|
|
4257
|
|
|
|
|
4937
|
|
|
4257
|
|
|
|
|
3177
|
|
|
4257
|
|
|
|
|
6150
|
|
|
35978
|
|
|
|
|
44549
|
|
|
18768
|
|
|
|
|
17157
|
|
|
18768
|
|
|
|
|
12799
|
|
|
18768
|
|
|
|
|
16165
|
|
|
4257
|
|
|
|
|
4802
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
4257
|
|
|
|
|
79048
|
|
|
4257
|
|
|
|
|
4284
|
|
|
4257
|
|
|
|
|
5060
|
|
|
4257
|
|
|
|
|
4850
|
|
|
4257
|
|
|
|
|
3426
|
|
|
4257
|
|
|
|
|
6399
|
|
|
35978
|
|
|
|
|
49607
|
|
|
18768
|
|
|
|
|
18021
|
|
|
18768
|
|
|
|
|
12988
|
|
|
18768
|
|
|
|
|
16568
|
|
|
4257
|
|
|
|
|
4904
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
4257
|
|
|
|
|
81552
|
|
|
4257
|
|
|
|
|
3902
|
|
|
4257
|
|
|
|
|
4473
|
|
|
4257
|
|
|
|
|
4333
|
|
|
4257
|
|
|
|
|
2946
|
|
|
4257
|
|
|
|
|
6227
|
|
|
39259
|
|
|
|
|
49054
|
|
|
24743
|
|
|
|
|
22281
|
|
|
24743
|
|
|
|
|
17264
|
|
|
24743
|
|
|
|
|
20747
|
|
|
4257
|
|
|
|
|
4837
|
|
|
4257
|
|
|
|
|
4576
|
|
|
4257
|
|
|
|
|
4955
|
|
|
4257
|
|
|
|
|
24937
|
|
|
4257
|
|
|
|
|
7672
|
|
|
4257
|
|
|
|
|
73830
|
|
|
4257
|
|
|
|
|
3738
|
|
|
4257
|
|
|
|
|
4554
|
|
|
4257
|
|
|
|
|
4311
|
|
|
4257
|
|
|
|
|
3497
|
|
|
4257
|
|
|
|
|
5696
|
|
|
39259
|
|
|
|
|
47422
|
|
|
24743
|
|
|
|
|
20918
|
|
|
24743
|
|
|
|
|
16685
|
|
|
24743
|
|
|
|
|
20469
|
|
|
4257
|
|
|
|
|
4718
|
|
|
4257
|
|
|
|
|
4130
|
|
|
4257
|
|
|
|
|
4690
|
|
|
4257
|
|
|
|
|
24449
|
|
|
4257
|
|
|
|
|
7109
|
|
|
4257
|
|
|
|
|
71710
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
941725
|
|
|
|
|
618924
|
|
|
941725
|
|
|
|
|
750987
|
|
|
941725
|
|
|
|
|
1495272
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
941725
|
|
|
|
|
618792
|
|
|
941725
|
|
|
|
|
747811
|
|
|
941725
|
|
|
|
|
1481937
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
60179
|
|
|
|
|
42150
|
|
|
60179
|
|
|
|
|
54446
|
|
|
60179
|
|
|
|
|
134626
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
941725
|
|
|
|
|
614464
|
|
|
941725
|
|
|
|
|
760703
|
|
|
941725
|
|
|
|
|
1601661
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
941725
|
|
|
|
|
613924
|
|
|
941725
|
|
|
|
|
736369
|
|
|
941725
|
|
|
|
|
1452704
|
|
|
60179
|
|
|
|
|
40589
|
|
|
60179
|
|
|
|
|
51017
|
|
|
60179
|
|
|
|
|
117828
|
|
|
60204
|
|
|
|
|
41963
|
|
|
60204
|
|
|
|
|
55315
|
|
|
60204
|
|
|
|
|
122520
|
|
|
60179
|
|
|
|
|
42523
|
|
|
60179
|
|
|
|
|
48859
|
|
|
60179
|
|
|
|
|
119266
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
80892
|
|
|
|
|
54641
|
|
|
80892
|
|
|
|
|
62513
|
|
|
80892
|
|
|
|
|
180964
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
80923
|
|
|
|
|
55054
|
|
|
80923
|
|
|
|
|
63201
|
|
|
80923
|
|
|
|
|
186333
|
|
|
80923
|
|
|
|
|
54462
|
|
|
80923
|
|
|
|
|
63926
|
|
|
80923
|
|
|
|
|
194319
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1292606
|
|
|
|
|
820406
|
|
|
1292606
|
|
|
|
|
1033727
|
|
|
1292606
|
|
|
|
|
2937488
|
|
|
1292606
|
|
|
|
|
873502
|
|
|
1292606
|
|
|
|
|
990883
|
|
|
1292606
|
|
|
|
|
3221834
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1292606
|
|
|
|
|
873493
|
|
|
1292606
|
|
|
|
|
1042436
|
|
|
1292606
|
|
|
|
|
2957885
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1292606
|
|
|
|
|
891315
|
|
|
1292606
|
|
|
|
|
999260
|
|
|
1292606
|
|
|
|
|
3289404
|
|
|
80881
|
|
|
|
|
55490
|
|
|
80881
|
|
|
|
|
66769
|
|
|
80881
|
|
|
|
|
193179
|
|
|
9
|
|
|
|
|
12
|
|
|
9
|
|
|
|
|
16
|
|
|
9
|
|
|
|
|
15
|
|
|
9
|
|
|
|
|
14
|
|
|
9
|
|
|
|
|
14
|
|
|
45
|
|
|
|
|
51
|
|
|
9
|
|
|
|
|
22
|
|
|
9
|
|
|
|
|
11
|
|
|
9
|
|
|
|
|
16
|
|
|
9
|
|
|
|
|
14
|
|
|
9
|
|
|
|
|
16
|
|
|
9
|
|
|
|
|
18
|
|
|
45
|
|
|
|
|
51
|
|
|
9
|
|
|
|
|
19
|
|
|
9
|
|
|
|
|
10
|
|
|
9
|
|
|
|
|
17
|
|
|
9
|
|
|
|
|
17
|
|
|
9
|
|
|
|
|
24
|
|
|
9
|
|
|
|
|
19
|
|
|
45
|
|
|
|
|
52
|
|
|
9
|
|
|
|
|
21
|
|
|
9
|
|
|
|
|
13
|
|
|
9
|
|
|
|
|
22
|
|
|
9
|
|
|
|
|
16
|
|
|
9
|
|
|
|
|
21
|
|
|
9
|
|
|
|
|
22
|
|
|
45
|
|
|
|
|
54
|
|
|
9
|
|
|
|
|
25
|
|
|
9
|
|
|
|
|
14
|
|
|
9
|
|
|
|
|
23
|
|
|
9
|
|
|
|
|
16
|
|
|
9
|
|
|
|
|
16
|
|
|
9
|
|
|
|
|
23
|
|
|
45
|
|
|
|
|
56
|
|
|
9
|
|
|
|
|
24
|
|
|
9
|
|
|
|
|
15
|
|
|
9
|
|
|
|
|
17
|
|
|
9
|
|
|
|
|
15
|
|
|
9
|
|
|
|
|
23
|
|
|
9
|
|
|
|
|
21
|
|
|
45
|
|
|
|
|
55
|
|
|
9
|
|
|
|
|
25
|
|
|
9
|
|
|
|
|
15
|
|
|
9
|
|
|
|
|
24
|
|
|
9
|
|
|
|
|
23
|
|
|
9
|
|
|
|
|
19
|
|
|
9
|
|
|
|
|
16
|
|
|
45
|
|
|
|
|
52
|
|
|
9
|
|
|
|
|
23
|
|
|
9
|
|
|
|
|
11
|
|
|
9
|
|
|
|
|
14
|
|
|
9
|
|
|
|
|
14
|
|
|
9
|
|
|
|
|
16
|
|
|
9
|
|
|
|
|
17
|
|
|
45
|
|
|
|
|
47
|
|
|
9
|
|
|
|
|
20
|
|
|
9
|
|
|
|
|
13
|
|
|
9
|
|
|
|
|
13
|
|
|
9
|
|
|
|
|
14
|
|
|
9
|
|
|
|
|
16
|
|
|
9
|
|
|
|
|
13
|
|
|
45
|
|
|
|
|
55
|
|
|
9
|
|
|
|
|
20
|
|
|
9
|
|
|
|
|
17
|
|
|
9
|
|
|
|
|
19
|
|
|
9
|
|
|
|
|
20
|
|
|
9
|
|
|
|
|
22
|
|
|
9
|
|
|
|
|
17
|
|
|
45
|
|
|
|
|
62
|
|
|
9
|
|
|
|
|
27
|
|
|
9
|
|
|
|
|
16
|
|
|
9
|
|
|
|
|
18
|
|
|
9
|
|
|
|
|
17
|
|
|
9
|
|
|
|
|
20
|
|
|
9
|
|
|
|
|
17
|
|
|
45
|
|
|
|
|
52
|
|
|
9
|
|
|
|
|
22
|
|
|
9
|
|
|
|
|
22
|
|
|
9
|
|
|
|
|
22
|
|
|
9
|
|
|
|
|
21
|
|
|
9
|
|
|
|
|
27
|
|
|
9
|
|
|
|
|
29
|
|
|
45
|
|
|
|
|
65
|
|
|
9
|
|
|
|
|
27
|
|
|
9
|
|
|
|
|
13
|
|
|
9
|
|
|
|
|
18
|
|
|
9
|
|
|
|
|
15
|
|
|
9
|
|
|
|
|
19
|
|
|
9
|
|
|
|
|
16
|
|
|
45
|
|
|
|
|
52
|
|
|
9
|
|
|
|
|
27
|
|
|
9
|
|
|
|
|
15
|
|
|
9
|
|
|
|
|
20
|
|
|
9
|
|
|
|
|
18
|
|
|
9
|
|
|
|
|
20
|
|
|
9
|
|
|
|
|
22
|
|
|
45
|
|
|
|
|
54
|
|
|
9
|
|
|
|
|
27
|
|
|
9
|
|
|
|
|
10
|
|
|
9
|
|
|
|
|
26
|
|
|
9
|
|
|
|
|
10
|
|
|
9
|
|
|
|
|
17
|
|
|
9
|
|
|
|
|
12
|
|
|
45
|
|
|
|
|
47
|
|
|
9
|
|
|
|
|
19
|
|
|
9
|
|
|
|
|
19
|
|
|
9
|
|
|
|
|
19
|
|
|
9
|
|
|
|
|
16
|
|
|
9
|
|
|
|
|
22
|
|
|
9
|
|
|
|
|
25
|
|
|
45
|
|
|
|
|
51
|
|
|
9
|
|
|
|
|
24
|
|
|
36350
|
|
|
|
|
24184
|
|
|
36350
|
|
|
|
|
30938
|
|
|
36350
|
|
|
|
|
34022
|
|
|
36350
|
|
|
|
|
47220
|
|
|
69622
|
|
|
|
|
114383
|
|
|
1974
|
|
|
|
|
3605
|
|
|
36329
|
|
|
|
|
24230
|
|
|
36329
|
|
|
|
|
33351
|
|
|
36329
|
|
|
|
|
35834
|
|
|
36329
|
|
|
|
|
53210
|
|
|
69581
|
|
|
|
|
117014
|
|
|
1971
|
|
|
|
|
3018
|
|
|
36329
|
|
|
|
|
28234
|
|
|
36329
|
|
|
|
|
34161
|
|
|
36329
|
|
|
|
|
35562
|
|
|
36329
|
|
|
|
|
44825
|
|
|
69581
|
|
|
|
|
131381
|
|
|
1971
|
|
|
|
|
3141
|
|
|
333714
|
|
|
|
|
245961
|
|
|
333714
|
|
|
|
|
288073
|
|
|
333714
|
|
|
|
|
357550
|
|
|
333714
|
|
|
|
|
383283
|
|
|
645181
|
|
|
|
|
1128935
|
|
|
13609
|
|
|
|
|
20283
|
|
|
36350
|
|
|
|
|
25212
|
|
|
36350
|
|
|
|
|
32378
|
|
|
36350
|
|
|
|
|
34880
|
|
|
36350
|
|
|
|
|
42538
|
|
|
69622
|
|
|
|
|
121564
|
|
|
1971
|
|
|
|
|
2861
|
|
|
36331
|
|
|
|
|
24965
|
|
|
36331
|
|
|
|
|
33964
|
|
|
36331
|
|
|
|
|
33999
|
|
|
36331
|
|
|
|
|
56795
|
|
|
69582
|
|
|
|
|
123813
|
|
|
1973
|
|
|
|
|
3107
|
|
|
333714
|
|
|
|
|
232114
|
|
|
333714
|
|
|
|
|
303180
|
|
|
333714
|
|
|
|
|
325989
|
|
|
333714
|
|
|
|
|
376397
|
|
|
645181
|
|
|
|
|
1109337
|
|
|
13609
|
|
|
|
|
19465
|
|
|
333714
|
|
|
|
|
231830
|
|
|
333714
|
|
|
|
|
295060
|
|
|
333714
|
|
|
|
|
310099
|
|
|
333714
|
|
|
|
|
382999
|
|
|
645186
|
|
|
|
|
1105950
|
|
|
13604
|
|
|
|
|
21128
|
|
|
333714
|
|
|
|
|
221685
|
|
|
333714
|
|
|
|
|
288636
|
|
|
333714
|
|
|
|
|
316980
|
|
|
333714
|
|
|
|
|
436863
|
|
|
645181
|
|
|
|
|
1091273
|
|
|
13609
|
|
|
|
|
22607
|
|
|
333714
|
|
|
|
|
231433
|
|
|
333714
|
|
|
|
|
275331
|
|
|
333714
|
|
|
|
|
318497
|
|
|
333714
|
|
|
|
|
444512
|
|
|
645186
|
|
|
|
|
1079637
|
|
|
13604
|
|
|
|
|
20306
|
|
|
333714
|
|
|
|
|
225623
|
|
|
333714
|
|
|
|
|
308938
|
|
|
333714
|
|
|
|
|
334768
|
|
|
333714
|
|
|
|
|
377748
|
|
|
645186
|
|
|
|
|
1098483
|
|
|
13604
|
|
|
|
|
20351
|
|
|
36329
|
|
|
|
|
24384
|
|
|
36329
|
|
|
|
|
32082
|
|
|
36329
|
|
|
|
|
35890
|
|
|
36329
|
|
|
|
|
43167
|
|
|
69581
|
|
|
|
|
118678
|
|
|
1971
|
|
|
|
|
2880
|
|
|
333714
|
|
|
|
|
215942
|
|
|
333714
|
|
|
|
|
298191
|
|
|
333714
|
|
|
|
|
315724
|
|
|
333714
|
|
|
|
|
424992
|
|
|
645181
|
|
|
|
|
1053872
|
|
|
13609
|
|
|
|
|
21796
|
|
|
333714
|
|
|
|
|
221618
|
|
|
333714
|
|
|
|
|
298479
|
|
|
333714
|
|
|
|
|
318081
|
|
|
333714
|
|
|
|
|
434537
|
|
|
645186
|
|
|
|
|
1061197
|
|
|
13604
|
|
|
|
|
22585
|
|
|
36350
|
|
|
|
|
28198
|
|
|
36350
|
|
|
|
|
35298
|
|
|
36350
|
|
|
|
|
35250
|
|
|
36350
|
|
|
|
|
45580
|
|
|
69622
|
|
|
|
|
123708
|
|
|
1974
|
|
|
|
|
3001
|
|
|
36350
|
|
|
|
|
23963
|
|
|
36350
|
|
|
|
|
34556
|
|
|
36350
|
|
|
|
|
37467
|
|
|
36350
|
|
|
|
|
55726
|
|
|
69622
|
|
|
|
|
124944
|
|
|
1971
|
|
|
|
|
3302
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
3465362
|
|
|
|
|
2208887
|
|
|
3465362
|
|
|
|
|
2731870
|
|
|
3465362
|
|
|
|
|
6723646
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
2817727
|
|
|
|
|
1812115
|
|
|
2817727
|
|
|
|
|
2154970
|
|
|
2817727
|
|
|
|
|
5631675
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
181243
|
|
|
|
|
116894
|
|
|
181243
|
|
|
|
|
140790
|
|
|
181243
|
|
|
|
|
368529
|
|
|
3128036
|
|
|
|
|
2098427
|
|
|
3128036
|
|
|
|
|
2375885
|
|
|
3128036
|
|
|
|
|
6158261
|
|
|
223837
|
|
|
|
|
139729
|
|
|
223837
|
|
|
|
|
170643
|
|
|
223837
|
|
|
|
|
413953
|
|
|
162182
|
|
|
|
|
115124
|
|
|
162182
|
|
|
|
|
128750
|
|
|
162182
|
|
|
|
|
330104
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
204728
|
|
|
|
|
129608
|
|
|
204728
|
|
|
|
|
157591
|
|
|
204728
|
|
|
|
|
409464
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
3775671
|
|
|
|
|
2426350
|
|
|
3775671
|
|
|
|
|
2989342
|
|
|
3775671
|
|
|
|
|
7333165
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
152204
|
|
|
|
|
99601
|
|
|
152204
|
|
|
|
|
129520
|
|
|
152204
|
|
|
|
|
117825
|
|
|
152204
|
|
|
|
|
97321
|
|
|
152204
|
|
|
|
|
128676
|
|
|
152204
|
|
|
|
|
1086229
|
|
|
152204
|
|
|
|
|
181497
|
|
|
152204
|
|
|
|
|
93477
|
|
|
152204
|
|
|
|
|
125878
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
133144
|
|
|
|
|
82590
|
|
|
133144
|
|
|
|
|
109222
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1936991
|
|
|
|
|
1291292
|
|
|
1936991
|
|
|
|
|
1572498
|
|
|
1936991
|
|
|
|
|
1456386
|
|
|
1936991
|
|
|
|
|
1197955
|
|
|
1936991
|
|
|
|
|
1638216
|
|
|
1936991
|
|
|
|
|
13175380
|
|
|
1936991
|
|
|
|
|
2245636
|
|
|
979047
|
|
|
|
|
617535
|
|
|
979047
|
|
|
|
|
812088
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1936991
|
|
|
|
|
1204091
|
|
|
1936991
|
|
|
|
|
1613739
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
90579
|
|
|
|
|
58916
|
|
|
90579
|
|
|
|
|
74534
|
|
|
90579
|
|
|
|
|
69736
|
|
|
90579
|
|
|
|
|
58605
|
|
|
90579
|
|
|
|
|
75025
|
|
|
90579
|
|
|
|
|
632026
|
|
|
90579
|
|
|
|
|
103984
|
|
|
1289356
|
|
|
|
|
805404
|
|
|
1289356
|
|
|
|
|
1059721
|
|
|
1289356
|
|
|
|
|
968647
|
|
|
1289356
|
|
|
|
|
795950
|
|
|
1289356
|
|
|
|
|
1036308
|
|
|
1289356
|
|
|
|
|
9895172
|
|
|
1289356
|
|
|
|
|
1505016
|
|
|
90593
|
|
|
|
|
58323
|
|
|
90593
|
|
|
|
|
77060
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
109618
|
|
|
|
|
76114
|
|
|
109618
|
|
|
|
|
97063
|
|
|
109618
|
|
|
|
|
83902
|
|
|
109618
|
|
|
|
|
69164
|
|
|
109618
|
|
|
|
|
90451
|
|
|
109618
|
|
|
|
|
803677
|
|
|
109618
|
|
|
|
|
126223
|
|
|
109618
|
|
|
|
|
71104
|
|
|
109618
|
|
|
|
|
96295
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
979047
|
|
|
|
|
599993
|
|
|
979047
|
|
|
|
|
767090
|
|
|
979047
|
|
|
|
|
762951
|
|
|
979047
|
|
|
|
|
620987
|
|
|
979047
|
|
|
|
|
785683
|
|
|
979047
|
|
|
|
|
7365585
|
|
|
979047
|
|
|
|
|
1138891
|
|
|
1626682
|
|
|
|
|
1036763
|
|
|
1626682
|
|
|
|
|
1342682
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1289356
|
|
|
|
|
810333
|
|
|
1289356
|
|
|
|
|
1036254
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
133144
|
|
|
|
|
89633
|
|
|
133144
|
|
|
|
|
110206
|
|
|
133144
|
|
|
|
|
106055
|
|
|
133144
|
|
|
|
|
89725
|
|
|
133144
|
|
|
|
|
109328
|
|
|
133144
|
|
|
|
|
944817
|
|
|
133144
|
|
|
|
|
158628
|
|
|
1626682
|
|
|
|
|
1013633
|
|
|
1626682
|
|
|
|
|
1288493
|
|
|
1626682
|
|
|
|
|
1184771
|
|
|
1626682
|
|
|
|
|
1001144
|
|
|
1626682
|
|
|
|
|
1271320
|
|
|
1626682
|
|
|
|
|
10858486
|
|
|
1626682
|
|
|
|
|
1813582
|
|
|
1734
|
|
|
|
|
1993
|
|
|
1734
|
|
|
|
|
2106
|
|
|
1734
|
|
|
|
|
2827
|
|
|
1709
|
|
|
|
|
2023
|
|
|
1709
|
|
|
|
|
3141
|
|
|
1709
|
|
|
|
|
2243
|
|
|
1709
|
|
|
|
|
1813
|
|
|
1709
|
|
|
|
|
30824
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297683
|
|
|
|
|
239559
|
|
|
297683
|
|
|
|
|
264968
|
|
|
297683
|
|
|
|
|
348356
|
|
|
297658
|
|
|
|
|
263032
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297658
|
|
|
|
|
264346
|
|
|
297658
|
|
|
|
|
265475
|
|
|
297658
|
|
|
|
|
279886
|
|
|
297658
|
|
|
|
|
362487
|
|
|
587780
|
|
|
|
|
403969
|
|
|
587780
|
|
|
|
|
711937
|
|
|
297658
|
|
|
|
|
215981
|
|
|
297658
|
|
|
|
|
337058
|
|
|
290122
|
|
|
|
|
184353
|
|
|
290122
|
|
|
|
|
164815
|
|
|
290122
|
|
|
|
|
458513
|
|
|
290122
|
|
|
|
|
281273
|
|
|
297658
|
|
|
|
|
319931
|
|
|
1603
|
|
|
|
|
1164
|
|
|
1603
|
|
|
|
|
1699
|
|
|
1603
|
|
|
|
|
1845
|
|
|
1603
|
|
|
|
|
2790
|
|
|
1603
|
|
|
|
|
2374
|
|
|
296055
|
|
|
|
|
273295
|
|
|
0
|
|
|
|
|
0
|
|
|
296055
|
|
|
|
|
249596
|
|
|
296055
|
|
|
|
|
288295
|
|
|
296055
|
|
|
|
|
417086
|
|
|
296055
|
|
|
|
|
6729308
|
|
|
296055
|
|
|
|
|
417075
|
|
|
296055
|
|
|
|
|
575027
|
|
|
296055
|
|
|
|
|
270575
|
|
|
297658
|
|
|
|
|
728550
|
|
|
0
|
|
|
|
|
0
|
|
|
297683
|
|
|
|
|
215272
|
|
|
297683
|
|
|
|
|
279189
|
|
|
297683
|
|
|
|
|
331547
|
|
|
297658
|
|
|
|
|
250540
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297658
|
|
|
|
|
279302
|
|
|
297658
|
|
|
|
|
288442
|
|
|
297658
|
|
|
|
|
270112
|
|
|
297658
|
|
|
|
|
427710
|
|
|
587780
|
|
|
|
|
393537
|
|
|
587780
|
|
|
|
|
703338
|
|
|
297658
|
|
|
|
|
207289
|
|
|
297658
|
|
|
|
|
333245
|
|
|
290122
|
|
|
|
|
213298
|
|
|
290122
|
|
|
|
|
176502
|
|
|
290122
|
|
|
|
|
444595
|
|
|
290122
|
|
|
|
|
276009
|
|
|
297658
|
|
|
|
|
345618
|
|
|
1603
|
|
|
|
|
2001
|
|
|
1603
|
|
|
|
|
2095
|
|
|
1603
|
|
|
|
|
3017
|
|
|
1603
|
|
|
|
|
2281
|
|
|
1603
|
|
|
|
|
2755
|
|
|
296055
|
|
|
|
|
279195
|
|
|
296055
|
|
|
|
|
271606
|
|
|
0
|
|
|
|
|
0
|
|
|
296055
|
|
|
|
|
349300
|
|
|
296055
|
|
|
|
|
435933
|
|
|
296055
|
|
|
|
|
6980042
|
|
|
296055
|
|
|
|
|
429072
|
|
|
296055
|
|
|
|
|
681557
|
|
|
296055
|
|
|
|
|
256707
|
|
|
297658
|
|
|
|
|
764579
|
|
|
0
|
|
|
|
|
0
|
|
|
1734
|
|
|
|
|
2011
|
|
|
1734
|
|
|
|
|
2300
|
|
|
1734
|
|
|
|
|
2838
|
|
|
1709
|
|
|
|
|
1747
|
|
|
1709
|
|
|
|
|
2082
|
|
|
1709
|
|
|
|
|
2008
|
|
|
1709
|
|
|
|
|
1720
|
|
|
1709
|
|
|
|
|
30606
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1734
|
|
|
|
|
1726
|
|
|
1734
|
|
|
|
|
2031
|
|
|
1734
|
|
|
|
|
3126
|
|
|
1709
|
|
|
|
|
1802
|
|
|
1709
|
|
|
|
|
2111
|
|
|
1709
|
|
|
|
|
1964
|
|
|
1709
|
|
|
|
|
1621
|
|
|
1709
|
|
|
|
|
29213
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297683
|
|
|
|
|
217186
|
|
|
297683
|
|
|
|
|
278294
|
|
|
297683
|
|
|
|
|
359563
|
|
|
297658
|
|
|
|
|
264654
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297658
|
|
|
|
|
254464
|
|
|
297658
|
|
|
|
|
281359
|
|
|
297658
|
|
|
|
|
273707
|
|
|
297658
|
|
|
|
|
392694
|
|
|
587780
|
|
|
|
|
397652
|
|
|
587780
|
|
|
|
|
726047
|
|
|
297658
|
|
|
|
|
210861
|
|
|
297658
|
|
|
|
|
339743
|
|
|
290122
|
|
|
|
|
191225
|
|
|
290122
|
|
|
|
|
184407
|
|
|
290122
|
|
|
|
|
472726
|
|
|
290122
|
|
|
|
|
272766
|
|
|
297658
|
|
|
|
|
344468
|
|
|
1603
|
|
|
|
|
1645
|
|
|
1603
|
|
|
|
|
3115
|
|
|
1603
|
|
|
|
|
2666
|
|
|
1603
|
|
|
|
|
3235
|
|
|
1603
|
|
|
|
|
3174
|
|
|
296055
|
|
|
|
|
266328
|
|
|
0
|
|
|
|
|
0
|
|
|
296055
|
|
|
|
|
241143
|
|
|
296055
|
|
|
|
|
286916
|
|
|
296055
|
|
|
|
|
424794
|
|
|
296055
|
|
|
|
|
6889916
|
|
|
296055
|
|
|
|
|
410888
|
|
|
296055
|
|
|
|
|
673958
|
|
|
296055
|
|
|
|
|
251358
|
|
|
297658
|
|
|
|
|
799159
|
|
|
0
|
|
|
|
|
0
|
|
|
297683
|
|
|
|
|
217797
|
|
|
297683
|
|
|
|
|
281084
|
|
|
297683
|
|
|
|
|
363820
|
|
|
297658
|
|
|
|
|
264904
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297658
|
|
|
|
|
259431
|
|
|
297658
|
|
|
|
|
285004
|
|
|
297658
|
|
|
|
|
267869
|
|
|
297658
|
|
|
|
|
410058
|
|
|
587780
|
|
|
|
|
399898
|
|
|
587780
|
|
|
|
|
746891
|
|
|
297658
|
|
|
|
|
235112
|
|
|
297658
|
|
|
|
|
369627
|
|
|
290122
|
|
|
|
|
188128
|
|
|
290122
|
|
|
|
|
185423
|
|
|
290122
|
|
|
|
|
513985
|
|
|
290122
|
|
|
|
|
273680
|
|
|
297658
|
|
|
|
|
328641
|
|
|
1603
|
|
|
|
|
1559
|
|
|
1603
|
|
|
|
|
2080
|
|
|
1603
|
|
|
|
|
1828
|
|
|
1603
|
|
|
|
|
2550
|
|
|
1603
|
|
|
|
|
2854
|
|
|
296055
|
|
|
|
|
280305
|
|
|
0
|
|
|
|
|
0
|
|
|
296055
|
|
|
|
|
249265
|
|
|
296055
|
|
|
|
|
296603
|
|
|
296055
|
|
|
|
|
442547
|
|
|
296055
|
|
|
|
|
7106845
|
|
|
296055
|
|
|
|
|
400993
|
|
|
296055
|
|
|
|
|
683232
|
|
|
296055
|
|
|
|
|
269490
|
|
|
297658
|
|
|
|
|
806086
|
|
|
0
|
|
|
|
|
0
|
|
|
1734
|
|
|
|
|
1816
|
|
|
1734
|
|
|
|
|
2445
|
|
|
1734
|
|
|
|
|
2503
|
|
|
1709
|
|
|
|
|
1657
|
|
|
1709
|
|
|
|
|
2002
|
|
|
1709
|
|
|
|
|
2303
|
|
|
1709
|
|
|
|
|
1584
|
|
|
1709
|
|
|
|
|
29503
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297683
|
|
|
|
|
244192
|
|
|
297683
|
|
|
|
|
270388
|
|
|
297683
|
|
|
|
|
338600
|
|
|
297658
|
|
|
|
|
248689
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297658
|
|
|
|
|
274252
|
|
|
297658
|
|
|
|
|
298840
|
|
|
297658
|
|
|
|
|
267275
|
|
|
297658
|
|
|
|
|
418963
|
|
|
587780
|
|
|
|
|
409456
|
|
|
587780
|
|
|
|
|
751362
|
|
|
297658
|
|
|
|
|
215937
|
|
|
297658
|
|
|
|
|
347675
|
|
|
290122
|
|
|
|
|
199112
|
|
|
290122
|
|
|
|
|
172472
|
|
|
290122
|
|
|
|
|
450436
|
|
|
290122
|
|
|
|
|
296921
|
|
|
297658
|
|
|
|
|
340608
|
|
|
1603
|
|
|
|
|
1445
|
|
|
1603
|
|
|
|
|
2236
|
|
|
1603
|
|
|
|
|
2367
|
|
|
1603
|
|
|
|
|
2196
|
|
|
1603
|
|
|
|
|
2987
|
|
|
296055
|
|
|
|
|
281262
|
|
|
296055
|
|
|
|
|
262230
|
|
|
0
|
|
|
|
|
0
|
|
|
296055
|
|
|
|
|
394094
|
|
|
296055
|
|
|
|
|
466322
|
|
|
296055
|
|
|
|
|
7034837
|
|
|
296055
|
|
|
|
|
429157
|
|
|
296055
|
|
|
|
|
580629
|
|
|
296055
|
|
|
|
|
278146
|
|
|
297658
|
|
|
|
|
761792
|
|
|
0
|
|
|
|
|
0
|
|
|
1734
|
|
|
|
|
1897
|
|
|
1734
|
|
|
|
|
2251
|
|
|
1734
|
|
|
|
|
3666
|
|
|
1709
|
|
|
|
|
1810
|
|
|
1709
|
|
|
|
|
1952
|
|
|
1709
|
|
|
|
|
1964
|
|
|
1709
|
|
|
|
|
1650
|
|
|
1709
|
|
|
|
|
31132
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1734
|
|
|
|
|
1939
|
|
|
1734
|
|
|
|
|
2042
|
|
|
1734
|
|
|
|
|
2894
|
|
|
1709
|
|
|
|
|
1956
|
|
|
1709
|
|
|
|
|
2006
|
|
|
1709
|
|
|
|
|
2054
|
|
|
1709
|
|
|
|
|
1619
|
|
|
1709
|
|
|
|
|
28979
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297683
|
|
|
|
|
217374
|
|
|
297683
|
|
|
|
|
286866
|
|
|
297683
|
|
|
|
|
355233
|
|
|
297658
|
|
|
|
|
265094
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297658
|
|
|
|
|
242933
|
|
|
297658
|
|
|
|
|
273547
|
|
|
297658
|
|
|
|
|
264191
|
|
|
297658
|
|
|
|
|
426533
|
|
|
587780
|
|
|
|
|
393160
|
|
|
587780
|
|
|
|
|
729137
|
|
|
297658
|
|
|
|
|
211553
|
|
|
297658
|
|
|
|
|
351720
|
|
|
290122
|
|
|
|
|
185092
|
|
|
290122
|
|
|
|
|
176957
|
|
|
290122
|
|
|
|
|
433098
|
|
|
290122
|
|
|
|
|
266999
|
|
|
297658
|
|
|
|
|
316000
|
|
|
1603
|
|
|
|
|
1594
|
|
|
1603
|
|
|
|
|
2199
|
|
|
1603
|
|
|
|
|
3299
|
|
|
1603
|
|
|
|
|
2636
|
|
|
1603
|
|
|
|
|
3355
|
|
|
296055
|
|
|
|
|
262822
|
|
|
296055
|
|
|
|
|
266846
|
|
|
0
|
|
|
|
|
0
|
|
|
296055
|
|
|
|
|
362050
|
|
|
296055
|
|
|
|
|
418804
|
|
|
296055
|
|
|
|
|
6850018
|
|
|
296055
|
|
|
|
|
432089
|
|
|
296055
|
|
|
|
|
670902
|
|
|
296055
|
|
|
|
|
271068
|
|
|
297658
|
|
|
|
|
741184
|
|
|
0
|
|
|
|
|
0
|
|
|
1734
|
|
|
|
|
1798
|
|
|
1734
|
|
|
|
|
2195
|
|
|
1734
|
|
|
|
|
2853
|
|
|
1709
|
|
|
|
|
1708
|
|
|
1709
|
|
|
|
|
2063
|
|
|
1709
|
|
|
|
|
1937
|
|
|
1709
|
|
|
|
|
1606
|
|
|
1709
|
|
|
|
|
30716
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297683
|
|
|
|
|
241277
|
|
|
297683
|
|
|
|
|
313230
|
|
|
297683
|
|
|
|
|
369730
|
|
|
297658
|
|
|
|
|
258644
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297658
|
|
|
|
|
259078
|
|
|
297658
|
|
|
|
|
305121
|
|
|
297658
|
|
|
|
|
283216
|
|
|
297658
|
|
|
|
|
405637
|
|
|
587780
|
|
|
|
|
387657
|
|
|
587780
|
|
|
|
|
739598
|
|
|
297658
|
|
|
|
|
241057
|
|
|
297658
|
|
|
|
|
347731
|
|
|
290122
|
|
|
|
|
201427
|
|
|
290122
|
|
|
|
|
170117
|
|
|
290122
|
|
|
|
|
502285
|
|
|
290122
|
|
|
|
|
295875
|
|
|
297658
|
|
|
|
|
344766
|
|
|
1603
|
|
|
|
|
1508
|
|
|
1603
|
|
|
|
|
3077
|
|
|
1603
|
|
|
|
|
2141
|
|
|
1603
|
|
|
|
|
2196
|
|
|
1603
|
|
|
|
|
3226
|
|
|
296055
|
|
|
|
|
279923
|
|
|
0
|
|
|
|
|
0
|
|
|
296055
|
|
|
|
|
269951
|
|
|
296055
|
|
|
|
|
314953
|
|
|
296055
|
|
|
|
|
488959
|
|
|
296055
|
|
|
|
|
7028960
|
|
|
296055
|
|
|
|
|
415490
|
|
|
296055
|
|
|
|
|
592833
|
|
|
296055
|
|
|
|
|
272955
|
|
|
297658
|
|
|
|
|
813131
|
|
|
0
|
|
|
|
|
0
|
|
|
1735
|
|
|
|
|
1873
|
|
|
1735
|
|
|
|
|
2015
|
|
|
1735
|
|
|
|
|
2901
|
|
|
1710
|
|
|
|
|
1721
|
|
|
1710
|
|
|
|
|
1982
|
|
|
1710
|
|
|
|
|
2059
|
|
|
1710
|
|
|
|
|
1587
|
|
|
1710
|
|
|
|
|
30435
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297683
|
|
|
|
|
224078
|
|
|
297683
|
|
|
|
|
277918
|
|
|
297683
|
|
|
|
|
363363
|
|
|
297658
|
|
|
|
|
265830
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
297658
|
|
|
|
|
245626
|
|
|
297658
|
|
|
|
|
279381
|
|
|
297658
|
|
|
|
|
276141
|
|
|
297658
|
|
|
|
|
414752
|
|
|
587780
|
|
|
|
|
404348
|
|
|
587780
|
|
|
|
|
732594
|
|
|
297658
|
|
|
|
|
233610
|
|
|
297658
|
|
|
|
|
361405
|
|
|
290122
|
|
|
|
|
191873
|
|
|
290122
|
|
|
|
|
169282
|
|
|
290122
|
|
|
|
|
452362
|
|
|
290122
|
|
|
|
|
281065
|
|
|
297658
|
|
|
|
|
320860
|
|
|
1603
|
|
|
|
|
2057
|
|
|
1603
|
|
|
|
|
2676
|
|
|
1603
|
|
|
|
|
2743
|
|
|
1603
|
|
|
|
|
3273
|
|
|
1603
|
|
|
|
|
2822
|
|
|
296055
|
|
|
|
|
265688
|
|
|
296055
|
|
|
|
|
261405
|
|
|
0
|
|
|
|
|
0
|
|
|
296055
|
|
|
|
|
350098
|
|
|
296055
|
|
|
|
|
424979
|
|
|
296055
|
|
|
|
|
6883195
|
|
|
296055
|
|
|
|
|
422104
|
|
|
296055
|
|
|
|
|
585739
|
|
|
296055
|
|
|
|
|
275748
|
|
|
297658
|
|
|
|
|
753606
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
48989
|
|
|
|
|
36777
|
|
|
48989
|
|
|
|
|
41995
|
|
|
48989
|
|
|
|
|
127698
|
|
|
67957
|
|
|
|
|
46099
|
|
|
67957
|
|
|
|
|
58208
|
|
|
67957
|
|
|
|
|
160047
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
48982
|
|
|
|
|
35831
|
|
|
48982
|
|
|
|
|
44244
|
|
|
48982
|
|
|
|
|
132436
|
|
|
67957
|
|
|
|
|
47175
|
|
|
67957
|
|
|
|
|
56601
|
|
|
67957
|
|
|
|
|
174489
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
48982
|
|
|
|
|
35388
|
|
|
48982
|
|
|
|
|
42312
|
|
|
48982
|
|
|
|
|
128024
|
|
|
67960
|
|
|
|
|
49106
|
|
|
67960
|
|
|
|
|
58171
|
|
|
67960
|
|
|
|
|
168370
|
|
|
67960
|
|
|
|
|
47236
|
|
|
67960
|
|
|
|
|
57222
|
|
|
67960
|
|
|
|
|
161984
|
|
|
48982
|
|
|
|
|
34132
|
|
|
48982
|
|
|
|
|
39889
|
|
|
48982
|
|
|
|
|
122018
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
16575
|
|
|
|
|
10950
|
|
|
16575
|
|
|
|
|
15322
|
|
|
16575
|
|
|
|
|
31988
|
|
|
16588
|
|
|
|
|
11609
|
|
|
16588
|
|
|
|
|
15388
|
|
|
16588
|
|
|
|
|
30581
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
35594
|
|
|
|
|
25440
|
|
|
35594
|
|
|
|
|
29506
|
|
|
35594
|
|
|
|
|
62805
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
16575
|
|
|
|
|
11090
|
|
|
16575
|
|
|
|
|
14241
|
|
|
16575
|
|
|
|
|
29879
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
35588
|
|
|
|
|
24491
|
|
|
35588
|
|
|
|
|
32166
|
|
|
35588
|
|
|
|
|
60484
|
|
|
16575
|
|
|
|
|
11517
|
|
|
16575
|
|
|
|
|
16334
|
|
|
16575
|
|
|
|
|
31938
|
|
|
35588
|
|
|
|
|
25520
|
|
|
35588
|
|
|
|
|
30942
|
|
|
35588
|
|
|
|
|
65484
|
|
|
35594
|
|
|
|
|
24633
|
|
|
35594
|
|
|
|
|
31239
|
|
|
35594
|
|
|
|
|
58954
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
37807
|
|
|
|
|
38056
|
|
|
37807
|
|
|
|
|
38038
|
|
|
37807
|
|
|
|
|
34183
|
|
|
1457
|
|
|
|
|
1545
|
|
|
1456
|
|
|
|
|
1437
|
|
|
1456
|
|
|
|
|
1529
|
|
|
1
|
|
|
|
|
4
|
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
4
|
|
|
1
|
|
|
|
|
13
|
|
|
36350
|
|
|
|
|
33963
|
|
|
36350
|
|
|
|
|
34898
|
|
|
36350
|
|
|
|
|
37383
|
|
|
34379
|
|
|
|
|
27981
|
|
|
34379
|
|
|
|
|
51387
|
|
|
29181
|
|
|
|
|
22523
|
|
|
29181
|
|
|
|
|
35386
|
|
|
29181
|
|
|
|
|
18188
|
|
|
29181
|
|
|
|
|
42883
|
|
|
29181
|
|
|
|
|
27424
|
|
|
29181
|
|
|
|
|
25961
|
|
|
0
|
|
|
|
|
0
|
|
|
34379
|
|
|
|
|
23642
|
|
|
34379
|
|
|
|
|
43203
|
|
|
34379
|
|
|
|
|
33237
|
|
|
34379
|
|
|
|
|
39374
|
|
|
1971
|
|
|
|
|
2310
|
|
|
1971
|
|
|
|
|
4594
|
|
|
1971
|
|
|
|
|
47516
|
|
|
1971
|
|
|
|
|
5414
|
|
|
6062
|
|
|
|
|
14865
|
|
|
1971
|
|
|
|
|
2111
|
|
|
1971
|
|
|
|
|
2259
|
|
|
1971
|
|
|
|
|
3505
|
|
|
1971
|
|
|
|
|
2100
|
|
|
0
|
|
|
|
|
0
|
|
|
1971
|
|
|
|
|
2511
|
|
|
1971
|
|
|
|
|
4955
|
|
|
37807
|
|
|
|
|
1268563
|
|
|
333714
|
|
|
|
|
255421
|
|
|
333714
|
|
|
|
|
307820
|
|
|
333714
|
|
|
|
|
294419
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
333714
|
|
|
|
|
291028
|
|
|
333714
|
|
|
|
|
294895
|
|
|
333714
|
|
|
|
|
303528
|
|
|
320105
|
|
|
|
|
226492
|
|
|
320105
|
|
|
|
|
337974
|
|
|
279999
|
|
|
|
|
200526
|
|
|
279999
|
|
|
|
|
323677
|
|
|
279999
|
|
|
|
|
165530
|
|
|
279999
|
|
|
|
|
368781
|
|
|
279999
|
|
|
|
|
259536
|
|
|
0
|
|
|
|
|
0
|
|
|
279999
|
|
|
|
|
334417
|
|
|
320105
|
|
|
|
|
196740
|
|
|
320105
|
|
|
|
|
350970
|
|
|
320105
|
|
|
|
|
285359
|
|
|
320105
|
|
|
|
|
272182
|
|
|
13609
|
|
|
|
|
14627
|
|
|
13609
|
|
|
|
|
25150
|
|
|
13609
|
|
|
|
|
340951
|
|
|
13609
|
|
|
|
|
36674
|
|
|
45077
|
|
|
|
|
106579
|
|
|
13609
|
|
|
|
|
14336
|
|
|
13609
|
|
|
|
|
15867
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
13609
|
|
|
|
|
40603
|
|
|
13609
|
|
|
|
|
15161
|
|
|
13609
|
|
|
|
|
26991
|
|
|
333714
|
|
|
|
|
1690150
|
|
|
333714
|
|
|
|
|
249884
|
|
|
333714
|
|
|
|
|
289258
|
|
|
333714
|
|
|
|
|
292210
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
333714
|
|
|
|
|
283590
|
|
|
333714
|
|
|
|
|
296805
|
|
|
333714
|
|
|
|
|
317044
|
|
|
320110
|
|
|
|
|
229831
|
|
|
320110
|
|
|
|
|
339594
|
|
|
280019
|
|
|
|
|
184904
|
|
|
280019
|
|
|
|
|
332325
|
|
|
280019
|
|
|
|
|
170953
|
|
|
280019
|
|
|
|
|
360784
|
|
|
280019
|
|
|
|
|
276344
|
|
|
0
|
|
|
|
|
0
|
|
|
280019
|
|
|
|
|
339564
|
|
|
320110
|
|
|
|
|
214778
|
|
|
320110
|
|
|
|
|
349199
|
|
|
320110
|
|
|
|
|
287085
|
|
|
320110
|
|
|
|
|
277113
|
|
|
13604
|
|
|
|
|
13931
|
|
|
13604
|
|
|
|
|
27899
|
|
|
13604
|
|
|
|
|
347551
|
|
|
13604
|
|
|
|
|
34691
|
|
|
45057
|
|
|
|
|
118099
|
|
|
13604
|
|
|
|
|
13727
|
|
|
13604
|
|
|
|
|
16726
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
13604
|
|
|
|
|
43348
|
|
|
13604
|
|
|
|
|
13986
|
|
|
13604
|
|
|
|
|
30541
|
|
|
333714
|
|
|
|
|
1770645
|
|
|
37806
|
|
|
|
|
38664
|
|
|
37806
|
|
|
|
|
39784
|
|
|
37806
|
|
|
|
|
34646
|
|
|
1477
|
|
|
|
|
1712
|
|
|
1477
|
|
|
|
|
1518
|
|
|
1477
|
|
|
|
|
1855
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
36329
|
|
|
|
|
36859
|
|
|
36329
|
|
|
|
|
38875
|
|
|
36329
|
|
|
|
|
38791
|
|
|
34358
|
|
|
|
|
28673
|
|
|
34358
|
|
|
|
|
41972
|
|
|
29162
|
|
|
|
|
21535
|
|
|
29162
|
|
|
|
|
37601
|
|
|
29162
|
|
|
|
|
18304
|
|
|
29162
|
|
|
|
|
41662
|
|
|
29162
|
|
|
|
|
27213
|
|
|
0
|
|
|
|
|
0
|
|
|
29162
|
|
|
|
|
38745
|
|
|
34358
|
|
|
|
|
22893
|
|
|
34358
|
|
|
|
|
42081
|
|
|
34358
|
|
|
|
|
31798
|
|
|
34358
|
|
|
|
|
33786
|
|
|
1971
|
|
|
|
|
2362
|
|
|
1971
|
|
|
|
|
4048
|
|
|
1971
|
|
|
|
|
47999
|
|
|
1971
|
|
|
|
|
5265
|
|
|
6061
|
|
|
|
|
15531
|
|
|
1971
|
|
|
|
|
2024
|
|
|
1971
|
|
|
|
|
2354
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1971
|
|
|
|
|
6217
|
|
|
1971
|
|
|
|
|
2471
|
|
|
1971
|
|
|
|
|
4722
|
|
|
37806
|
|
|
|
|
1318935
|
|
|
333714
|
|
|
|
|
247909
|
|
|
333714
|
|
|
|
|
279665
|
|
|
333714
|
|
|
|
|
281829
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
333714
|
|
|
|
|
288551
|
|
|
333714
|
|
|
|
|
302323
|
|
|
333714
|
|
|
|
|
323969
|
|
|
320110
|
|
|
|
|
235395
|
|
|
320110
|
|
|
|
|
397070
|
|
|
280019
|
|
|
|
|
208903
|
|
|
280019
|
|
|
|
|
323101
|
|
|
280019
|
|
|
|
|
162730
|
|
|
280019
|
|
|
|
|
369007
|
|
|
280019
|
|
|
|
|
253432
|
|
|
280019
|
|
|
|
|
237127
|
|
|
0
|
|
|
|
|
0
|
|
|
320110
|
|
|
|
|
209265
|
|
|
320110
|
|
|
|
|
354562
|
|
|
320110
|
|
|
|
|
293177
|
|
|
320110
|
|
|
|
|
335126
|
|
|
13604
|
|
|
|
|
13872
|
|
|
13604
|
|
|
|
|
28325
|
|
|
13604
|
|
|
|
|
348887
|
|
|
13604
|
|
|
|
|
34627
|
|
|
45057
|
|
|
|
|
121785
|
|
|
13604
|
|
|
|
|
15264
|
|
|
13604
|
|
|
|
|
15919
|
|
|
13604
|
|
|
|
|
23847
|
|
|
13604
|
|
|
|
|
15021
|
|
|
0
|
|
|
|
|
0
|
|
|
13604
|
|
|
|
|
16638
|
|
|
13604
|
|
|
|
|
30360
|
|
|
333714
|
|
|
|
|
1717079
|
|
|
333714
|
|
|
|
|
251215
|
|
|
333714
|
|
|
|
|
297560
|
|
|
333714
|
|
|
|
|
306252
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
333714
|
|
|
|
|
308847
|
|
|
333714
|
|
|
|
|
307838
|
|
|
333714
|
|
|
|
|
320309
|
|
|
320105
|
|
|
|
|
246809
|
|
|
320105
|
|
|
|
|
412915
|
|
|
279999
|
|
|
|
|
217389
|
|
|
279999
|
|
|
|
|
333091
|
|
|
279999
|
|
|
|
|
165489
|
|
|
279999
|
|
|
|
|
380975
|
|
|
279999
|
|
|
|
|
264739
|
|
|
279999
|
|
|
|
|
236365
|
|
|
0
|
|
|
|
|
0
|
|
|
320105
|
|
|
|
|
222962
|
|
|
320105
|
|
|
|
|
368015
|
|
|
320105
|
|
|
|
|
297545
|
|
|
320105
|
|
|
|
|
352804
|
|
|
13609
|
|
|
|
|
15441
|
|
|
13609
|
|
|
|
|
28782
|
|
|
13609
|
|
|
|
|
363733
|
|
|
13609
|
|
|
|
|
35564
|
|
|
45077
|
|
|
|
|
124471
|
|
|
13609
|
|
|
|
|
13380
|
|
|
13609
|
|
|
|
|
19348
|
|
|
13609
|
|
|
|
|
26721
|
|
|
13609
|
|
|
|
|
15268
|
|
|
0
|
|
|
|
|
0
|
|
|
13609
|
|
|
|
|
18085
|
|
|
13609
|
|
|
|
|
30550
|
|
|
333714
|
|
|
|
|
1696771
|
|
|
333714
|
|
|
|
|
276272
|
|
|
333714
|
|
|
|
|
283400
|
|
|
333714
|
|
|
|
|
290627
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
333714
|
|
|
|
|
309904
|
|
|
333714
|
|
|
|
|
329307
|
|
|
333714
|
|
|
|
|
332902
|
|
|
320105
|
|
|
|
|
231043
|
|
|
320105
|
|
|
|
|
356145
|
|
|
279999
|
|
|
|
|
187760
|
|
|
279999
|
|
|
|
|
341491
|
|
|
279999
|
|
|
|
|
165368
|
|
|
279999
|
|
|
|
|
360992
|
|
|
279999
|
|
|
|
|
272560
|
|
|
0
|
|
|
|
|
0
|
|
|
279999
|
|
|
|
|
338580
|
|
|
320105
|
|
|
|
|
210223
|
|
|
320105
|
|
|
|
|
342865
|
|
|
320105
|
|
|
|
|
290828
|
|
|
320105
|
|
|
|
|
290142
|
|
|
13609
|
|
|
|
|
14175
|
|
|
13609
|
|
|
|
|
31724
|
|
|
13609
|
|
|
|
|
358943
|
|
|
13609
|
|
|
|
|
36618
|
|
|
45077
|
|
|
|
|
119651
|
|
|
13609
|
|
|
|
|
14950
|
|
|
13609
|
|
|
|
|
17456
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
13609
|
|
|
|
|
42404
|
|
|
13609
|
|
|
|
|
18016
|
|
|
13609
|
|
|
|
|
26783
|
|
|
333714
|
|
|
|
|
1745654
|
|
|
37807
|
|
|
|
|
35520
|
|
|
37807
|
|
|
|
|
38850
|
|
|
37807
|
|
|
|
|
32708
|
|
|
1457
|
|
|
|
|
1550
|
|
|
1456
|
|
|
|
|
1361
|
|
|
1456
|
|
|
|
|
1606
|
|
|
1
|
|
|
|
|
4
|
|
|
1
|
|
|
|
|
1
|
|
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
7
|
|
|
36350
|
|
|
|
|
35916
|
|
|
36350
|
|
|
|
|
33408
|
|
|
36350
|
|
|
|
|
35629
|
|
|
34379
|
|
|
|
|
28425
|
|
|
34379
|
|
|
|
|
38047
|
|
|
29181
|
|
|
|
|
19840
|
|
|
29181
|
|
|
|
|
34493
|
|
|
29181
|
|
|
|
|
17295
|
|
|
29181
|
|
|
|
|
38163
|
|
|
29181
|
|
|
|
|
27578
|
|
|
0
|
|
|
|
|
0
|
|
|
29181
|
|
|
|
|
35243
|
|
|
34379
|
|
|
|
|
22672
|
|
|
34379
|
|
|
|
|
38302
|
|
|
34379
|
|
|
|
|
32157
|
|
|
34379
|
|
|
|
|
29629
|
|
|
1971
|
|
|
|
|
1964
|
|
|
1971
|
|
|
|
|
3678
|
|
|
1971
|
|
|
|
|
44551
|
|
|
1971
|
|
|
|
|
4515
|
|
|
6062
|
|
|
|
|
13465
|
|
|
1971
|
|
|
|
|
1884
|
|
|
1971
|
|
|
|
|
2107
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1971
|
|
|
|
|
5373
|
|
|
1971
|
|
|
|
|
2097
|
|
|
1971
|
|
|
|
|
3922
|
|
|
37807
|
|
|
|
|
1226934
|
|
|
37806
|
|
|
|
|
35777
|
|
|
37806
|
|
|
|
|
39410
|
|
|
37806
|
|
|
|
|
33898
|
|
|
1477
|
|
|
|
|
1553
|
|
|
1477
|
|
|
|
|
1502
|
|
|
1477
|
|
|
|
|
1572
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
36329
|
|
|
|
|
35750
|
|
|
36329
|
|
|
|
|
33488
|
|
|
36329
|
|
|
|
|
34923
|
|
|
34358
|
|
|
|
|
28268
|
|
|
34358
|
|
|
|
|
48781
|
|
|
29162
|
|
|
|
|
22038
|
|
|
29162
|
|
|
|
|
34740
|
|
|
29162
|
|
|
|
|
18045
|
|
|
29162
|
|
|
|
|
43294
|
|
|
29162
|
|
|
|
|
27798
|
|
|
29162
|
|
|
|
|
26420
|
|
|
0
|
|
|
|
|
0
|
|
|
34358
|
|
|
|
|
24746
|
|
|
34358
|
|
|
|
|
43558
|
|
|
34358
|
|
|
|
|
33028
|
|
|
34358
|
|
|
|
|
40613
|
|
|
1971
|
|
|
|
|
2052
|
|
|
1971
|
|
|
|
|
4141
|
|
|
1971
|
|
|
|
|
46596
|
|
|
1971
|
|
|
|
|
4658
|
|
|
6061
|
|
|
|
|
15117
|
|
|
1971
|
|
|
|
|
1964
|
|
|
1971
|
|
|
|
|
2306
|
|
|
1971
|
|
|
|
|
3372
|
|
|
1971
|
|
|
|
|
2044
|
|
|
0
|
|
|
|
|
0
|
|
|
1971
|
|
|
|
|
2529
|
|
|
1971
|
|
|
|
|
4248
|
|
|
37806
|
|
|
|
|
1270914
|
|
|
37808
|
|
|
|
|
35160
|
|
|
37808
|
|
|
|
|
36900
|
|
|
37808
|
|
|
|
|
34549
|
|
|
1477
|
|
|
|
|
1613
|
|
|
1477
|
|
|
|
|
1470
|
|
|
1477
|
|
|
|
|
1603
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
36331
|
|
|
|
|
34829
|
|
|
36331
|
|
|
|
|
35372
|
|
|
36331
|
|
|
|
|
34397
|
|
|
34358
|
|
|
|
|
26985
|
|
|
34358
|
|
|
|
|
46767
|
|
|
29162
|
|
|
|
|
20352
|
|
|
29162
|
|
|
|
|
34353
|
|
|
29162
|
|
|
|
|
17030
|
|
|
29162
|
|
|
|
|
40441
|
|
|
29162
|
|
|
|
|
27232
|
|
|
29162
|
|
|
|
|
26404
|
|
|
0
|
|
|
|
|
0
|
|
|
34358
|
|
|
|
|
24499
|
|
|
34358
|
|
|
|
|
41882
|
|
|
34358
|
|
|
|
|
32130
|
|
|
34358
|
|
|
|
|
37673
|
|
|
1973
|
|
|
|
|
1931
|
|
|
1973
|
|
|
|
|
3724
|
|
|
1973
|
|
|
|
|
43169
|
|
|
1973
|
|
|
|
|
4464
|
|
|
6062
|
|
|
|
|
13000
|
|
|
1973
|
|
|
|
|
1906
|
|
|
1973
|
|
|
|
|
2337
|
|
|
1973
|
|
|
|
|
3478
|
|
|
1973
|
|
|
|
|
1974
|
|
|
0
|
|
|
|
|
0
|
|
|
1973
|
|
|
|
|
2476
|
|
|
1973
|
|
|
|
|
4170
|
|
|
37808
|
|
|
|
|
1221373
|
|
|
333714
|
|
|
|
|
253471
|
|
|
333714
|
|
|
|
|
286582
|
|
|
333714
|
|
|
|
|
288312
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
333714
|
|
|
|
|
304600
|
|
|
333714
|
|
|
|
|
298968
|
|
|
333714
|
|
|
|
|
306120
|
|
|
320110
|
|
|
|
|
233142
|
|
|
320110
|
|
|
|
|
345564
|
|
|
280019
|
|
|
|
|
185181
|
|
|
280019
|
|
|
|
|
332940
|
|
|
280019
|
|
|
|
|
165518
|
|
|
280019
|
|
|
|
|
369412
|
|
|
280019
|
|
|
|
|
259834
|
|
|
0
|
|
|
|
|
0
|
|
|
280019
|
|
|
|
|
335256
|
|
|
320110
|
|
|
|
|
204729
|
|
|
320110
|
|
|
|
|
342977
|
|
|
320110
|
|
|
|
|
292078
|
|
|
320110
|
|
|
|
|
286490
|
|
|
13604
|
|
|
|
|
14510
|
|
|
13604
|
|
|
|
|
30171
|
|
|
13604
|
|
|
|
|
363048
|
|
|
13604
|
|
|
|
|
35432
|
|
|
45057
|
|
|
|
|
119898
|
|
|
13604
|
|
|
|
|
14640
|
|
|
13604
|
|
|
|
|
15509
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
13604
|
|
|
|
|
43029
|
|
|
13604
|
|
|
|
|
16512
|
|
|
13604
|
|
|
|
|
30528
|
|
|
333714
|
|
|
|
|
1706585
|
|
|
37807
|
|
|
|
|
34491
|
|
|
37807
|
|
|
|
|
38532
|
|
|
37807
|
|
|
|
|
36293
|
|
|
1457
|
|
|
|
|
1510
|
|
|
1456
|
|
|
|
|
1382
|
|
|
1456
|
|
|
|
|
1646
|
|
|
1
|
|
|
|
|
4
|
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
5
|
|
|
1
|
|
|
|
|
8
|
|
|
36350
|
|
|
|
|
34162
|
|
|
36350
|
|
|
|
|
33188
|
|
|
36350
|
|
|
|
|
34048
|
|
|
34376
|
|
|
|
|
26614
|
|
|
34376
|
|
|
|
|
46935
|
|
|
29174
|
|
|
|
|
21034
|
|
|
29174
|
|
|
|
|
32900
|
|
|
29174
|
|
|
|
|
17837
|
|
|
29174
|
|
|
|
|
40344
|
|
|
29174
|
|
|
|
|
25909
|
|
|
29174
|
|
|
|
|
24118
|
|
|
0
|
|
|
|
|
0
|
|
|
34376
|
|
|
|
|
23672
|
|
|
34376
|
|
|
|
|
41339
|
|
|
34376
|
|
|
|
|
30554
|
|
|
34376
|
|
|
|
|
37870
|
|
|
1974
|
|
|
|
|
1973
|
|
|
1974
|
|
|
|
|
3297
|
|
|
1974
|
|
|
|
|
43769
|
|
|
1974
|
|
|
|
|
4222
|
|
|
6072
|
|
|
|
|
13151
|
|
|
1974
|
|
|
|
|
1713
|
|
|
1974
|
|
|
|
|
2143
|
|
|
1974
|
|
|
|
|
3136
|
|
|
1974
|
|
|
|
|
1803
|
|
|
0
|
|
|
|
|
0
|
|
|
1974
|
|
|
|
|
2561
|
|
|
1974
|
|
|
|
|
3915
|
|
|
37807
|
|
|
|
|
1200155
|
|
|
333714
|
|
|
|
|
246752
|
|
|
333714
|
|
|
|
|
287890
|
|
|
333714
|
|
|
|
|
310750
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
333714
|
|
|
|
|
301154
|
|
|
333714
|
|
|
|
|
311422
|
|
|
333714
|
|
|
|
|
318839
|
|
|
320105
|
|
|
|
|
246905
|
|
|
320105
|
|
|
|
|
422464
|
|
|
279999
|
|
|
|
|
207686
|
|
|
279999
|
|
|
|
|
330477
|
|
|
279999
|
|
|
|
|
174219
|
|
|
279999
|
|
|
|
|
372093
|
|
|
279999
|
|
|
|
|
265656
|
|
|
279999
|
|
|
|
|
233355
|
|
|
0
|
|
|
|
|
0
|
|
|
320105
|
|
|
|
|
215763
|
|
|
320105
|
|
|
|
|
357228
|
|
|
320105
|
|
|
|
|
287741
|
|
|
320105
|
|
|
|
|
358767
|
|
|
13609
|
|
|
|
|
13901
|
|
|
13609
|
|
|
|
|
27716
|
|
|
13609
|
|
|
|
|
364519
|
|
|
13609
|
|
|
|
|
36576
|
|
|
45077
|
|
|
|
|
117521
|
|
|
13609
|
|
|
|
|
14805
|
|
|
13609
|
|
|
|
|
16015
|
|
|
13609
|
|
|
|
|
24986
|
|
|
13609
|
|
|
|
|
16540
|
|
|
0
|
|
|
|
|
0
|
|
|
13609
|
|
|
|
|
17268
|
|
|
13609
|
|
|
|
|
32219
|
|
|
333714
|
|
|
|
|
1663035
|
|
|
333714
|
|
|
|
|
240270
|
|
|
333714
|
|
|
|
|
273061
|
|
|
333714
|
|
|
|
|
287193
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
333714
|
|
|
|
|
296229
|
|
|
333714
|
|
|
|
|
303892
|
|
|
333714
|
|
|
|
|
311759
|
|
|
320110
|
|
|
|
|
233284
|
|
|
320110
|
|
|
|
|
407583
|
|
|
280019
|
|
|
|
|
196969
|
|
|
280019
|
|
|
|
|
320178
|
|
|
280019
|
|
|
|
|
164508
|
|
|
280019
|
|
|
|
|
357934
|
|
|
280019
|
|
|
|
|
262102
|
|
|
280019
|
|
|
|
|
235790
|
|
|
0
|
|
|
|
|
0
|
|
|
320110
|
|
|
|
|
213857
|
|
|
320110
|
|
|
|
|
356443
|
|
|
320110
|
|
|
|
|
294485
|
|
|
320110
|
|
|
|
|
332501
|
|
|
13604
|
|
|
|
|
15441
|
|
|
13604
|
|
|
|
|
26077
|
|
|
13604
|
|
|
|
|
341468
|
|
|
13604
|
|
|
|
|
33905
|
|
|
45057
|
|
|
|
|
115918
|
|
|
13604
|
|
|
|
|
13125
|
|
|
13604
|
|
|
|
|
14485
|
|
|
13604
|
|
|
|
|
23584
|
|
|
13604
|
|
|
|
|
13667
|
|
|
0
|
|
|
|
|
0
|
|
|
13604
|
|
|
|
|
16674
|
|
|
13604
|
|
|
|
|
31057
|
|
|
333714
|
|
|
|
|
1684333
|
|
|
37806
|
|
|
|
|
34839
|
|
|
37806
|
|
|
|
|
38307
|
|
|
37806
|
|
|
|
|
33314
|
|
|
1477
|
|
|
|
|
1663
|
|
|
1477
|
|
|
|
|
1386
|
|
|
1477
|
|
|
|
|
1685
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
36329
|
|
|
|
|
32474
|
|
|
36329
|
|
|
|
|
35747
|
|
|
36329
|
|
|
|
|
35366
|
|
|
34358
|
|
|
|
|
25884
|
|
|
34358
|
|
|
|
|
39317
|
|
|
29162
|
|
|
|
|
18636
|
|
|
29162
|
|
|
|
|
34606
|
|
|
29162
|
|
|
|
|
18075
|
|
|
29162
|
|
|
|
|
37836
|
|
|
29162
|
|
|
|
|
27743
|
|
|
0
|
|
|
|
|
0
|
|
|
29162
|
|
|
|
|
35440
|
|
|
34358
|
|
|
|
|
22221
|
|
|
34358
|
|
|
|
|
37008
|
|
|
34358
|
|
|
|
|
31106
|
|
|
34358
|
|
|
|
|
32185
|
|
|
1971
|
|
|
|
|
1937
|
|
|
1971
|
|
|
|
|
3429
|
|
|
1971
|
|
|
|
|
43769
|
|
|
1971
|
|
|
|
|
4488
|
|
|
6061
|
|
|
|
|
13144
|
|
|
1971
|
|
|
|
|
1812
|
|
|
1971
|
|
|
|
|
2144
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1971
|
|
|
|
|
5194
|
|
|
1971
|
|
|
|
|
2091
|
|
|
1971
|
|
|
|
|
3855
|
|
|
37806
|
|
|
|
|
1218799
|
|
|
37807
|
|
|
|
|
35960
|
|
|
37807
|
|
|
|
|
37929
|
|
|
37807
|
|
|
|
|
35014
|
|
|
1457
|
|
|
|
|
1643
|
|
|
1456
|
|
|
|
|
1403
|
|
|
1456
|
|
|
|
|
1690
|
|
|
1
|
|
|
|
|
6
|
|
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
26
|
|
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
8
|
|
|
36350
|
|
|
|
|
35224
|
|
|
36350
|
|
|
|
|
37389
|
|
|
36350
|
|
|
|
|
37636
|
|
|
34376
|
|
|
|
|
28543
|
|
|
34376
|
|
|
|
|
40283
|
|
|
29174
|
|
|
|
|
21492
|
|
|
29174
|
|
|
|
|
35311
|
|
|
29174
|
|
|
|
|
17813
|
|
|
29174
|
|
|
|
|
40613
|
|
|
29174
|
|
|
|
|
28399
|
|
|
0
|
|
|
|
|
0
|
|
|
29174
|
|
|
|
|
36985
|
|
|
34376
|
|
|
|
|
24020
|
|
|
34376
|
|
|
|
|
40758
|
|
|
34376
|
|
|
|
|
31922
|
|
|
34376
|
|
|
|
|
32001
|
|
|
1974
|
|
|
|
|
2256
|
|
|
1974
|
|
|
|
|
4036
|
|
|
1974
|
|
|
|
|
47945
|
|
|
1974
|
|
|
|
|
5081
|
|
|
6072
|
|
|
|
|
16013
|
|
|
1974
|
|
|
|
|
1906
|
|
|
1974
|
|
|
|
|
2372
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
1974
|
|
|
|
|
6325
|
|
|
1974
|
|
|
|
|
2290
|
|
|
1974
|
|
|
|
|
4328
|
|
|
37807
|
|
|
|
|
1280693
|
|
|
827
|
|
|
|
|
1332
|
|
|
827
|
|
|
|
|
1662
|
|
|
827
|
|
|
|
|
1746
|
|
|
823
|
|
|
|
|
1727
|
|
|
823
|
|
|
|
|
1404
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
863
|
|
|
823
|
|
|
|
|
2626
|
|
|
823
|
|
|
|
|
1263
|
|
|
823
|
|
|
|
|
2690
|
|
|
823
|
|
|
|
|
18264
|
|
|
828
|
|
|
|
|
966
|
|
|
828
|
|
|
|
|
953
|
|
|
828
|
|
|
|
|
1167
|
|
|
824
|
|
|
|
|
965
|
|
|
824
|
|
|
|
|
1148
|
|
|
824
|
|
|
|
|
945
|
|
|
824
|
|
|
|
|
869
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
824
|
|
|
|
|
11456
|
|
|
827
|
|
|
|
|
976
|
|
|
827
|
|
|
|
|
1037
|
|
|
827
|
|
|
|
|
1082
|
|
|
823
|
|
|
|
|
901
|
|
|
823
|
|
|
|
|
1030
|
|
|
823
|
|
|
|
|
855
|
|
|
823
|
|
|
|
|
801
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
11067
|
|
|
827
|
|
|
|
|
982
|
|
|
827
|
|
|
|
|
1081
|
|
|
827
|
|
|
|
|
1267
|
|
|
823
|
|
|
|
|
1068
|
|
|
823
|
|
|
|
|
1103
|
|
|
823
|
|
|
|
|
925
|
|
|
823
|
|
|
|
|
777
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
10872
|
|
|
827
|
|
|
|
|
954
|
|
|
827
|
|
|
|
|
1001
|
|
|
827
|
|
|
|
|
1131
|
|
|
823
|
|
|
|
|
957
|
|
|
823
|
|
|
|
|
1130
|
|
|
823
|
|
|
|
|
846
|
|
|
823
|
|
|
|
|
859
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
11067
|
|
|
827
|
|
|
|
|
1400
|
|
|
827
|
|
|
|
|
1468
|
|
|
827
|
|
|
|
|
1575
|
|
|
823
|
|
|
|
|
1694
|
|
|
823
|
|
|
|
|
1663
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
880
|
|
|
823
|
|
|
|
|
3019
|
|
|
823
|
|
|
|
|
1501
|
|
|
823
|
|
|
|
|
2747
|
|
|
823
|
|
|
|
|
19835
|
|
|
827
|
|
|
|
|
1189
|
|
|
827
|
|
|
|
|
1859
|
|
|
827
|
|
|
|
|
1952
|
|
|
823
|
|
|
|
|
1639
|
|
|
823
|
|
|
|
|
1740
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
968
|
|
|
823
|
|
|
|
|
3024
|
|
|
823
|
|
|
|
|
1096
|
|
|
823
|
|
|
|
|
2817
|
|
|
823
|
|
|
|
|
17517
|
|
|
827
|
|
|
|
|
1364
|
|
|
827
|
|
|
|
|
1595
|
|
|
827
|
|
|
|
|
1693
|
|
|
823
|
|
|
|
|
1676
|
|
|
823
|
|
|
|
|
1678
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
744
|
|
|
823
|
|
|
|
|
2850
|
|
|
823
|
|
|
|
|
1090
|
|
|
823
|
|
|
|
|
2940
|
|
|
823
|
|
|
|
|
15909
|
|
|
827
|
|
|
|
|
1388
|
|
|
827
|
|
|
|
|
2017
|
|
|
827
|
|
|
|
|
2112
|
|
|
823
|
|
|
|
|
1834
|
|
|
823
|
|
|
|
|
1616
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
757
|
|
|
823
|
|
|
|
|
3148
|
|
|
823
|
|
|
|
|
1002
|
|
|
823
|
|
|
|
|
2746
|
|
|
823
|
|
|
|
|
18362
|
|
|
827
|
|
|
|
|
1290
|
|
|
827
|
|
|
|
|
1102
|
|
|
827
|
|
|
|
|
1263
|
|
|
823
|
|
|
|
|
867
|
|
|
823
|
|
|
|
|
986
|
|
|
823
|
|
|
|
|
788
|
|
|
823
|
|
|
|
|
752
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
11319
|
|
|
827
|
|
|
|
|
851
|
|
|
827
|
|
|
|
|
1012
|
|
|
827
|
|
|
|
|
1253
|
|
|
823
|
|
|
|
|
891
|
|
|
823
|
|
|
|
|
994
|
|
|
823
|
|
|
|
|
736
|
|
|
823
|
|
|
|
|
805
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
10914
|
|
|
827
|
|
|
|
|
847
|
|
|
827
|
|
|
|
|
1065
|
|
|
827
|
|
|
|
|
1117
|
|
|
823
|
|
|
|
|
992
|
|
|
823
|
|
|
|
|
1128
|
|
|
823
|
|
|
|
|
887
|
|
|
823
|
|
|
|
|
774
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
10418
|
|
|
827
|
|
|
|
|
1231
|
|
|
827
|
|
|
|
|
1638
|
|
|
827
|
|
|
|
|
1445
|
|
|
823
|
|
|
|
|
1491
|
|
|
823
|
|
|
|
|
1148
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
971
|
|
|
823
|
|
|
|
|
2700
|
|
|
823
|
|
|
|
|
909
|
|
|
823
|
|
|
|
|
2416
|
|
|
823
|
|
|
|
|
16409
|
|
|
827
|
|
|
|
|
968
|
|
|
827
|
|
|
|
|
1050
|
|
|
827
|
|
|
|
|
1163
|
|
|
823
|
|
|
|
|
941
|
|
|
823
|
|
|
|
|
1075
|
|
|
823
|
|
|
|
|
803
|
|
|
823
|
|
|
|
|
816
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
11343
|
|
|
827
|
|
|
|
|
1314
|
|
|
827
|
|
|
|
|
1477
|
|
|
827
|
|
|
|
|
1416
|
|
|
823
|
|
|
|
|
1456
|
|
|
823
|
|
|
|
|
1332
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
768
|
|
|
823
|
|
|
|
|
2420
|
|
|
823
|
|
|
|
|
1095
|
|
|
823
|
|
|
|
|
2582
|
|
|
823
|
|
|
|
|
15274
|
|
|
827
|
|
|
|
|
1166
|
|
|
827
|
|
|
|
|
1594
|
|
|
827
|
|
|
|
|
1431
|
|
|
823
|
|
|
|
|
1662
|
|
|
823
|
|
|
|
|
1404
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
823
|
|
|
|
|
1027
|
|
|
823
|
|
|
|
|
2679
|
|
|
823
|
|
|
|
|
1277
|
|
|
823
|
|
|
|
|
2921
|
|
|
823
|
|
|
|
|
18792
|
|
|
19059
|
|
|
|
|
14869
|
|
|
19059
|
|
|
|
|
18828
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
310353
|
|
|
|
|
208076
|
|
|
310353
|
|
|
|
|
296091
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
310353
|
|
|
|
|
196565
|
|
|
310353
|
|
|
|
|
270525
|
|
|
310353
|
|
|
|
|
202891
|
|
|
310353
|
|
|
|
|
266667
|
|
|
310353
|
|
|
|
|
821117
|
|
|
310309
|
|
|
|
|
283766
|
|
|
310309
|
|
|
|
|
214498
|
|
|
310309
|
|
|
|
|
421341
|
|
|
4008952
|
|
|
|
|
4371711
|
|
|
4008952
|
|
|
|
|
2682881
|
|
|
310353
|
|
|
|
|
293983
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
310353
|
|
|
|
|
249301
|
|
|
19015
|
|
|
|
|
13549
|
|
|
19015
|
|
|
|
|
18161
|
|
|
19015
|
|
|
|
|
14266
|
|
|
19015
|
|
|
|
|
18340
|
|
|
19015
|
|
|
|
|
62282
|
|
|
19015
|
|
|
|
|
17940
|
|
|
19015
|
|
|
|
|
14181
|
|
|
19015
|
|
|
|
|
25953
|
|
|
249371
|
|
|
|
|
274762
|
|
|
249371
|
|
|
|
|
168610
|
|
|
19015
|
|
|
|
|
20187
|
|
|
19015
|
|
|
|
|
19488
|
|
|
19015
|
|
|
|
|
20422
|
|
|
19015
|
|
|
|
|
27430
|
|
|
0
|
|
|
|
|
0
|
|
|
310353
|
|
|
|
|
198625
|
|
|
310353
|
|
|
|
|
299893
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
310353
|
|
|
|
|
208442
|
|
|
310353
|
|
|
|
|
277661
|
|
|
310353
|
|
|
|
|
227252
|
|
|
310353
|
|
|
|
|
276733
|
|
|
310353
|
|
|
|
|
854431
|
|
|
310309
|
|
|
|
|
298551
|
|
|
310309
|
|
|
|
|
223735
|
|
|
310309
|
|
|
|
|
393839
|
|
|
4008952
|
|
|
|
|
4410439
|
|
|
4008952
|
|
|
|
|
2699596
|
|
|
310353
|
|
|
|
|
310581
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
310353
|
|
|
|
|
268339
|
|
|
310353
|
|
|
|
|
208519
|
|
|
310353
|
|
|
|
|
269483
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
19059
|
|
|
|
|
14495
|
|
|
19059
|
|
|
|
|
18612
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
310353
|
|
|
|
|
203547
|
|
|
310353
|
|
|
|
|
297169
|
|
|
310353
|
|
|
|
|
217982
|
|
|
310353
|
|
|
|
|
278021
|
|
|
310353
|
|
|
|
|
890657
|
|
|
310309
|
|
|
|
|
296139
|
|
|
310309
|
|
|
|
|
223630
|
|
|
310309
|
|
|
|
|
424621
|
|
|
2941662
|
|
|
|
|
3263629
|
|
|
2941662
|
|
|
|
|
2037087
|
|
|
310353
|
|
|
|
|
296111
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
310353
|
|
|
|
|
267811
|
|
|
19018
|
|
|
|
|
13426
|
|
|
19018
|
|
|
|
|
19848
|
|
|
19018
|
|
|
|
|
13959
|
|
|
19018
|
|
|
|
|
18105
|
|
|
19018
|
|
|
|
|
59256
|
|
|
19018
|
|
|
|
|
19847
|
|
|
19018
|
|
|
|
|
13168
|
|
|
19018
|
|
|
|
|
26454
|
|
|
250108
|
|
|
|
|
278179
|
|
|
250108
|
|
|
|
|
168258
|
|
|
19018
|
|
|
|
|
19388
|
|
|
19018
|
|
|
|
|
19443
|
|
|
19018
|
|
|
|
|
18978
|
|
|
19018
|
|
|
|
|
26966
|
|
|
0
|
|
|
|
|
0
|
|
|
19018
|
|
|
|
|
15090
|
|
|
19018
|
|
|
|
|
19526
|
|
|
19018
|
|
|
|
|
14178
|
|
|
19018
|
|
|
|
|
19517
|
|
|
19018
|
|
|
|
|
59138
|
|
|
19018
|
|
|
|
|
20580
|
|
|
19018
|
|
|
|
|
13771
|
|
|
19018
|
|
|
|
|
32402
|
|
|
250108
|
|
|
|
|
274685
|
|
|
250108
|
|
|
|
|
170286
|
|
|
19018
|
|
|
|
|
18799
|
|
|
19018
|
|
|
|
|
21422
|
|
|
19018
|
|
|
|
|
20473
|
|
|
19018
|
|
|
|
|
25782
|
|
|
0
|
|
|
|
|
0
|
|
|
19077
|
|
|
|
|
13638
|
|
|
19077
|
|
|
|
|
19482
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
310353
|
|
|
|
|
216446
|
|
|
310353
|
|
|
|
|
276939
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
19059
|
|
|
|
|
13598
|
|
|
19059
|
|
|
|
|
17880
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
310353
|
|
|
|
|
210249
|
|
|
310353
|
|
|
|
|
308388
|
|
|
310353
|
|
|
|
|
215699
|
|
|
310353
|
|
|
|
|
289774
|
|
|
310353
|
|
|
|
|
922181
|
|
|
310309
|
|
|
|
|
318454
|
|
|
310309
|
|
|
|
|
227806
|
|
|
310309
|
|
|
|
|
385979
|
|
|
2941662
|
|
|
|
|
3278052
|
|
|
2941662
|
|
|
|
|
2022369
|
|
|
310353
|
|
|
|
|
314131
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
310353
|
|
|
|
|
277597
|
|
|
19015
|
|
|
|
|
15126
|
|
|
19015
|
|
|
|
|
18325
|
|
|
19015
|
|
|
|
|
14513
|
|
|
19015
|
|
|
|
|
18718
|
|
|
19015
|
|
|
|
|
61993
|
|
|
19015
|
|
|
|
|
18190
|
|
|
19015
|
|
|
|
|
13801
|
|
|
19015
|
|
|
|
|
34388
|
|
|
249371
|
|
|
|
|
274721
|
|
|
249371
|
|
|
|
|
165995
|
|
|
19015
|
|
|
|
|
19295
|
|
|
19015
|
|
|
|
|
18941
|
|
|
19015
|
|
|
|
|
18942
|
|
|
19015
|
|
|
|
|
25017
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
3434540
|
|
|
|
|
2742808
|
|
|
7210211
|
|
|
|
|
5429022
|
|
|
403372
|
|
|
|
|
301222
|
|
|
3124231
|
|
|
|
|
2359189
|
|
|
198644
|
|
|
|
|
156018
|
|
|
441578
|
|
|
|
|
325027
|
|
|
175159
|
|
|
|
|
142141
|
|
|
5294343
|
|
|
|
|
3923985
|
|
|
5914961
|
|
|
|
|
4494695
|
|
|
156079
|
|
|
|
|
129835
|
|
|
356402
|
|
|
|
|
273839
|
|
|
2786925
|
|
|
|
|
2241594
|
|
|
217741
|
|
|
|
|
171912
|
|
|
318278
|
|
|
|
|
237502
|
|
|
6589593
|
|
|
|
|
5142249
|
|
|
2476616
|
|
|
|
|
1907842
|
|
|
6613348
|
|
|
|
|
9450095
|
|
|
727241
|
|
|
|
|
1070666
|
|
|
576769
|
|
|
|
|
835183
|
|
|
758012
|
|
|
|
|
1123439
|
|
|
10389019
|
|
|
|
|
14785478
|
|
|
7579397
|
|
|
|
|
10999292
|
|
|
7258334
|
|
|
|
|
10606606
|
|
|
522513
|
|
|
|
|
814818
|
|
|
10397124
|
|
|
|
|
14628637
|
|
|
6934411
|
|
|
|
|
9853574
|
|
|
538422
|
|
|
|
|
804349
|
|
|
560829
|
|
|
|
|
837631
|
|
|
10386370
|
|
|
|
|
14479368
|
|
|
10399773
|
|
|
|
|
14923937
|
|
|
762259
|
|
|
|
|
1088132
|
|
|
723135
|
|
|
|
|
1061573
|
|
|
647721
|
|
|
|
|
541650
|
|
|
124645
|
|
|
|
|
102261
|
|
|
958074
|
|
|
|
|
776630
|
|
|
958074
|
|
|
|
|
758194
|
|
|
181590
|
|
|
|
|
138212
|
|
|
181590
|
|
|
|
|
144729
|
|
|
647721
|
|
|
|
|
537835
|
|
|
181602
|
|
|
|
|
139216
|
|
|
124607
|
|
|
|
|
96965
|
|
|
181602
|
|
|
|
|
144658
|
|
|
958074
|
|
|
|
|
790348
|
|
|
124607
|
|
|
|
|
96911
|
|
|
647721
|
|
|
|
|
543503
|
|
|
124607
|
|
|
|
|
99073
|
|
|
647721
|
|
|
|
|
518163
|
|
|
958074
|
|
|
|
|
820211
|
|
|
60137
|
|
|
|
|
49939
|
|
|
120359
|
|
|
|
|
98547
|
|
|
60140
|
|
|
|
|
53314
|
|
|
941726
|
|
|
|
|
770643
|
|
|
120359
|
|
|
|
|
97948
|
|
|
1883451
|
|
|
|
|
1437807
|
|
|
1883451
|
|
|
|
|
1447981
|
|
|
941726
|
|
|
|
|
751438
|
|
|
1883451
|
|
|
|
|
1435071
|
|
|
60140
|
|
|
|
|
53168
|
|
|
1883451
|
|
|
|
|
1430005
|
|
|
60137
|
|
|
|
|
51963
|
|
|
120409
|
|
|
|
|
95962
|
|
|
941726
|
|
|
|
|
739400
|
|
|
941726
|
|
|
|
|
770101
|
|
|
120359
|
|
|
|
|
98694
|
|
|
1279008
|
|
|
|
|
1032335
|
|
|
1279008
|
|
|
|
|
1046357
|
|
|
78954
|
|
|
|
|
64928
|
|
|
2571609
|
|
|
|
|
1971457
|
|
|
159784
|
|
|
|
|
120988
|
|
|
2571609
|
|
|
|
|
1972861
|
|
|
1279008
|
|
|
|
|
1004121
|
|
|
1279008
|
|
|
|
|
1018183
|
|
|
78903
|
|
|
|
|
67400
|
|
|
2571609
|
|
|
|
|
1977705
|
|
|
78954
|
|
|
|
|
60652
|
|
|
159803
|
|
|
|
|
120099
|
|
|
159868
|
|
|
|
|
123057
|
|
|
159868
|
|
|
|
|
119398
|
|
|
78903
|
|
|
|
|
67439
|
|
|
2571609
|
|
|
|
|
1993593
|
|
|
190851
|
|
|
|
|
125828
|
|
|
190851
|
|
|
|
|
451162
|
|
|
309838
|
|
|
|
|
200457
|
|
|
309838
|
|
|
|
|
702327
|
|
|
1660047
|
|
|
|
|
1056069
|
|
|
1660047
|
|
|
|
|
3322084
|
|
|
681000
|
|
|
|
|
461570
|
|
|
681000
|
|
|
|
|
1078516
|
|
|
142837
|
|
|
|
|
92352
|
|
|
142837
|
|
|
|
|
303778
|
|
|
100285
|
|
|
|
|
67949
|
|
|
100285
|
|
|
|
|
248004
|
|
|
2280709
|
|
|
|
|
1479624
|
|
|
2280709
|
|
|
|
|
4639389
|
|
|
1638988
|
|
|
|
|
1018603
|
|
|
1638988
|
|
|
|
|
2581360
|
|
|
275981
|
|
|
|
|
177648
|
|
|
275981
|
|
|
|
|
643578
|
|
|
110271
|
|
|
|
|
76603
|
|
|
110271
|
|
|
|
|
250816
|
|
|
991353
|
|
|
|
|
643415
|
|
|
991353
|
|
|
|
|
1578213
|
|
|
157634
|
|
|
|
|
104067
|
|
|
157634
|
|
|
|
|
318799
|
|
|
1328635
|
|
|
|
|
876782
|
|
|
1328635
|
|
|
|
|
2035668
|
|
|
2955317
|
|
|
|
|
1876399
|
|
|
2955317
|
|
|
|
|
5632671
|
|
|
3575979
|
|
|
|
|
2299958
|
|
|
3575979
|
|
|
|
|
7236617
|
|
|
219889
|
|
|
|
|
145519
|
|
|
219889
|
|
|
|
|
495519
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
1016
|
|
|
782
|
|
|
|
|
2359
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
786
|
|
|
782
|
|
|
|
|
1827
|
|
|
782
|
|
|
|
|
3500
|
|
|
782
|
|
|
|
|
26268
|
|
|
782
|
|
|
|
|
1041
|
|
|
782
|
|
|
|
|
1777
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
761
|
|
|
782
|
|
|
|
|
1407
|
|
|
782
|
|
|
|
|
3186
|
|
|
782
|
|
|
|
|
25797
|
|
|
782
|
|
|
|
|
731
|
|
|
782
|
|
|
|
|
863
|
|
|
774
|
|
|
|
|
819
|
|
|
774
|
|
|
|
|
747
|
|
|
774
|
|
|
|
|
881
|
|
|
8
|
|
|
|
|
12
|
|
|
8
|
|
|
|
|
13
|
|
|
8
|
|
|
|
|
14
|
|
|
8
|
|
|
|
|
37
|
|
|
8
|
|
|
|
|
13
|
|
|
8
|
|
|
|
|
13
|
|
|
8
|
|
|
|
|
16
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
14489
|
|
|
782
|
|
|
|
|
1323
|
|
|
782
|
|
|
|
|
1420
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
665
|
|
|
782
|
|
|
|
|
1259
|
|
|
782
|
|
|
|
|
2907
|
|
|
782
|
|
|
|
|
21676
|
|
|
782
|
|
|
|
|
787
|
|
|
782
|
|
|
|
|
803
|
|
|
771
|
|
|
|
|
803
|
|
|
771
|
|
|
|
|
735
|
|
|
771
|
|
|
|
|
858
|
|
|
11
|
|
|
|
|
17
|
|
|
11
|
|
|
|
|
15
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
11
|
|
|
|
|
20
|
|
|
11
|
|
|
|
|
16
|
|
|
11
|
|
|
|
|
17
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
15189
|
|
|
785
|
|
|
|
|
853
|
|
|
785
|
|
|
|
|
877
|
|
|
776
|
|
|
|
|
987
|
|
|
776
|
|
|
|
|
849
|
|
|
776
|
|
|
|
|
996
|
|
|
9
|
|
|
|
|
15
|
|
|
9
|
|
|
|
|
18
|
|
|
9
|
|
|
|
|
17
|
|
|
9
|
|
|
|
|
41
|
|
|
9
|
|
|
|
|
20
|
|
|
9
|
|
|
|
|
19
|
|
|
9
|
|
|
|
|
15
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
785
|
|
|
|
|
15969
|
|
|
782
|
|
|
|
|
988
|
|
|
782
|
|
|
|
|
1717
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
779
|
|
|
782
|
|
|
|
|
1723
|
|
|
782
|
|
|
|
|
3274
|
|
|
782
|
|
|
|
|
22410
|
|
|
782
|
|
|
|
|
1166
|
|
|
782
|
|
|
|
|
1236
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
734
|
|
|
782
|
|
|
|
|
1604
|
|
|
782
|
|
|
|
|
2991
|
|
|
782
|
|
|
|
|
22199
|
|
|
782
|
|
|
|
|
797
|
|
|
782
|
|
|
|
|
852
|
|
|
774
|
|
|
|
|
747
|
|
|
774
|
|
|
|
|
776
|
|
|
774
|
|
|
|
|
866
|
|
|
8
|
|
|
|
|
12
|
|
|
8
|
|
|
|
|
13
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
8
|
|
|
|
|
11
|
|
|
8
|
|
|
|
|
13
|
|
|
8
|
|
|
|
|
14
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
15153
|
|
|
782
|
|
|
|
|
1184
|
|
|
782
|
|
|
|
|
1987
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
689
|
|
|
782
|
|
|
|
|
1228
|
|
|
782
|
|
|
|
|
2909
|
|
|
782
|
|
|
|
|
21837
|
|
|
782
|
|
|
|
|
1157
|
|
|
782
|
|
|
|
|
1782
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
940
|
|
|
782
|
|
|
|
|
1809
|
|
|
782
|
|
|
|
|
3478
|
|
|
782
|
|
|
|
|
25167
|
|
|
782
|
|
|
|
|
1019
|
|
|
782
|
|
|
|
|
1439
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
1030
|
|
|
782
|
|
|
|
|
1817
|
|
|
782
|
|
|
|
|
3081
|
|
|
782
|
|
|
|
|
24937
|
|
|
782
|
|
|
|
|
813
|
|
|
782
|
|
|
|
|
829
|
|
|
774
|
|
|
|
|
791
|
|
|
774
|
|
|
|
|
825
|
|
|
774
|
|
|
|
|
905
|
|
|
8
|
|
|
|
|
12
|
|
|
8
|
|
|
|
|
12
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
8
|
|
|
|
|
11
|
|
|
8
|
|
|
|
|
15
|
|
|
8
|
|
|
|
|
16
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
15042
|
|
|
782
|
|
|
|
|
782
|
|
|
782
|
|
|
|
|
841
|
|
|
774
|
|
|
|
|
802
|
|
|
774
|
|
|
|
|
734
|
|
|
774
|
|
|
|
|
877
|
|
|
8
|
|
|
|
|
12
|
|
|
8
|
|
|
|
|
12
|
|
|
8
|
|
|
|
|
12
|
|
|
8
|
|
|
|
|
30
|
|
|
8
|
|
|
|
|
11
|
|
|
8
|
|
|
|
|
13
|
|
|
8
|
|
|
|
|
11
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
15086
|
|
|
782
|
|
|
|
|
746
|
|
|
782
|
|
|
|
|
912
|
|
|
771
|
|
|
|
|
779
|
|
|
771
|
|
|
|
|
801
|
|
|
771
|
|
|
|
|
959
|
|
|
11
|
|
|
|
|
14
|
|
|
11
|
|
|
|
|
13
|
|
|
11
|
|
|
|
|
18
|
|
|
11
|
|
|
|
|
43
|
|
|
11
|
|
|
|
|
15
|
|
|
11
|
|
|
|
|
14
|
|
|
11
|
|
|
|
|
28
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
15913
|
|
|
782
|
|
|
|
|
795
|
|
|
782
|
|
|
|
|
915
|
|
|
774
|
|
|
|
|
781
|
|
|
774
|
|
|
|
|
747
|
|
|
774
|
|
|
|
|
906
|
|
|
8
|
|
|
|
|
15
|
|
|
8
|
|
|
|
|
13
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
8
|
|
|
|
|
15
|
|
|
8
|
|
|
|
|
13
|
|
|
8
|
|
|
|
|
14
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
782
|
|
|
|
|
15074
|
|
|
42565
|
|
|
|
|
27231
|
|
|
42565
|
|
|
|
|
39459
|
|
|
42565
|
|
|
|
|
32400
|
|
|
42565
|
|
|
|
|
36507
|
|
|
42565
|
|
|
|
|
39551
|
|
|
42565
|
|
|
|
|
58177
|
|
|
348997
|
|
|
|
|
440013
|
|
|
42565
|
|
|
|
|
54006
|
|
|
647630
|
|
|
|
|
419554
|
|
|
647630
|
|
|
|
|
520901
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
647630
|
|
|
|
|
412258
|
|
|
647630
|
|
|
|
|
557606
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
647630
|
|
|
|
|
423189
|
|
|
647630
|
|
|
|
|
579147
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
647635
|
|
|
|
|
426501
|
|
|
647635
|
|
|
|
|
555497
|
|
|
647635
|
|
|
|
|
447009
|
|
|
647635
|
|
|
|
|
564679
|
|
|
647635
|
|
|
|
|
585426
|
|
|
647635
|
|
|
|
|
854793
|
|
|
5944615
|
|
|
|
|
7256152
|
|
|
647635
|
|
|
|
|
739617
|
|
|
42592
|
|
|
|
|
28120
|
|
|
42592
|
|
|
|
|
34686
|
|
|
42592
|
|
|
|
|
29511
|
|
|
42592
|
|
|
|
|
38971
|
|
|
42592
|
|
|
|
|
39318
|
|
|
42592
|
|
|
|
|
64549
|
|
|
346895
|
|
|
|
|
426746
|
|
|
42592
|
|
|
|
|
49165
|
|
|
42565
|
|
|
|
|
27357
|
|
|
42565
|
|
|
|
|
38250
|
|
|
42565
|
|
|
|
|
30051
|
|
|
42565
|
|
|
|
|
39665
|
|
|
42565
|
|
|
|
|
40736
|
|
|
42565
|
|
|
|
|
66215
|
|
|
348997
|
|
|
|
|
435768
|
|
|
42565
|
|
|
|
|
50810
|
|
|
647630
|
|
|
|
|
434220
|
|
|
647630
|
|
|
|
|
587765
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
647635
|
|
|
|
|
418666
|
|
|
647635
|
|
|
|
|
544376
|
|
|
647635
|
|
|
|
|
448026
|
|
|
647635
|
|
|
|
|
553272
|
|
|
647635
|
|
|
|
|
579416
|
|
|
647635
|
|
|
|
|
856174
|
|
|
5944615
|
|
|
|
|
7367220
|
|
|
647635
|
|
|
|
|
758688
|
|
|
647635
|
|
|
|
|
424667
|
|
|
647635
|
|
|
|
|
518887
|
|
|
647635
|
|
|
|
|
432854
|
|
|
647635
|
|
|
|
|
557903
|
|
|
647635
|
|
|
|
|
570586
|
|
|
647635
|
|
|
|
|
802237
|
|
|
5944615
|
|
|
|
|
7170205
|
|
|
647635
|
|
|
|
|
740778
|
|
|
42586
|
|
|
|
|
28051
|
|
|
42586
|
|
|
|
|
41648
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
42592
|
|
|
|
|
27829
|
|
|
42592
|
|
|
|
|
35564
|
|
|
42592
|
|
|
|
|
33721
|
|
|
42592
|
|
|
|
|
36982
|
|
|
42592
|
|
|
|
|
39123
|
|
|
42592
|
|
|
|
|
58942
|
|
|
346895
|
|
|
|
|
431817
|
|
|
42592
|
|
|
|
|
51188
|
|
|
647635
|
|
|
|
|
452490
|
|
|
647635
|
|
|
|
|
567412
|
|
|
647635
|
|
|
|
|
466958
|
|
|
647635
|
|
|
|
|
559905
|
|
|
647635
|
|
|
|
|
605683
|
|
|
647635
|
|
|
|
|
854997
|
|
|
5944615
|
|
|
|
|
7353102
|
|
|
647635
|
|
|
|
|
778282
|
|
|
42586
|
|
|
|
|
27308
|
|
|
42586
|
|
|
|
|
34765
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
42570
|
|
|
|
|
29431
|
|
|
42570
|
|
|
|
|
36931
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
42565
|
|
|
|
|
29636
|
|
|
42565
|
|
|
|
|
35175
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
|
0
|
|
|
|
|
0
|
|
44
|
|
|
|
|
|
|
$@ and confess $@; |
45
|
|
|
|
|
|
|
} |
46
|
|
|
|
|
|
|
|
47
|
|
|
|
|
|
|
#1 Methods |
48
|
|
|
|
|
|
|
sub new(*) # Create a new binary heap array. A string of flags enables optimizations to the base version, which uses the minimum amount of memory at all times, to use more memory to obtain shorter run times, These flags are: 'i' - retain memory for subsequent reuse rather than freeing it as soon as possible; 'p' - add two fields to each array to optimize shift/unshift operations; 's' - add a field to each array to cache the size of the array; 'w' - add a field each array to cache the current width of the array of subarrays. |
49
|
4785
|
|
|
4785
|
1
|
7689
|
{my ($flags) = @_; # Optimization flags ipsw in any order surrounding quotes are not necessary |
50
|
4785
|
|
|
|
|
7345
|
my $f = $flags; |
51
|
4785
|
|
|
|
|
6469
|
my $name = 'Binary::Heap::Array::'; |
52
|
4785
|
|
|
|
|
11308
|
for(@speedChars) # Generate package name matching requested optimisations |
53
|
19140
|
100
|
|
|
|
112072
|
{if ($f =~ m/$_/i) |
54
|
9572
|
|
|
|
|
38824
|
{ $f =~ s/$_//gi; |
55
|
9572
|
|
|
|
|
17757
|
$name .= uc($_); |
56
|
|
|
|
|
|
|
} |
57
|
|
|
|
|
|
|
else |
58
|
9568
|
|
|
|
|
15471
|
{$name .= lc($_); |
59
|
|
|
|
|
|
|
} |
60
|
|
|
|
|
|
|
} |
61
|
4785
|
50
|
|
|
|
16645
|
$f =~ /\A\s*\Z/ or confess "Invalid flags '$f' in '$flags'"; # Check flags syntax |
62
|
|
|
|
|
|
|
|
63
|
4785
|
|
|
|
|
92693
|
return bless [], $name; # Bless into appropriately optimized package |
64
|
|
|
|
|
|
|
} # new |
65
|
|
|
|
|
|
|
|
66
|
16
|
|
|
16
|
0
|
20
|
sub code {<<'END'} # Code to be optimised |
67
|
|
|
|
|
|
|
sub speedInUse{(speedNo>>0)%2} ## Use a vec() in each array to mark which sub arrays can be reused rather than being freed immediately |
68
|
|
|
|
|
|
|
sub speedPp {(speedNo>>1)%2} ## Use pre/post to skip over elements at the start/end at the cost of two additional fields per array |
69
|
|
|
|
|
|
|
sub speedSize {(speedNo>>2)%2} ## Cache the current size of the array at the cost of an additional field per array |
70
|
|
|
|
|
|
|
sub speedWidth{(speedNo>>3)%2} ## Cache the current width of the array at the cost of an additional field per array |
71
|
|
|
|
|
|
|
|
72
|
|
|
|
|
|
|
sub subarray ## An array, always a power of 2 wide, containing sub arrays which contain the caller's data or slots which are empty, each of the sub arrays is a power of 2 wide which depends on its position in the array of sub arrays so that all of these arrays make good use of memory provided via a buddy memory allocation system to construct the binary heap array |
73
|
|
|
|
|
|
|
{my ($array) = @_; |
74
|
|
|
|
|
|
|
no overloading; |
75
|
|
|
|
|
|
|
$array->[0] //= [] # Field 1 |
76
|
|
|
|
|
|
|
} |
77
|
|
|
|
|
|
|
sub speed :lvalue ## Algorithm to use |
78
|
|
|
|
|
|
|
{my ($array) = @_; |
79
|
|
|
|
|
|
|
no overloading; |
80
|
|
|
|
|
|
|
$array->[1] //= (my $v = 0) # Field 2 |
81
|
|
|
|
|
|
|
} |
82
|
|
|
|
|
|
|
sub inUse :lvalue ## A vec() of bits, the same width as subarray where each bit tells us whether the corresponding sub array is in use or not. |
83
|
|
|
|
|
|
|
{my ($array) = @_; |
84
|
|
|
|
|
|
|
no overloading; |
85
|
|
|
|
|
|
|
confess unless speedInUse; |
86
|
|
|
|
|
|
|
$array->[2] //= (my $v = '') # Field 3 |
87
|
|
|
|
|
|
|
} |
88
|
|
|
|
|
|
|
sub pre :lvalue ## The number of entries to ignore at the beginning to assist with shift/unshift |
89
|
|
|
|
|
|
|
{my ($array) = @_; |
90
|
|
|
|
|
|
|
no overloading; |
91
|
|
|
|
|
|
|
confess unless speedPp; |
92
|
|
|
|
|
|
|
$array->[3] //= (my $v = 0) # Field 4 |
93
|
|
|
|
|
|
|
} |
94
|
|
|
|
|
|
|
sub post :lvalue ## The number of entries to ignore at the end to assist with pop/push |
95
|
|
|
|
|
|
|
{my ($array) = @_; |
96
|
|
|
|
|
|
|
no overloading; |
97
|
|
|
|
|
|
|
confess unless speedPp; |
98
|
|
|
|
|
|
|
$array->[4] //= (my $v = 0) # Field 5 |
99
|
|
|
|
|
|
|
} |
100
|
|
|
|
|
|
|
sub currentSize :lvalue ## The current size of the array |
101
|
|
|
|
|
|
|
{my ($array) = @_; |
102
|
|
|
|
|
|
|
no overloading; |
103
|
|
|
|
|
|
|
confess unless speedSize; |
104
|
|
|
|
|
|
|
$array->[5] //= (my $v = 0) # Field 6 |
105
|
|
|
|
|
|
|
} |
106
|
|
|
|
|
|
|
sub currentWidth :lvalue ## The current width of the array |
107
|
|
|
|
|
|
|
{my ($array) = @_; |
108
|
|
|
|
|
|
|
no overloading; |
109
|
|
|
|
|
|
|
confess unless speedWidth; |
110
|
|
|
|
|
|
|
$array->[6] //= (my $v = 0) # Field 7 |
111
|
|
|
|
|
|
|
} |
112
|
|
|
|
|
|
|
|
113
|
|
|
|
|
|
|
sub at($$) :lvalue # Address the element at a specified index so that it can get set or got |
114
|
|
|
|
|
|
|
{my ($array, $index) = @_; # Array, index of element |
115
|
|
|
|
|
|
|
my $n = size($array); # Array size |
116
|
|
|
|
|
|
|
return undef if $index < -$n or $index >= $n; # Index out of range |
117
|
|
|
|
|
|
|
return &atUp(@_) if $index >= 0; |
118
|
|
|
|
|
|
|
&atDown(@_) |
119
|
|
|
|
|
|
|
} # at # It would be nice to use overload @{} here but this requires flattening the array which would be very expensive on large arrays |
120
|
|
|
|
|
|
|
|
121
|
|
|
|
|
|
|
sub inUseVector ($) :lvalue ## Sub arrays in use |
122
|
|
|
|
|
|
|
{my ($array) = @_; |
123
|
|
|
|
|
|
|
return inUse($array) if speedInUse; |
124
|
|
|
|
|
|
|
my $v = ''; |
125
|
|
|
|
|
|
|
my @a = @{subarray($array)}; |
126
|
|
|
|
|
|
|
vec($v, $_, 1) = !!$a[$_] for 0..$#a; |
127
|
|
|
|
|
|
|
$v |
128
|
|
|
|
|
|
|
} |
129
|
|
|
|
|
|
|
|
130
|
|
|
|
|
|
|
sub pop($) # Pop the topmost element from the leading full array and spread the remainder of its contents as sub arrays of the correct size for each preceding empty slot |
131
|
|
|
|
|
|
|
{my ($array) = @_; # Array from which an element is to be popped |
132
|
|
|
|
|
|
|
my $N = size($array); # Size of array |
133
|
|
|
|
|
|
|
return undef unless $N; # Cannot pop from an empty array |
134
|
|
|
|
|
|
|
|
135
|
|
|
|
|
|
|
if (speedPp) # Fast with pre and post |
136
|
|
|
|
|
|
|
{my $element = at($array, -1); |
137
|
|
|
|
|
|
|
post($array)++; |
138
|
|
|
|
|
|
|
currentSize($array)-- if speedSize; # Decrease cached size of array if possible - has to be done late to avoid confusion over at |
139
|
|
|
|
|
|
|
return $element; |
140
|
|
|
|
|
|
|
} |
141
|
|
|
|
|
|
|
else |
142
|
|
|
|
|
|
|
{currentSize($array)-- if speedSize; # Decrease cached size of array if possible - has to be done late to avoid confusion over at |
143
|
|
|
|
|
|
|
my $S = subarray($array); # Sub array list for this array |
144
|
|
|
|
|
|
|
my $v = inUseVector($array); # Sub arrays in use |
145
|
|
|
|
|
|
|
|
146
|
|
|
|
|
|
|
for my $i(keys @$S) # Index to each sub array |
147
|
|
|
|
|
|
|
{my $s = $S->[$i]; # Sub array |
148
|
|
|
|
|
|
|
if (vec($v, $i, 1)) # Full sub array |
149
|
|
|
|
|
|
|
{my $pop = CORE::pop @$s; # Pop an element off the first full sub array |
150
|
|
|
|
|
|
|
for my $I(0..$i-1) # Distribute the remaining elements of this sub array so that each sub array is always a power of two wide which depends on teh position of the sub array in the array of sub arrays |
151
|
|
|
|
|
|
|
{my $j = 1<<$I; |
152
|
|
|
|
|
|
|
splice @{$S->[$I]}, 0, $j, splice @$s, -$j, $j; # Copy block across |
153
|
|
|
|
|
|
|
vec(inUse($array), $I, 1) = 1 if speedInUse; # Mark this sub array as in use |
154
|
|
|
|
|
|
|
} |
155
|
|
|
|
|
|
|
if ($N == 1) # We are popping the last element in a binary heap array |
156
|
|
|
|
|
|
|
{$#{subarray($array)} = -1; # Remove all sub arrays |
157
|
|
|
|
|
|
|
inUse($array) = '' if speedInUse; # Mark all sub arrays as not in use and shorten the vec() string at the same time |
158
|
|
|
|
|
|
|
currentWidth($array) = 0 if speedWidth; # New width of array of sub arrays |
159
|
|
|
|
|
|
|
@$S = (); # Empty the array of sub arrays |
160
|
|
|
|
|
|
|
} |
161
|
|
|
|
|
|
|
else # Pop an element that is not the last element in a binary heap array |
162
|
|
|
|
|
|
|
{if (speedInUse) |
163
|
|
|
|
|
|
|
{vec(inUse($array), $i, 1) = 0; # Mark sub array as not in use |
164
|
|
|
|
|
|
|
} |
165
|
|
|
|
|
|
|
else |
166
|
|
|
|
|
|
|
{$S->[$i] = undef; # Free sub array as it is no longer in use |
167
|
|
|
|
|
|
|
} |
168
|
|
|
|
|
|
|
my $W = width($array); # Get current width |
169
|
|
|
|
|
|
|
my $w = containingPowerOfTwo($W); # Current width is contained by this power of two |
170
|
|
|
|
|
|
|
inUse($array) = substr(inUse($array), 0, 1<<($w-3)) if speedInUse; # Keep vec() string length in bounds - the 3 is because there 2**3 bits in a byte as used by vec() |
171
|
|
|
|
|
|
|
splice @$S, 1<<$w if @$S > 1<<$w; # Shorten the array of sub arrays while leaving some room for a return to growth |
172
|
|
|
|
|
|
|
$S->[$_] = undef for $W..(1<<$w)-1; # Remove outer inactive arrays but keep inner inactive arrays to reduce the allocation rate - the whole point of the inUse array |
173
|
|
|
|
|
|
|
currentWidth($array) = $w+1 # New width of array of sub arrays |
174
|
|
|
|
|
|
|
if speedWidth and currentWidth($array) <= $w; |
175
|
|
|
|
|
|
|
} |
176
|
|
|
|
|
|
|
return $pop # Return popped element |
177
|
|
|
|
|
|
|
} |
178
|
|
|
|
|
|
|
} # for each subarray |
179
|
|
|
|
|
|
|
} |
180
|
|
|
|
|
|
|
confess "This should not happen" # We have already checked that there is at least one element on the array and so an element can be popped so we should not arrive here |
181
|
|
|
|
|
|
|
} # pop |
182
|
|
|
|
|
|
|
|
183
|
|
|
|
|
|
|
sub push($$) # Push a new element on to the top of the array by accumulating the leading full sub arrays in the first empty slot or create a new slot if none already available |
184
|
|
|
|
|
|
|
{my ($array, $element) = @_; # Array, element to push |
185
|
|
|
|
|
|
|
currentSize($array)++ if speedSize; # Increase cached size of array if possible |
186
|
|
|
|
|
|
|
|
187
|
|
|
|
|
|
|
if (speedPp and my $p = post($array)) # Allow for post |
188
|
|
|
|
|
|
|
{if (size($array)) # Quick push |
189
|
|
|
|
|
|
|
{post($array)--; |
190
|
|
|
|
|
|
|
at($array, -1) = $element; |
191
|
|
|
|
|
|
|
} |
192
|
|
|
|
|
|
|
else # Push first element |
193
|
|
|
|
|
|
|
{post($array) = pre($array) = 0; @{subarray($array)} = (); |
194
|
|
|
|
|
|
|
inUse($array) = '' if speedInUse; |
195
|
|
|
|
|
|
|
$array->push($element); |
196
|
|
|
|
|
|
|
} |
197
|
|
|
|
|
|
|
} |
198
|
|
|
|
|
|
|
else # No pops we can replace |
199
|
|
|
|
|
|
|
{my $S = subarray($array); # Sub array list |
200
|
|
|
|
|
|
|
my $v = inUseVector($array); # Sub arrays in use |
201
|
|
|
|
|
|
|
if (defined (my $z = firstEmptySubArray($array))) # First empty sub array will be the target used to hold the results of the push |
202
|
|
|
|
|
|
|
{$S->[$z] = (); # Empty target array |
203
|
|
|
|
|
|
|
for my $i(reverse 0..$z-1) # Index to each sub array preceding the target array |
204
|
|
|
|
|
|
|
{my $s = $S->[$i]; # Sub array |
205
|
|
|
|
|
|
|
if (vec($v, $i, 1)) # Sub array in use |
206
|
|
|
|
|
|
|
{CORE::push @{$S->[$z]}, @$s; # Push in use sub array |
207
|
|
|
|
|
|
|
if (speedInUse) |
208
|
|
|
|
|
|
|
{vec(inUse($array), $i, 1) = 0; # Mark this array as no longer in use |
209
|
|
|
|
|
|
|
} |
210
|
|
|
|
|
|
|
else |
211
|
|
|
|
|
|
|
{$S->[$i] = undef; # Free this array as is is no longer in use |
212
|
|
|
|
|
|
|
} |
213
|
|
|
|
|
|
|
} |
214
|
|
|
|
|
|
|
} |
215
|
|
|
|
|
|
|
CORE::push @{$S->[$z]}, $element; # Save element on target array |
216
|
|
|
|
|
|
|
vec(inUse($array), $z, 1) = 1 if speedInUse; # Mark target array as in use |
217
|
|
|
|
|
|
|
currentWidth($array) = $z+1 if speedWidth and currentWidth($array) <= $z; # Cache new width if possible and greater |
218
|
|
|
|
|
|
|
} |
219
|
|
|
|
|
|
|
else # All the current sub arrays are in use |
220
|
|
|
|
|
|
|
{my $w = width($array); # Current width of array of sub arrays |
221
|
|
|
|
|
|
|
my $W = 1<
|
222
|
|
|
|
|
|
|
my $a = $S->[$w] = []; # Create new target sub array |
223
|
|
|
|
|
|
|
CORE::push @$a, vec($v, $_, 1) ? @{$S->[$_]} : () for reverse 0..$w-1; # Push all sub arrays onto target |
224
|
|
|
|
|
|
|
CORE::push @$a, $element; # Push element onto target |
225
|
|
|
|
|
|
|
if (speedInUse) |
226
|
|
|
|
|
|
|
{vec(inUse($array), $_, 1) = 0 for 0..$w-1; # All original sub arrays are no longer in use |
227
|
|
|
|
|
|
|
vec(inUse($array), $w, 1) = 1; # Newly built target sub array is in use |
228
|
|
|
|
|
|
|
} |
229
|
|
|
|
|
|
|
else |
230
|
|
|
|
|
|
|
{$S->[$_] = undef for 0..$w-1; # All original sub arrays are no longer in use |
231
|
|
|
|
|
|
|
} |
232
|
|
|
|
|
|
|
currentWidth($array) = $w+1 if speedWidth and currentWidth($array) <= $w; # Cache new width if possible and greater |
233
|
|
|
|
|
|
|
$S->[$_] = undef for $w+1..$W-1; # Pad out array of subs arrays so it is a power of two wide |
234
|
|
|
|
|
|
|
} |
235
|
|
|
|
|
|
|
} |
236
|
|
|
|
|
|
|
$array |
237
|
|
|
|
|
|
|
} # push |
238
|
|
|
|
|
|
|
|
239
|
|
|
|
|
|
|
sub size($) # Find the number of elements in the binary heap array |
240
|
|
|
|
|
|
|
{my ($array) = @_; # Array |
241
|
|
|
|
|
|
|
return currentSize($array) if speedSize; # Use cached size if possible |
242
|
|
|
|
|
|
|
my $n = 0; # Element count, width of current sub array |
243
|
|
|
|
|
|
|
my $s = subarray($array); # Array of sub arrays |
244
|
|
|
|
|
|
|
if ($s and @$s) # Sub array |
245
|
|
|
|
|
|
|
{my $v = inUseVector($array); # Sub arrays in use |
246
|
|
|
|
|
|
|
my $p = 1; # Width of current sub array |
247
|
|
|
|
|
|
|
for(0..$#$s) # Each sub array |
248
|
|
|
|
|
|
|
{$n += $p if vec($v, $_, 1); # Add number of elements in this sub array if there are any |
249
|
|
|
|
|
|
|
$p += $p; # Width of next sub array |
250
|
|
|
|
|
|
|
} |
251
|
|
|
|
|
|
|
} |
252
|
|
|
|
|
|
|
if (speedPp) |
253
|
|
|
|
|
|
|
{my $p = pre($array); # Allow for pre and post |
254
|
|
|
|
|
|
|
my $q = post($array); |
255
|
|
|
|
|
|
|
return $n - $p - $q # Count of elements found with modifications from pre and post |
256
|
|
|
|
|
|
|
} |
257
|
|
|
|
|
|
|
$n # Count of elements found |
258
|
|
|
|
|
|
|
} # size |
259
|
|
|
|
|
|
|
|
260
|
|
|
|
|
|
|
sub shift($) # Remove and return the current first element of the array |
261
|
|
|
|
|
|
|
{my ($array) = @_; # Array |
262
|
|
|
|
|
|
|
my $n = size($array); # Size of array |
263
|
|
|
|
|
|
|
return undef unless $n; # Use cached size if possible |
264
|
|
|
|
|
|
|
my $element = at($array, 0); # Check that there is a first element |
265
|
|
|
|
|
|
|
if (speedPp) |
266
|
|
|
|
|
|
|
{pre($array)++; # Skip over the first element |
267
|
|
|
|
|
|
|
currentSize($array)-- if speedSize; # Decrease cached size of array if possible |
268
|
|
|
|
|
|
|
} |
269
|
|
|
|
|
|
|
else # Pop all elements and then push then on again one level down |
270
|
|
|
|
|
|
|
{my @a; # save area for array |
271
|
|
|
|
|
|
|
CORE::unshift @a, $array->pop for 0..$n-1; # Undo the existing array |
272
|
|
|
|
|
|
|
shift @a; # Remove the shifted element |
273
|
|
|
|
|
|
|
$array->push($_) for @a; # Restore each element one place down |
274
|
|
|
|
|
|
|
} |
275
|
|
|
|
|
|
|
$element # Return successfully removed element |
276
|
|
|
|
|
|
|
} # shift |
277
|
|
|
|
|
|
|
|
278
|
|
|
|
|
|
|
sub unshift($$) # Insert an element at the start of the array |
279
|
|
|
|
|
|
|
{my ($array, $element) = @_; # Array, element to be inserted |
280
|
|
|
|
|
|
|
|
281
|
|
|
|
|
|
|
if (speedPp and pre($array)) |
282
|
|
|
|
|
|
|
{pre($array)--; # Skip over the existing preceding element |
283
|
|
|
|
|
|
|
currentSize($array)++ if speedSize; # Increase cached size of array if possible |
284
|
|
|
|
|
|
|
at($array, 0) = $element; # Insert new element |
285
|
|
|
|
|
|
|
} |
286
|
|
|
|
|
|
|
elsif (speedPp) # Add a new sub array |
287
|
|
|
|
|
|
|
{my $w = width($array); |
288
|
|
|
|
|
|
|
if (speedInUse) |
289
|
|
|
|
|
|
|
{vec(inUse($array), $w, 1) = 1; |
290
|
|
|
|
|
|
|
vec(inUse($array), $_, 1) = 0 for $w+1..$w+$w-1; |
291
|
|
|
|
|
|
|
} |
292
|
|
|
|
|
|
|
currentWidth($array) = $w+1 if speedWidth and currentWidth($array) <= $w; # Cache new width if possible and greater |
293
|
|
|
|
|
|
|
subarray($array)->[$w][pre($array) = (1<<$w)-1] = $element; # Insert element |
294
|
|
|
|
|
|
|
currentSize($array)++ if speedSize; # Increase cached size of array if possible |
295
|
|
|
|
|
|
|
} |
296
|
|
|
|
|
|
|
else # Pop all elements and then push then on again one level down |
297
|
|
|
|
|
|
|
{my @a; # Save area for array |
298
|
|
|
|
|
|
|
CORE::unshift @a, $array->pop for 0..size($array)-1; # Undo the existing array |
299
|
|
|
|
|
|
|
$array->push($_) for $element, @a; # Place new element followed by existing elements |
300
|
|
|
|
|
|
|
} |
301
|
|
|
|
|
|
|
$array # Return array so we can chain operations |
302
|
|
|
|
|
|
|
} # unshift |
303
|
|
|
|
|
|
|
|
304
|
|
|
|
|
|
|
sub width($) ## Current width of array of sub arrays where the sub arrays hold data in use |
305
|
|
|
|
|
|
|
{my ($array) = @_; # Array |
306
|
|
|
|
|
|
|
return currentWidth($array) if speedWidth; # Use cached width if possible |
307
|
|
|
|
|
|
|
my $w = -1; # Width |
308
|
|
|
|
|
|
|
my $s = subarray($array); # Array of sub arrays |
309
|
|
|
|
|
|
|
my $v = inUseVector($array); # Sub arrays in use |
310
|
|
|
|
|
|
|
for(keys @$s) {$w = $_ if vec($v, $_, 1)} |
311
|
|
|
|
|
|
|
$w + 1 # Count of elements found |
312
|
|
|
|
|
|
|
} # width |
313
|
|
|
|
|
|
|
|
314
|
|
|
|
|
|
|
sub firstEmptySubArray($) ## First unused sub array |
315
|
|
|
|
|
|
|
{my ($array) = @_; # Array |
316
|
|
|
|
|
|
|
my $w = width($array); # Width of array of sub arrays |
317
|
|
|
|
|
|
|
my $v = inUseVector($array); # Sub arrays in use |
318
|
|
|
|
|
|
|
for(0..$w-1) # Each sub array |
319
|
|
|
|
|
|
|
{return $_ unless vec($v, $_, 1); # First sub array not in use |
320
|
|
|
|
|
|
|
} |
321
|
|
|
|
|
|
|
undef # All sub arrays are in use |
322
|
|
|
|
|
|
|
} # firstEmptySubArray |
323
|
|
|
|
|
|
|
|
324
|
|
|
|
|
|
|
sub atUp($$) :lvalue ## Get the element at a specified positive index by going up through the array of sub arrays |
325
|
|
|
|
|
|
|
{my ($array, $index) = @_; # Array, index of element |
326
|
|
|
|
|
|
|
$index += pre($array) if speedPp; # Allow for pre and post |
327
|
|
|
|
|
|
|
my $S = subarray($array); # Sub array list |
328
|
|
|
|
|
|
|
my $v = inUseVector($array); # Sub arrays in use |
329
|
|
|
|
|
|
|
for my $i(reverse 0..$#$S) # Start with the widest sub array |
330
|
|
|
|
|
|
|
{my $width = 1 << $i; # Width of array at this position in the array of sub arrays |
331
|
|
|
|
|
|
|
next unless vec($v, $i, 1); |
332
|
|
|
|
|
|
|
my $s = $S->[$i]; # Sub array at this position |
333
|
|
|
|
|
|
|
return $s->[$index] if $index < $width; # Get the indexed element from this sub array if possible |
334
|
|
|
|
|
|
|
$index -= $width; # Reduce the index by the size of this array and move onto the next sub array |
335
|
|
|
|
|
|
|
} |
336
|
|
|
|
|
|
|
undef |
337
|
|
|
|
|
|
|
} # atUp |
338
|
|
|
|
|
|
|
|
339
|
|
|
|
|
|
|
sub atDown($$) :lvalue ## Get the element at a specified negative index by going down through the array of sub arrays |
340
|
|
|
|
|
|
|
{my ($array, $index) = @_; # Array, index of element |
341
|
|
|
|
|
|
|
$index -= post($array) if speedPp; # Allow for pre and post |
342
|
|
|
|
|
|
|
my $S = subarray($array); # Sub array list |
343
|
|
|
|
|
|
|
my $v = inUseVector($array); # Sub arrays in use |
344
|
|
|
|
|
|
|
for my $i(0..$#$S) # Start with the narrowest sub array |
345
|
|
|
|
|
|
|
{my $width = 1 << $i; # Width of array at this position in the array of sub arrays |
346
|
|
|
|
|
|
|
next unless vec($v, $i, 1); |
347
|
|
|
|
|
|
|
my $s = $S->[$i]; # Sub array at this position |
348
|
|
|
|
|
|
|
return $s->[$index] if -$index <= $width; # Get the indexed element from this sub array if possible |
349
|
|
|
|
|
|
|
$index += $width; # Reduce the index by the size of this array and move onto the next sub array |
350
|
|
|
|
|
|
|
} |
351
|
|
|
|
|
|
|
undef |
352
|
|
|
|
|
|
|
} # atDown |
353
|
|
|
|
|
|
|
|
354
|
|
|
|
|
|
|
use overload # Operator overloading |
355
|
|
|
|
|
|
|
'@{}'=>\&convertToArray, # So we can process with a for loop |
356
|
|
|
|
|
|
|
'""' =>\&convertToString, # So we can convert to string |
357
|
|
|
|
|
|
|
'eq' =>\= # Check whether two arrays are equal |
358
|
|
|
|
|
|
|
|
359
|
|
|
|
|
|
|
sub convertToArray($) ## Convert to normal perl array so we can use it in a for loop |
360
|
|
|
|
|
|
|
{my ($array) = @_; # Array to convert |
361
|
|
|
|
|
|
|
my $w = width($array); # Width of array of sub arrays |
362
|
|
|
|
|
|
|
my $v = inUseVector($array); # Sub arrays in use |
363
|
|
|
|
|
|
|
my @a; |
364
|
|
|
|
|
|
|
for(reverse 0..$w-1) # Each sub array |
365
|
|
|
|
|
|
|
{next unless vec($v, $_, 1); |
366
|
|
|
|
|
|
|
my $a = subarray($array)->[$_]; |
367
|
|
|
|
|
|
|
CORE::push @a, @{subarray($array)->[$_]}; |
368
|
|
|
|
|
|
|
} |
369
|
|
|
|
|
|
|
if (speedPp) # Allow for pre and post |
370
|
|
|
|
|
|
|
{my $p = pre($array); |
371
|
|
|
|
|
|
|
my $q = post($array); |
372
|
|
|
|
|
|
|
splice @a, 0, $p if $p; |
373
|
|
|
|
|
|
|
splice @a, -$q, $q if $q; |
374
|
|
|
|
|
|
|
} |
375
|
|
|
|
|
|
|
[@a] |
376
|
|
|
|
|
|
|
} |
377
|
|
|
|
|
|
|
|
378
|
|
|
|
|
|
|
sub unpackVector($) # Unpack the in use vector |
379
|
|
|
|
|
|
|
{my ($array) = @_; |
380
|
|
|
|
|
|
|
my $v = inUseVector($array); |
381
|
|
|
|
|
|
|
$v ? unpack("b*", $v) : '' |
382
|
|
|
|
|
|
|
} |
383
|
|
|
|
|
|
|
|
384
|
|
|
|
|
|
|
sub convertToString($) ## Convert to string |
385
|
|
|
|
|
|
|
{my ($array) = @_; # Array to convert |
386
|
|
|
|
|
|
|
|
387
|
|
|
|
|
|
|
my $e = sub |
388
|
|
|
|
|
|
|
{my $a = subarray($array); |
389
|
|
|
|
|
|
|
return '' unless $a and @$a; |
390
|
|
|
|
|
|
|
'subarrays='.nws(dump($a)) |
391
|
|
|
|
|
|
|
}->(); |
392
|
|
|
|
|
|
|
|
393
|
|
|
|
|
|
|
my $i = sub # Array has inUse vector |
394
|
|
|
|
|
|
|
{return "inUse=".unpackVector($array).', ' if speedInUse && width($array); |
395
|
|
|
|
|
|
|
'' |
396
|
|
|
|
|
|
|
}->(); |
397
|
|
|
|
|
|
|
|
398
|
|
|
|
|
|
|
my $p = speedPp ? sub # Array has pre/post |
399
|
|
|
|
|
|
|
{my $s = ''; |
400
|
|
|
|
|
|
|
my $p = pre($array); $s .= "pre=$p, " if $p; |
401
|
|
|
|
|
|
|
my $q = post($array); $s .= "post=$q, " if $q; |
402
|
|
|
|
|
|
|
$s |
403
|
|
|
|
|
|
|
}->() : ''; |
404
|
|
|
|
|
|
|
|
405
|
|
|
|
|
|
|
my $s = sub # Size of array |
406
|
|
|
|
|
|
|
{my $s = size($array); |
407
|
|
|
|
|
|
|
return "size=$s, " if $s; |
408
|
|
|
|
|
|
|
''; |
409
|
|
|
|
|
|
|
}->(); |
410
|
|
|
|
|
|
|
|
411
|
|
|
|
|
|
|
my $w = sub # Width of array of sub arrays |
412
|
|
|
|
|
|
|
{my $w = width($array); |
413
|
|
|
|
|
|
|
return "width=$w, " if $w; |
414
|
|
|
|
|
|
|
''; |
415
|
|
|
|
|
|
|
}->(); |
416
|
|
|
|
|
|
|
|
417
|
|
|
|
|
|
|
__PACKAGE__."($s$w$p$i$e)" # String representation of array |
418
|
|
|
|
|
|
|
} |
419
|
|
|
|
|
|
|
|
420
|
|
|
|
|
|
|
sub equals($$) ## Equals check whether two arrays are equal |
421
|
|
|
|
|
|
|
{my ($A, $B) = @_; # Arrays to check |
422
|
|
|
|
|
|
|
my $nA = $A->size; |
423
|
|
|
|
|
|
|
my $nB = $B->size; |
424
|
|
|
|
|
|
|
return 0 unless $nA == $nB; # Different sized arrays cannot be equal |
425
|
|
|
|
|
|
|
for(0..$nA-1) # Check each element |
426
|
|
|
|
|
|
|
{return 0 unless $A->at($_) eq $B->at($_); |
427
|
|
|
|
|
|
|
} |
428
|
|
|
|
|
|
|
1 |
429
|
|
|
|
|
|
|
} |
430
|
|
|
|
|
|
|
END |
431
|
|
|
|
|
|
|
# Test |
432
|
1
|
100
|
66
|
1
|
0
|
533
|
sub test{eval join('', ) or die $@} # Tests |
|
1
|
100
|
100
|
256
|
0
|
11469
|
|
|
1
|
100
|
50
|
12560
|
0
|
7
|
|
|
256
|
100
|
|
16960
|
0
|
70022
|
|
|
256
|
50
|
|
4784
|
0
|
441
|
|
|
256
|
100
|
|
16
|
0
|
4429
|
|
|
256
|
50
|
|
16
|
0
|
92565
|
|
|
256
|
50
|
|
1
|
|
76909
|
|
|
256
|
|
|
|
|
80400
|
|
|
12560
|
|
|
|
|
14709
|
|
|
12560
|
|
|
|
|
213882
|
|
|
12560
|
|
|
|
|
56661
|
|
|
12464
|
|
|
|
|
32211
|
|
|
12464
|
|
|
|
|
345444
|
|
|
112700
|
|
|
|
|
1609625
|
|
|
65928
|
|
|
|
|
99725
|
|
|
16960
|
|
|
|
|
34830
|
|
|
4784
|
|
|
|
|
13111
|
|
|
4784
|
|
|
|
|
13119
|
|
|
4784
|
|
|
|
|
89758
|
|
|
4784
|
|
|
|
|
10979
|
|
|
4784
|
|
|
|
|
76655
|
|
|
16
|
|
|
|
|
26
|
|
|
16
|
|
|
|
|
37
|
|
|
16
|
|
|
|
|
332
|
|
|
3632
|
|
|
|
|
134939
|
|
|
3632
|
|
|
|
|
1006682
|
|
|
3632
|
|
|
|
|
922488
|
|
|
16
|
|
|
|
|
598
|
|
|
16
|
|
|
|
|
4132
|
|
|
16
|
|
|
|
|
30
|
|
|
16
|
|
|
|
|
28
|
|
|
16
|
|
|
|
|
51
|
|
|
4112
|
|
|
|
|
101519
|
|
|
4112
|
|
|
|
|
1786901
|
|
|
4112
|
|
|
|
|
1217022
|
|
|
16
|
|
|
|
|
288
|
|
|
16
|
|
|
|
|
4801
|
|
|
1
|
|
|
|
|
180
|
|
433
|
|
|
|
|
|
|
|
434
|
|
|
|
|
|
|
test unless caller; |
435
|
|
|
|
|
|
|
|
436
|
|
|
|
|
|
|
# Documentation |
437
|
|
|
|
|
|
|
#extractDocumentation() unless caller; # Extract the documentation |
438
|
|
|
|
|
|
|
|
439
|
|
|
|
|
|
|
1; |
440
|
|
|
|
|
|
|
|
441
|
|
|
|
|
|
|
=encoding utf-8 |
442
|
|
|
|
|
|
|
|
443
|
|
|
|
|
|
|
=head1 Name |
444
|
|
|
|
|
|
|
|
445
|
|
|
|
|
|
|
Binary::Heap::Array - Extensible array each of whose component arrays is an |
446
|
|
|
|
|
|
|
integral power of two wide. |
447
|
|
|
|
|
|
|
|
448
|
|
|
|
|
|
|
=head1 Synopsis |
449
|
|
|
|
|
|
|
|
450
|
|
|
|
|
|
|
my $a = Binary::Heap::Array::new(ipsw); |
451
|
|
|
|
|
|
|
|
452
|
|
|
|
|
|
|
$a->push(1)->push(2); |
453
|
|
|
|
|
|
|
ok $a->size == 2; |
454
|
|
|
|
|
|
|
ok $a->at( 0) == 1; |
455
|
|
|
|
|
|
|
ok $a->at( 1) == 2; |
456
|
|
|
|
|
|
|
ok $a->at(-1) == 2; |
457
|
|
|
|
|
|
|
ok $a->at(-2) == 1; |
458
|
|
|
|
|
|
|
$a->at( 0) = 2; |
459
|
|
|
|
|
|
|
ok $a->at(-2) == 2; |
460
|
|
|
|
|
|
|
ok $a->pop == 2; |
461
|
|
|
|
|
|
|
ok $a->size == 1; |
462
|
|
|
|
|
|
|
ok $a->shift == 2; |
463
|
|
|
|
|
|
|
ok $a->size == 0; |
464
|
|
|
|
|
|
|
$a->unshift(3); |
465
|
|
|
|
|
|
|
ok $a->size == 1; |
466
|
|
|
|
|
|
|
$a->unshift(2); |
467
|
|
|
|
|
|
|
ok $a->size == 2; |
468
|
|
|
|
|
|
|
$a->unshift(1); |
469
|
|
|
|
|
|
|
ok $a->size == 3; |
470
|
|
|
|
|
|
|
|
471
|
|
|
|
|
|
|
=head1 Methods |
472
|
|
|
|
|
|
|
|
473
|
|
|
|
|
|
|
=head2 new($flags) |
474
|
|
|
|
|
|
|
|
475
|
|
|
|
|
|
|
sub new(*) # Create a new binary heap array. A string of flags enables optimizations to the base version, which uses the minimum amount of memory at all times, to use more memory to obtain shorter run times, These flags are: 'i' - retain memory for subsequent reuse rather than freeing it as soon as possible; 'p' - add two fields to each array to optimize shift/unshift operations; 's' - add a field to each array to cache the size of the array; 'w' - add a field each array to cache the current width of the array of subarrays. |
476
|
|
|
|
|
|
|
|
477
|
|
|
|
|
|
|
Parameter Description |
478
|
|
|
|
|
|
|
1 $flags Optimization flags ipsw in any order surrounding quotes are not necessary |
479
|
|
|
|
|
|
|
|
480
|
|
|
|
|
|
|
=head2 at :lvalue($array, $index) |
481
|
|
|
|
|
|
|
|
482
|
|
|
|
|
|
|
Address the element at a specified index so that it can get set or got |
483
|
|
|
|
|
|
|
|
484
|
|
|
|
|
|
|
Parameter Description |
485
|
|
|
|
|
|
|
1 $array Array |
486
|
|
|
|
|
|
|
2 $index index of element |
487
|
|
|
|
|
|
|
|
488
|
|
|
|
|
|
|
=head2 pop($array) |
489
|
|
|
|
|
|
|
|
490
|
|
|
|
|
|
|
Pop the topmost element from the leading full array and spread the remainder of its contents as sub arrays of the correct size for each preceding empty slot |
491
|
|
|
|
|
|
|
|
492
|
|
|
|
|
|
|
Parameter Description |
493
|
|
|
|
|
|
|
1 $array Array from which an element is to be popped |
494
|
|
|
|
|
|
|
|
495
|
|
|
|
|
|
|
=head2 push($array, $element) |
496
|
|
|
|
|
|
|
|
497
|
|
|
|
|
|
|
Push a new element on to the top of the array by accumulating the leading full sub arrays in the first empty slot or create a new slot if none already available |
498
|
|
|
|
|
|
|
|
499
|
|
|
|
|
|
|
Parameter Description |
500
|
|
|
|
|
|
|
1 $array Array |
501
|
|
|
|
|
|
|
2 $element element to push |
502
|
|
|
|
|
|
|
|
503
|
|
|
|
|
|
|
=head2 size($array) |
504
|
|
|
|
|
|
|
|
505
|
|
|
|
|
|
|
Find the number of elements in the binary heap array |
506
|
|
|
|
|
|
|
|
507
|
|
|
|
|
|
|
Parameter Description |
508
|
|
|
|
|
|
|
1 $array Array |
509
|
|
|
|
|
|
|
|
510
|
|
|
|
|
|
|
=head2 shift($array) |
511
|
|
|
|
|
|
|
|
512
|
|
|
|
|
|
|
Remove and return the current first element of the array |
513
|
|
|
|
|
|
|
|
514
|
|
|
|
|
|
|
Parameter Description |
515
|
|
|
|
|
|
|
1 $array Array |
516
|
|
|
|
|
|
|
|
517
|
|
|
|
|
|
|
=head2 unshift($array, $element) |
518
|
|
|
|
|
|
|
|
519
|
|
|
|
|
|
|
Insert an element at the start of the array |
520
|
|
|
|
|
|
|
|
521
|
|
|
|
|
|
|
Parameter Description |
522
|
|
|
|
|
|
|
1 $array Array |
523
|
|
|
|
|
|
|
2 $element element to be inserted |
524
|
|
|
|
|
|
|
|
525
|
|
|
|
|
|
|
=head1 Index |
526
|
|
|
|
|
|
|
|
527
|
|
|
|
|
|
|
L |
528
|
|
|
|
|
|
|
L |
529
|
|
|
|
|
|
|
L |
530
|
|
|
|
|
|
|
L |
531
|
|
|
|
|
|
|
L |
532
|
|
|
|
|
|
|
L |
533
|
|
|
|
|
|
|
L |
534
|
|
|
|
|
|
|
|
535
|
|
|
|
|
|
|
=head1 Installation |
536
|
|
|
|
|
|
|
|
537
|
|
|
|
|
|
|
This module is written in 100% Pure Perl in a single file and is thus easy to |
538
|
|
|
|
|
|
|
read, modify and install. |
539
|
|
|
|
|
|
|
|
540
|
|
|
|
|
|
|
Standard Module::Build process for building and installing modules: |
541
|
|
|
|
|
|
|
|
542
|
|
|
|
|
|
|
perl Build.PL |
543
|
|
|
|
|
|
|
./Build |
544
|
|
|
|
|
|
|
./Build test |
545
|
|
|
|
|
|
|
./Build install |
546
|
|
|
|
|
|
|
|
547
|
|
|
|
|
|
|
=head1 See also |
548
|
|
|
|
|
|
|
|
549
|
|
|
|
|
|
|
The arrays used to construct the binary heap array are all an integral power of |
550
|
|
|
|
|
|
|
two wide and thus make good use of the memory allocated by |
551
|
|
|
|
|
|
|
L or similar. |
552
|
|
|
|
|
|
|
|
553
|
|
|
|
|
|
|
=head1 Author |
554
|
|
|
|
|
|
|
|
555
|
|
|
|
|
|
|
philiprbrenan@gmail.com |
556
|
|
|
|
|
|
|
|
557
|
|
|
|
|
|
|
http://www.appaapps.com |
558
|
|
|
|
|
|
|
|
559
|
|
|
|
|
|
|
=head1 Copyright |
560
|
|
|
|
|
|
|
|
561
|
|
|
|
|
|
|
Copyright (c) 2017 Philip R Brenan. |
562
|
|
|
|
|
|
|
|
563
|
|
|
|
|
|
|
This module is free software. It may be used, redistributed and/or modified |
564
|
|
|
|
|
|
|
under the same terms as Perl itself. |
565
|
|
|
|
|
|
|
|
566
|
|
|
|
|
|
|
=cut |
567
|
|
|
|
|
|
|
|
568
|
|
|
|
|
|
|
__DATA__ |