sudoku breaker-php edition
Deducer class:
puzzle.php:
1
<?php
2
class Deducer
3
{
4
private $array;
5
public function __construct($array)
6
{
7
$this->array=array();
8
for($row=0;$row<9;$row++)
9
{
10
for($column=0;$column<9;$column++)
11
{
12
$this->array[$row][$column]=$array[$row][$column];
13
}
14
}
15
}
16
private function isFinished()
17
{
18
for($row=0;$row<9;$row++)
19
{
20
for($column=0;$column<9;$column++)
21
{
22
if($this->array[$row][$column]==0)
23
{
24
return false;
25
}
26
}
27
}
28
return true;
29
}
30
public function deduceAll()
31
{
32
if($this->isFinished())
33
{
34
return;
35
}
36
for($row=0;$row<7;$row=$row+3)
37
{
38
for($column=0;$column<7;$column=$column+3)
39
{
40
if($this->reduceFromOneZone($this->array,$row,$column))
41
{
42
$this->deduceAll();
43
return;
44
}
45
}
46
}
47
for($row=0;$row<9;$row++)
48
{
49
if($this->reduceFromOneRow($this->array,$row))
50
{
51
$this->deduceAll();
52
return;
53
}
54
}
55
for($column=0;$column<9;$column++)
56
{
57
if($this->reduceFromOneColumn($this->array,$column))
58
{
59
$this->deduceAll();
60
return;
61
}
62
}
63
for($row=0;$row<7;$row=$row+3)
64
{
65
if($this->reduceFromThreeRows($this->array,$row,$row+2))
66
{
67
$this->deduceAll();
68
return;
69
}
70
}
71
for($column=0;$column<7;$column=$column+3)
72
{
73
if($this->reduceFromThreeColumns($this->array,$column,$column+2))
74
{
75
$this->deduceAll();
76
return;
77
}
78
}
79
}
80
public function deduceOnce()
81
{
82
for($row=0;$row<7;$row=$row+3)
83
{
84
for($column=0;$column<7;$column=$column+3)
85
{
86
if($this->reduceFromOneZone($this->array,$row,$column))
87
{
88
return;
89
}
90
}
91
}
92
for($row=0;$row<9;$row++)
93
{
94
if($this->reduceFromOneRow($this->array,$row))
95
{
96
return;
97
}
98
}
99
for($column=0;$column<9;$column++)
100
{
101
if($this->reduceFromOneColumn($this->array,$column))
102
{
103
return;
104
}
105
}
106
for($row=0;$row<7;$row=$row+3)
107
{
108
if($this->reduceFromThreeRows($this->array,$row,$row+2))
109
{
110
return;
111
}
112
}
113
for($column=0;$column<7;$column=$column+3)
114
{
115
if($this->reduceFromThreeColumns($this->array,$column,$column+2))
116
{
117
return;
118
}
119
}
120
}
121
private function reduceFromOneZone(&$array,$row,$column)
122
{
123
$startRow=(floor($row/3))*3;
124
$startColumn=(floor($column/3))*3;
125
$unknown=array();
126
for($pointer=0;$pointer<9;$pointer++)
127
{
128
$unknown[$pointer]=$pointer+1;
129
}
130
for($rowPointer=$startRow;$rowPointer<$startRow+3;$rowPointer++)
131
{
132
for($columnPointer=$startColumn;$columnPointer<$startColumn+3;$columnPointer++)
133
{
134
if($array[$rowPointer][$columnPointer]!=0)
135
{
136
$unknown[$array[$rowPointer][$columnPointer]-1]=0;
137
}
138
}
139
}
140
for($digit=0;$digit<9;$digit++)
141
{
142
if($unknown[$digit]!=0)
143
{
144
$number=$unknown[$digit];
145
$posibilities=0;
146
$rowPosition=-1;
147
$columnPosition=-1;
148
for($rowPointer=$startRow;$rowPointer<$startRow+3;$rowPointer++)
149
{
150
for($columnPointer=$startColumn;$columnPointer<$startColumn+3;$columnPointer++)
151
{
152
if($array[$rowPointer][$columnPointer]==0)
153
{
154
if($this->isPossibleInThatCellCheckByColumn($array,$number,$rowPointer,$columnPointer)&&$this->isPossibleInThatCellCheckByRow($array,$number,$rowPointer,$columnPointer))
155
{
156
$rowPosition=$rowPointer;
157
$columnPosition=$columnPointer;
158
$posibilities++;
159
}
160
}
161
}
162
}
163
if($posibilities==1)
164
{
165
$array[$rowPosition][$columnPosition]=$number;
166
return true;
167
}
168
}
169
}
170
return false;
171
}
172
private function reduceFromOneRow(&$array,$row)
173
{
174
$unknown=array();
175
for($column=0;$column<9;$column++)
176
{
177
$unknown[$column]=$column+1;
178
}
179
for($column=0;$column<9;$column++)
180
{
181
if($array[$row][$column]!=0)
182
{
183
$unknown[$array[$row][$column]-1]=0;
184
}
185
}
186
for($column=0;$column<9;$column++)
187
{
188
if($unknown[$column]!=0)
189
{
190
$number=$unknown[$column];
191
$posibilities=0;
192
$position=-1;
193
for($pointer=0;$pointer<9;$pointer++)
194
{
195
if($array[$row][$pointer]==0)
196
{
197
if($this->isPossibleInThatCellCheckByColumnAndZone($array,$number,$row,$pointer))
198
{
199
$position=$pointer;
200
$posibilities++;
201
}
202
}
203
}
204
if($posibilities==1)
205
{
206
$array[$row][$position]=$number;
207
return true;
208
}
209
}
210
}
211
return false;
212
}
213
private function reduceFromOneColumn(&$array,$column)
214
{
215
$unknown=array();
216
for($row=0;$row<9;$row++)
217
{
218
$unknown[$row]=$row+1;
219
}
220
for($row=0;$row<9;$row++)
221
{
222
if($array[$row][$column]!=0)
223
{
224
$unknown[$array[$row][$column]-1]=0;
225
}
226
}
227
for($row=0;$row<9;$row++)
228
{
229
if($unknown[$row]!=0)
230
{
231
$number=$unknown[$row];
232
$posibilities=0;
233
$position=-1;
234
for($pointer=0;$pointer<9;$pointer++)
235
{
236
if($array[$pointer][$column]==0)
237
{
238
if($this->isPossibleInThatCellCheckByRowAndZone($array,$number,$pointer,$column))
239
{
240
$position=$pointer;
241
$posibilities++;
242
}
243
}
244
}
245
if($posibilities==1)
246
{
247
$array[$position][$column]=$number;
248
return true;
249
}
250
}
251
}
252
return false;
253
}
254
private function isPossibleInThatCellCheckByRowAndZone($array,$number,$row,$column)
255
{
256
if(!$this->isPossibleInThatCellCheckByRow($array,$number,$row,$column))
257
{
258
return false;
259
}
260
else if(!$this->isPossibleInThatCellCheckByZone($array,$number,$row,$column))
261
{
262
return false;
263
}
264
else if(!$this->canBeInThatZoneCheckByColumn($array,$number,$row,$column))
265
{
266
return false;
267
}
268
else
269
{
270
return true;
271
}
272
}
273
private function isPossibleInThatCellCheckByColumnAndZone($array,$number,$row,$column)
274
{
275
if(!$this->isPossibleInThatCellCheckByColumn($array,$number,$row,$column))
276
{
277
return false;
278
}
279
else if(!$this->isPossibleInThatCellCheckByZone($array,$number,$row,$column))
280
{
281
return false;
282
}
283
else if(!$this->canBeInThatZoneCheckByRow($array,$number,$row,$column))
284
{
285
return false;
286
}
287
else
288
{
289
return true;
290
}
291
}
292
private function canBeInThatZoneCheckByRow($array,$number,$row,$column)
293
{
294
$startRow=(floor($row/3))*3;
295
$startColumn=(floor($column/3))*3;
296
for($rowPointer=$startRow;$rowPointer<$startRow+3;$rowPointer++)
297
{
298
if($rowPointer!=$row)
299
{
300
if(!$this->isPossibleInThatCellCheckByRow($array,$number,$rowPointer,$column))
301
{
302
continue;
303
}
304
$canItBe=true;
305
for($columnPointer=0;$columnPointer<9;$columnPointer++)
306
{
307
if($columnPointer<$startColumn||$columnPointer>$startColumn+2)
308
{
309
if($array[$rowPointer][$columnPointer]==0)
310
{
311
if($this->isPossibleInThatCellCheckByColumn($array,$number,$rowPointer,$columnPointer)&&$this->isPossibleInThatCellCheckByZone($array,$number,$rowPointer,$columnPointer))
312
{
313
$canItBe=false;
314
}
315
}
316
}
317
}
318
if($canItBe)
319
{
320
return false;
321
}
322
}
323
}
324
return true;
325
}
326
private function canBeInThatZoneCheckByColumn($array,$number,$row,$column)
327
{
328
$startRow=(floor($row/3))*3;
329
$startColumn=(floor($column/3))*3;
330
for($columnPointer=$startColumn;$columnPointer<$startColumn+3;$columnPointer++)
331
{
332
if($columnPointer!=$column)
333
{
334
if(!$this->isPossibleInThatCellCheckByColumn($array,$number,$row,$columnPointer))
335
{
336
continue;
337
}
338
$canItBe=true;
339
for($rowPointer=0;$rowPointer<9;$rowPointer++)
340
{
341
if($rowPointer<$startRow||$rowPointer>$startRow+2)
342
{
343
if($array[$rowPointer][$columnPointer]==0)
344
{
345
if($this->isPossibleInThatCellCheckByRow($array,$number,$rowPointer,$columnPointer)&&$this->isPossibleInThatCellCheckByZone($array,$number,$rowPointer,$columnPointer))
346
{
347
$canItBe=false;
348
}
349
}
350
}
351
}
352
if($canItBe)
353
{
354
return false;
355
}
356
}
357
}
358
return true;
359
}
360
private function isPossibleInThatCellCheckByZone($array,$number,$row,$column)
361
{
362
$startRow=(floor($row/3))*3;
363
$startColumn=(floor($column/3))*3;
364
for($rowPointer=$startRow;$rowPointer<$startRow+3;$rowPointer++)
365
{
366
for($columnPointer=$startColumn;$columnPointer<$startColumn+3;$columnPointer++)
367
{
368
if($array[$rowPointer][$columnPointer]==$number)
369
{
370
return false;
371
}
372
}
373
}
374
return true;
375
}
376
private function reduceFromThreeColumns(&$array,$firstColumn,$lastColumn)
377
{
378
$numberAndCount=array();
379
$numberAndPosition=array();
380
for($row=0;$row<9;$row++)
381
{
382
$numberAndCount[$row][0]=$row+1;
383
$numberAndCount[$row][1]=0;
384
}
385
for($row=0;$row<27;$row++)
386
{
387
for($column=0;$column<3;$column++)
388
{
389
$numberAndPosition[$row][$column]=0;
390
}
391
}
392
for($column=$firstColumn;$column<=$lastColumn;$column++)
393
{
394
for($row=0;$row<9;$row++)
395
{
396
if($array[$row][$column]!=0)
397
{
398
$numberAndCount[$array[$row][$column]-1][1]++;
399
$numberAndPosition[9*($column%3)+$row][0]=$array[$row][$column];
400
$numberAndPosition[9*($column%3)+$row][1]=$row;
401
$numberAndPosition[9*($column%3)+$row][2]=$column;
402
}
403
}
404
}
405
for($row=0;$row<9;$row++)
406
{
407
if($numberAndCount[$row][1]==2)
408
{
409
$number=$numberAndCount[$row][0];
410
$pointer=0;
411
$firstAppearanceRowPosition=-1;
412
$firstAppearanceColumnPosition=-1;
413
$secondAppearanceRowPosition=-1;
414
$secondAppearanceColumnPosition=-1;
415
while($pointer<27)
416
{
417
if($numberAndPosition[$pointer][0]==$number)
418
{
419
$firstAppearanceRowPosition=$numberAndPosition[$pointer][1];
420
$firstAppearanceColumnPosition=$numberAndPosition[$pointer][2];
421
$pointer++;
422
break;
423
}
424
else
425
{
426
$pointer++;
427
}
428
}
429
while($pointer<27)
430
{
431
if($numberAndPosition[$pointer][0]==$number)
432
{
433
$secondAppearanceRowPosition=$numberAndPosition[$pointer][1];
434
$secondAppearanceColumnPosition=$numberAndPosition[$pointer][2];
435
break;
436
}
437
else
438
{
439
$pointer++;
440
}
441
}
442
$thirdAppearanceColumnPosition=3*(floor($firstAppearanceColumnPosition/3))+3-$firstAppearanceColumnPosition%3-$secondAppearanceColumnPosition%3;
443
$thirdAppearanceRowStartPosition=(3-(floor($firstAppearanceRowPosition/3))-(floor($secondAppearanceRowPosition/3)))*3;
444
$posibilities=0;
445
$thirdAppearanceRowPosition=-1;
446
for($indicator=$thirdAppearanceRowStartPosition;$indicator<$thirdAppearanceRowStartPosition+3;$indicator++)
447
{
448
if($array[$indicator][$thirdAppearanceColumnPosition]==0)
449
{
450
if($this->isPossibleInThatCellCheckByRow($array,$number,$indicator,$thirdAppearanceColumnPosition))
451
{
452
$thirdAppearanceRowPosition=$indicator;
453
$posibilities++;
454
}
455
}
456
}
457
if($posibilities==1)
458
{
459
$array[$thirdAppearanceRowPosition][$thirdAppearanceColumnPosition]=$number;
460
return true;
461
}
462
}
463
}
464
return false;
465
}
466
private function reduceFromThreeRows(&$array,$firstRow,$lastRow)
467
{
468
$numberAndCount=array();
469
$numberAndPosition=array();
470
for($column=0;$column<9;$column++)
471
{
472
$numberAndCount[0][$column]=$column+1;
473
$numberAndCount[1][$column]=0;
474
}
475
for($row=0;$row<3;$row++)
476
{
477
for($column=0;$column<27;$column++)
478
{
479
$numberAndPosition[$row][$column]=0;
480
}
481
}
482
for($row=$firstRow;$row<=$lastRow;$row++)
483
{
484
for($column=0;$column<9;$column++)
485
{
486
if($array[$row][$column]!=0)
487
{
488
$numberAndCount[1][$array[$row][$column]-1]++;
489
$numberAndPosition[0][9*($row%3)+$column]=$array[$row][$column];
490
$numberAndPosition[1][9*($row%3)+$column]=$row;
491
$numberAndPosition[2][9*($row%3)+$column]=$column;
492
}
493
}
494
}
495
for($column=0;$column<9;$column++)
496
{
497
if($numberAndCount[1][$column]==2)
498
{
499
$number=$numberAndCount[0][$column];
500
$pointer=0;
501
$firstAppearanceRowPosition=-1;
502
$firstAppearanceColumnPosition=-1;
503
$secondAppearanceRowPosition=-1;
504
$secondAppearanceColumnPosition=-1;
505
while($pointer<27)
506
{
507
if($numberAndPosition[0][$pointer]==$number)
508
{
509
$firstAppearanceRowPosition=$numberAndPosition[1][$pointer];
510
$firstAppearanceColumnPosition=$numberAndPosition[2][$pointer];
511
$pointer++;
512
break;
513
}
514
else
515
{
516
$pointer++;
517
}
518
}
519
while($pointer<27)
520
{
521
if($numberAndPosition[0][$pointer]==$number)
522
{
523
$secondAppearanceRowPosition=$numberAndPosition[1][$pointer];
524
$secondAppearanceColumnPosition=$numberAndPosition[2][$pointer];
525
break;
526
}
527
else
528
{
529
$pointer++;
530
}
531
}
532
$thirdAppearanceRowPosition=3*(floor($firstAppearanceRowPosition/3))+3-$firstAppearanceRowPosition%3-$secondAppearanceRowPosition%3;
533
$thirdAppearanceColumnStartPosition=(3-(floor($firstAppearanceColumnPosition/3))-(floor($secondAppearanceColumnPosition/3)))*3;
534
$posibilities=0;
535
$thirdAppearanceColumnPosition=-1;
536
for($indicator=$thirdAppearanceColumnStartPosition;$indicator<$thirdAppearanceColumnStartPosition+3;$indicator++)
537
{
538
if($array[$thirdAppearanceRowPosition][$indicator]==0)
539
{
540
if($this->isPossibleInThatCellCheckByColumn($array,$number,$thirdAppearanceRowPosition,$indicator))
541
{
542
$thirdAppearanceColumnPosition=$indicator;
543
$posibilities++;
544
}
545
}
546
}
547
if($posibilities==1)
548
{
549
$array[$thirdAppearanceRowPosition][$thirdAppearanceColumnPosition]=$number;
550
return true;
551
}
552
}
553
}
554
return false;
555
}
556
private function isPossibleInThatCellCheckByColumn($array,$number,$row,$column)
557
{
558
for($pointer=0;$pointer<9;$pointer++)
559
{
560
if($pointer!=$row)
561
{
562
if($array[$pointer][$column]==$number)
563
{
564
return false;
565
}
566
}
567
}
568
return true;
569
}
570
private function isPossibleInThatCellCheckByRow($array,$number,$row,$column)
571
{
572
for($pointer=0;$pointer<9;$pointer++)
573
{
574
if($pointer!=$column)
575
{
576
if($array[$row][$pointer]==$number)
577
{
578
return false;
579
}
580
}
581
}
582
return true;
583
}
584
public function getArray()
585
{
586
return $this->array;
587
}
588
}
589
?>
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/None.gif)
21
![](/Images/OutliningIndicators/None.gif)
22
![](/Images/OutliningIndicators/None.gif)
23
![](/Images/OutliningIndicators/None.gif)
24
![](/Images/OutliningIndicators/None.gif)
25
![](/Images/OutliningIndicators/None.gif)
26
![](/Images/OutliningIndicators/None.gif)
27
![](/Images/OutliningIndicators/None.gif)
28
![](/Images/OutliningIndicators/None.gif)
29
![](/Images/OutliningIndicators/None.gif)
30
![](/Images/OutliningIndicators/None.gif)
31
![](/Images/OutliningIndicators/None.gif)
32
![](/Images/OutliningIndicators/None.gif)
33
![](/Images/OutliningIndicators/None.gif)
34
![](/Images/OutliningIndicators/None.gif)
35
![](/Images/OutliningIndicators/None.gif)
36
![](/Images/OutliningIndicators/None.gif)
37
![](/Images/OutliningIndicators/None.gif)
38
![](/Images/OutliningIndicators/None.gif)
39
![](/Images/OutliningIndicators/None.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/None.gif)
42
![](/Images/OutliningIndicators/None.gif)
43
![](/Images/OutliningIndicators/None.gif)
44
![](/Images/OutliningIndicators/None.gif)
45
![](/Images/OutliningIndicators/None.gif)
46
![](/Images/OutliningIndicators/None.gif)
47
![](/Images/OutliningIndicators/None.gif)
48
![](/Images/OutliningIndicators/None.gif)
49
![](/Images/OutliningIndicators/None.gif)
50
![](/Images/OutliningIndicators/None.gif)
51
![](/Images/OutliningIndicators/None.gif)
52
![](/Images/OutliningIndicators/None.gif)
53
![](/Images/OutliningIndicators/None.gif)
54
![](/Images/OutliningIndicators/None.gif)
55
![](/Images/OutliningIndicators/None.gif)
56
![](/Images/OutliningIndicators/None.gif)
57
![](/Images/OutliningIndicators/None.gif)
58
![](/Images/OutliningIndicators/None.gif)
59
![](/Images/OutliningIndicators/None.gif)
60
![](/Images/OutliningIndicators/None.gif)
61
![](/Images/OutliningIndicators/None.gif)
62
![](/Images/OutliningIndicators/None.gif)
63
![](/Images/OutliningIndicators/None.gif)
64
![](/Images/OutliningIndicators/None.gif)
65
![](/Images/OutliningIndicators/None.gif)
66
![](/Images/OutliningIndicators/None.gif)
67
![](/Images/OutliningIndicators/None.gif)
68
![](/Images/OutliningIndicators/None.gif)
69
![](/Images/OutliningIndicators/None.gif)
70
![](/Images/OutliningIndicators/None.gif)
71
![](/Images/OutliningIndicators/None.gif)
72
![](/Images/OutliningIndicators/None.gif)
73
![](/Images/OutliningIndicators/None.gif)
74
![](/Images/OutliningIndicators/None.gif)
75
![](/Images/OutliningIndicators/None.gif)
76
![](/Images/OutliningIndicators/None.gif)
77
![](/Images/OutliningIndicators/None.gif)
78
![](/Images/OutliningIndicators/None.gif)
79
![](/Images/OutliningIndicators/None.gif)
80
![](/Images/OutliningIndicators/None.gif)
81
![](/Images/OutliningIndicators/None.gif)
82
![](/Images/OutliningIndicators/None.gif)
83
![](/Images/OutliningIndicators/None.gif)
84
![](/Images/OutliningIndicators/None.gif)
85
![](/Images/OutliningIndicators/None.gif)
86
![](/Images/OutliningIndicators/None.gif)
87
![](/Images/OutliningIndicators/None.gif)
88
![](/Images/OutliningIndicators/None.gif)
89
![](/Images/OutliningIndicators/None.gif)
90
![](/Images/OutliningIndicators/None.gif)
91
![](/Images/OutliningIndicators/None.gif)
92
![](/Images/OutliningIndicators/None.gif)
93
![](/Images/OutliningIndicators/None.gif)
94
![](/Images/OutliningIndicators/None.gif)
95
![](/Images/OutliningIndicators/None.gif)
96
![](/Images/OutliningIndicators/None.gif)
97
![](/Images/OutliningIndicators/None.gif)
98
![](/Images/OutliningIndicators/None.gif)
99
![](/Images/OutliningIndicators/None.gif)
100
![](/Images/OutliningIndicators/None.gif)
101
![](/Images/OutliningIndicators/None.gif)
102
![](/Images/OutliningIndicators/None.gif)
103
![](/Images/OutliningIndicators/None.gif)
104
![](/Images/OutliningIndicators/None.gif)
105
![](/Images/OutliningIndicators/None.gif)
106
![](/Images/OutliningIndicators/None.gif)
107
![](/Images/OutliningIndicators/None.gif)
108
![](/Images/OutliningIndicators/None.gif)
109
![](/Images/OutliningIndicators/None.gif)
110
![](/Images/OutliningIndicators/None.gif)
111
![](/Images/OutliningIndicators/None.gif)
112
![](/Images/OutliningIndicators/None.gif)
113
![](/Images/OutliningIndicators/None.gif)
114
![](/Images/OutliningIndicators/None.gif)
115
![](/Images/OutliningIndicators/None.gif)
116
![](/Images/OutliningIndicators/None.gif)
117
![](/Images/OutliningIndicators/None.gif)
118
![](/Images/OutliningIndicators/None.gif)
119
![](/Images/OutliningIndicators/None.gif)
120
![](/Images/OutliningIndicators/None.gif)
121
![](/Images/OutliningIndicators/None.gif)
122
![](/Images/OutliningIndicators/None.gif)
123
![](/Images/OutliningIndicators/None.gif)
124
![](/Images/OutliningIndicators/None.gif)
125
![](/Images/OutliningIndicators/None.gif)
126
![](/Images/OutliningIndicators/None.gif)
127
![](/Images/OutliningIndicators/None.gif)
128
![](/Images/OutliningIndicators/None.gif)
129
![](/Images/OutliningIndicators/None.gif)
130
![](/Images/OutliningIndicators/None.gif)
131
![](/Images/OutliningIndicators/None.gif)
132
![](/Images/OutliningIndicators/None.gif)
133
![](/Images/OutliningIndicators/None.gif)
134
![](/Images/OutliningIndicators/None.gif)
135
![](/Images/OutliningIndicators/None.gif)
136
![](/Images/OutliningIndicators/None.gif)
137
![](/Images/OutliningIndicators/None.gif)
138
![](/Images/OutliningIndicators/None.gif)
139
![](/Images/OutliningIndicators/None.gif)
140
![](/Images/OutliningIndicators/None.gif)
141
![](/Images/OutliningIndicators/None.gif)
142
![](/Images/OutliningIndicators/None.gif)
143
![](/Images/OutliningIndicators/None.gif)
144
![](/Images/OutliningIndicators/None.gif)
145
![](/Images/OutliningIndicators/None.gif)
146
![](/Images/OutliningIndicators/None.gif)
147
![](/Images/OutliningIndicators/None.gif)
148
![](/Images/OutliningIndicators/None.gif)
149
![](/Images/OutliningIndicators/None.gif)
150
![](/Images/OutliningIndicators/None.gif)
151
![](/Images/OutliningIndicators/None.gif)
152
![](/Images/OutliningIndicators/None.gif)
153
![](/Images/OutliningIndicators/None.gif)
154
![](/Images/OutliningIndicators/None.gif)
155
![](/Images/OutliningIndicators/None.gif)
156
![](/Images/OutliningIndicators/None.gif)
157
![](/Images/OutliningIndicators/None.gif)
158
![](/Images/OutliningIndicators/None.gif)
159
![](/Images/OutliningIndicators/None.gif)
160
![](/Images/OutliningIndicators/None.gif)
161
![](/Images/OutliningIndicators/None.gif)
162
![](/Images/OutliningIndicators/None.gif)
163
![](/Images/OutliningIndicators/None.gif)
164
![](/Images/OutliningIndicators/None.gif)
165
![](/Images/OutliningIndicators/None.gif)
166
![](/Images/OutliningIndicators/None.gif)
167
![](/Images/OutliningIndicators/None.gif)
168
![](/Images/OutliningIndicators/None.gif)
169
![](/Images/OutliningIndicators/None.gif)
170
![](/Images/OutliningIndicators/None.gif)
171
![](/Images/OutliningIndicators/None.gif)
172
![](/Images/OutliningIndicators/None.gif)
173
![](/Images/OutliningIndicators/None.gif)
174
![](/Images/OutliningIndicators/None.gif)
175
![](/Images/OutliningIndicators/None.gif)
176
![](/Images/OutliningIndicators/None.gif)
177
![](/Images/OutliningIndicators/None.gif)
178
![](/Images/OutliningIndicators/None.gif)
179
![](/Images/OutliningIndicators/None.gif)
180
![](/Images/OutliningIndicators/None.gif)
181
![](/Images/OutliningIndicators/None.gif)
182
![](/Images/OutliningIndicators/None.gif)
183
![](/Images/OutliningIndicators/None.gif)
184
![](/Images/OutliningIndicators/None.gif)
185
![](/Images/OutliningIndicators/None.gif)
186
![](/Images/OutliningIndicators/None.gif)
187
![](/Images/OutliningIndicators/None.gif)
188
![](/Images/OutliningIndicators/None.gif)
189
![](/Images/OutliningIndicators/None.gif)
190
![](/Images/OutliningIndicators/None.gif)
191
![](/Images/OutliningIndicators/None.gif)
192
![](/Images/OutliningIndicators/None.gif)
193
![](/Images/OutliningIndicators/None.gif)
194
![](/Images/OutliningIndicators/None.gif)
195
![](/Images/OutliningIndicators/None.gif)
196
![](/Images/OutliningIndicators/None.gif)
197
![](/Images/OutliningIndicators/None.gif)
198
![](/Images/OutliningIndicators/None.gif)
199
![](/Images/OutliningIndicators/None.gif)
200
![](/Images/OutliningIndicators/None.gif)
201
![](/Images/OutliningIndicators/None.gif)
202
![](/Images/OutliningIndicators/None.gif)
203
![](/Images/OutliningIndicators/None.gif)
204
![](/Images/OutliningIndicators/None.gif)
205
![](/Images/OutliningIndicators/None.gif)
206
![](/Images/OutliningIndicators/None.gif)
207
![](/Images/OutliningIndicators/None.gif)
208
![](/Images/OutliningIndicators/None.gif)
209
![](/Images/OutliningIndicators/None.gif)
210
![](/Images/OutliningIndicators/None.gif)
211
![](/Images/OutliningIndicators/None.gif)
212
![](/Images/OutliningIndicators/None.gif)
213
![](/Images/OutliningIndicators/None.gif)
214
![](/Images/OutliningIndicators/None.gif)
215
![](/Images/OutliningIndicators/None.gif)
216
![](/Images/OutliningIndicators/None.gif)
217
![](/Images/OutliningIndicators/None.gif)
218
![](/Images/OutliningIndicators/None.gif)
219
![](/Images/OutliningIndicators/None.gif)
220
![](/Images/OutliningIndicators/None.gif)
221
![](/Images/OutliningIndicators/None.gif)
222
![](/Images/OutliningIndicators/None.gif)
223
![](/Images/OutliningIndicators/None.gif)
224
![](/Images/OutliningIndicators/None.gif)
225
![](/Images/OutliningIndicators/None.gif)
226
![](/Images/OutliningIndicators/None.gif)
227
![](/Images/OutliningIndicators/None.gif)
228
![](/Images/OutliningIndicators/None.gif)
229
![](/Images/OutliningIndicators/None.gif)
230
![](/Images/OutliningIndicators/None.gif)
231
![](/Images/OutliningIndicators/None.gif)
232
![](/Images/OutliningIndicators/None.gif)
233
![](/Images/OutliningIndicators/None.gif)
234
![](/Images/OutliningIndicators/None.gif)
235
![](/Images/OutliningIndicators/None.gif)
236
![](/Images/OutliningIndicators/None.gif)
237
![](/Images/OutliningIndicators/None.gif)
238
![](/Images/OutliningIndicators/None.gif)
239
![](/Images/OutliningIndicators/None.gif)
240
![](/Images/OutliningIndicators/None.gif)
241
![](/Images/OutliningIndicators/None.gif)
242
![](/Images/OutliningIndicators/None.gif)
243
![](/Images/OutliningIndicators/None.gif)
244
![](/Images/OutliningIndicators/None.gif)
245
![](/Images/OutliningIndicators/None.gif)
246
![](/Images/OutliningIndicators/None.gif)
247
![](/Images/OutliningIndicators/None.gif)
248
![](/Images/OutliningIndicators/None.gif)
249
![](/Images/OutliningIndicators/None.gif)
250
![](/Images/OutliningIndicators/None.gif)
251
![](/Images/OutliningIndicators/None.gif)
252
![](/Images/OutliningIndicators/None.gif)
253
![](/Images/OutliningIndicators/None.gif)
254
![](/Images/OutliningIndicators/None.gif)
255
![](/Images/OutliningIndicators/None.gif)
256
![](/Images/OutliningIndicators/None.gif)
257
![](/Images/OutliningIndicators/None.gif)
258
![](/Images/OutliningIndicators/None.gif)
259
![](/Images/OutliningIndicators/None.gif)
260
![](/Images/OutliningIndicators/None.gif)
261
![](/Images/OutliningIndicators/None.gif)
262
![](/Images/OutliningIndicators/None.gif)
263
![](/Images/OutliningIndicators/None.gif)
264
![](/Images/OutliningIndicators/None.gif)
265
![](/Images/OutliningIndicators/None.gif)
266
![](/Images/OutliningIndicators/None.gif)
267
![](/Images/OutliningIndicators/None.gif)
268
![](/Images/OutliningIndicators/None.gif)
269
![](/Images/OutliningIndicators/None.gif)
270
![](/Images/OutliningIndicators/None.gif)
271
![](/Images/OutliningIndicators/None.gif)
272
![](/Images/OutliningIndicators/None.gif)
273
![](/Images/OutliningIndicators/None.gif)
274
![](/Images/OutliningIndicators/None.gif)
275
![](/Images/OutliningIndicators/None.gif)
276
![](/Images/OutliningIndicators/None.gif)
277
![](/Images/OutliningIndicators/None.gif)
278
![](/Images/OutliningIndicators/None.gif)
279
![](/Images/OutliningIndicators/None.gif)
280
![](/Images/OutliningIndicators/None.gif)
281
![](/Images/OutliningIndicators/None.gif)
282
![](/Images/OutliningIndicators/None.gif)
283
![](/Images/OutliningIndicators/None.gif)
284
![](/Images/OutliningIndicators/None.gif)
285
![](/Images/OutliningIndicators/None.gif)
286
![](/Images/OutliningIndicators/None.gif)
287
![](/Images/OutliningIndicators/None.gif)
288
![](/Images/OutliningIndicators/None.gif)
289
![](/Images/OutliningIndicators/None.gif)
290
![](/Images/OutliningIndicators/None.gif)
291
![](/Images/OutliningIndicators/None.gif)
292
![](/Images/OutliningIndicators/None.gif)
293
![](/Images/OutliningIndicators/None.gif)
294
![](/Images/OutliningIndicators/None.gif)
295
![](/Images/OutliningIndicators/None.gif)
296
![](/Images/OutliningIndicators/None.gif)
297
![](/Images/OutliningIndicators/None.gif)
298
![](/Images/OutliningIndicators/None.gif)
299
![](/Images/OutliningIndicators/None.gif)
300
![](/Images/OutliningIndicators/None.gif)
301
![](/Images/OutliningIndicators/None.gif)
302
![](/Images/OutliningIndicators/None.gif)
303
![](/Images/OutliningIndicators/None.gif)
304
![](/Images/OutliningIndicators/None.gif)
305
![](/Images/OutliningIndicators/None.gif)
306
![](/Images/OutliningIndicators/None.gif)
307
![](/Images/OutliningIndicators/None.gif)
308
![](/Images/OutliningIndicators/None.gif)
309
![](/Images/OutliningIndicators/None.gif)
310
![](/Images/OutliningIndicators/None.gif)
311
![](/Images/OutliningIndicators/None.gif)
312
![](/Images/OutliningIndicators/None.gif)
313
![](/Images/OutliningIndicators/None.gif)
314
![](/Images/OutliningIndicators/None.gif)
315
![](/Images/OutliningIndicators/None.gif)
316
![](/Images/OutliningIndicators/None.gif)
317
![](/Images/OutliningIndicators/None.gif)
318
![](/Images/OutliningIndicators/None.gif)
319
![](/Images/OutliningIndicators/None.gif)
320
![](/Images/OutliningIndicators/None.gif)
321
![](/Images/OutliningIndicators/None.gif)
322
![](/Images/OutliningIndicators/None.gif)
323
![](/Images/OutliningIndicators/None.gif)
324
![](/Images/OutliningIndicators/None.gif)
325
![](/Images/OutliningIndicators/None.gif)
326
![](/Images/OutliningIndicators/None.gif)
327
![](/Images/OutliningIndicators/None.gif)
328
![](/Images/OutliningIndicators/None.gif)
329
![](/Images/OutliningIndicators/None.gif)
330
![](/Images/OutliningIndicators/None.gif)
331
![](/Images/OutliningIndicators/None.gif)
332
![](/Images/OutliningIndicators/None.gif)
333
![](/Images/OutliningIndicators/None.gif)
334
![](/Images/OutliningIndicators/None.gif)
335
![](/Images/OutliningIndicators/None.gif)
336
![](/Images/OutliningIndicators/None.gif)
337
![](/Images/OutliningIndicators/None.gif)
338
![](/Images/OutliningIndicators/None.gif)
339
![](/Images/OutliningIndicators/None.gif)
340
![](/Images/OutliningIndicators/None.gif)
341
![](/Images/OutliningIndicators/None.gif)
342
![](/Images/OutliningIndicators/None.gif)
343
![](/Images/OutliningIndicators/None.gif)
344
![](/Images/OutliningIndicators/None.gif)
345
![](/Images/OutliningIndicators/None.gif)
346
![](/Images/OutliningIndicators/None.gif)
347
![](/Images/OutliningIndicators/None.gif)
348
![](/Images/OutliningIndicators/None.gif)
349
![](/Images/OutliningIndicators/None.gif)
350
![](/Images/OutliningIndicators/None.gif)
351
![](/Images/OutliningIndicators/None.gif)
352
![](/Images/OutliningIndicators/None.gif)
353
![](/Images/OutliningIndicators/None.gif)
354
![](/Images/OutliningIndicators/None.gif)
355
![](/Images/OutliningIndicators/None.gif)
356
![](/Images/OutliningIndicators/None.gif)
357
![](/Images/OutliningIndicators/None.gif)
358
![](/Images/OutliningIndicators/None.gif)
359
![](/Images/OutliningIndicators/None.gif)
360
![](/Images/OutliningIndicators/None.gif)
361
![](/Images/OutliningIndicators/None.gif)
362
![](/Images/OutliningIndicators/None.gif)
363
![](/Images/OutliningIndicators/None.gif)
364
![](/Images/OutliningIndicators/None.gif)
365
![](/Images/OutliningIndicators/None.gif)
366
![](/Images/OutliningIndicators/None.gif)
367
![](/Images/OutliningIndicators/None.gif)
368
![](/Images/OutliningIndicators/None.gif)
369
![](/Images/OutliningIndicators/None.gif)
370
![](/Images/OutliningIndicators/None.gif)
371
![](/Images/OutliningIndicators/None.gif)
372
![](/Images/OutliningIndicators/None.gif)
373
![](/Images/OutliningIndicators/None.gif)
374
![](/Images/OutliningIndicators/None.gif)
375
![](/Images/OutliningIndicators/None.gif)
376
![](/Images/OutliningIndicators/None.gif)
377
![](/Images/OutliningIndicators/None.gif)
378
![](/Images/OutliningIndicators/None.gif)
379
![](/Images/OutliningIndicators/None.gif)
380
![](/Images/OutliningIndicators/None.gif)
381
![](/Images/OutliningIndicators/None.gif)
382
![](/Images/OutliningIndicators/None.gif)
383
![](/Images/OutliningIndicators/None.gif)
384
![](/Images/OutliningIndicators/None.gif)
385
![](/Images/OutliningIndicators/None.gif)
386
![](/Images/OutliningIndicators/None.gif)
387
![](/Images/OutliningIndicators/None.gif)
388
![](/Images/OutliningIndicators/None.gif)
389
![](/Images/OutliningIndicators/None.gif)
390
![](/Images/OutliningIndicators/None.gif)
391
![](/Images/OutliningIndicators/None.gif)
392
![](/Images/OutliningIndicators/None.gif)
393
![](/Images/OutliningIndicators/None.gif)
394
![](/Images/OutliningIndicators/None.gif)
395
![](/Images/OutliningIndicators/None.gif)
396
![](/Images/OutliningIndicators/None.gif)
397
![](/Images/OutliningIndicators/None.gif)
398
![](/Images/OutliningIndicators/None.gif)
399
![](/Images/OutliningIndicators/None.gif)
400
![](/Images/OutliningIndicators/None.gif)
401
![](/Images/OutliningIndicators/None.gif)
402
![](/Images/OutliningIndicators/None.gif)
403
![](/Images/OutliningIndicators/None.gif)
404
![](/Images/OutliningIndicators/None.gif)
405
![](/Images/OutliningIndicators/None.gif)
406
![](/Images/OutliningIndicators/None.gif)
407
![](/Images/OutliningIndicators/None.gif)
408
![](/Images/OutliningIndicators/None.gif)
409
![](/Images/OutliningIndicators/None.gif)
410
![](/Images/OutliningIndicators/None.gif)
411
![](/Images/OutliningIndicators/None.gif)
412
![](/Images/OutliningIndicators/None.gif)
413
![](/Images/OutliningIndicators/None.gif)
414
![](/Images/OutliningIndicators/None.gif)
415
![](/Images/OutliningIndicators/None.gif)
416
![](/Images/OutliningIndicators/None.gif)
417
![](/Images/OutliningIndicators/None.gif)
418
![](/Images/OutliningIndicators/None.gif)
419
![](/Images/OutliningIndicators/None.gif)
420
![](/Images/OutliningIndicators/None.gif)
421
![](/Images/OutliningIndicators/None.gif)
422
![](/Images/OutliningIndicators/None.gif)
423
![](/Images/OutliningIndicators/None.gif)
424
![](/Images/OutliningIndicators/None.gif)
425
![](/Images/OutliningIndicators/None.gif)
426
![](/Images/OutliningIndicators/None.gif)
427
![](/Images/OutliningIndicators/None.gif)
428
![](/Images/OutliningIndicators/None.gif)
429
![](/Images/OutliningIndicators/None.gif)
430
![](/Images/OutliningIndicators/None.gif)
431
![](/Images/OutliningIndicators/None.gif)
432
![](/Images/OutliningIndicators/None.gif)
433
![](/Images/OutliningIndicators/None.gif)
434
![](/Images/OutliningIndicators/None.gif)
435
![](/Images/OutliningIndicators/None.gif)
436
![](/Images/OutliningIndicators/None.gif)
437
![](/Images/OutliningIndicators/None.gif)
438
![](/Images/OutliningIndicators/None.gif)
439
![](/Images/OutliningIndicators/None.gif)
440
![](/Images/OutliningIndicators/None.gif)
441
![](/Images/OutliningIndicators/None.gif)
442
![](/Images/OutliningIndicators/None.gif)
443
![](/Images/OutliningIndicators/None.gif)
444
![](/Images/OutliningIndicators/None.gif)
445
![](/Images/OutliningIndicators/None.gif)
446
![](/Images/OutliningIndicators/None.gif)
447
![](/Images/OutliningIndicators/None.gif)
448
![](/Images/OutliningIndicators/None.gif)
449
![](/Images/OutliningIndicators/None.gif)
450
![](/Images/OutliningIndicators/None.gif)
451
![](/Images/OutliningIndicators/None.gif)
452
![](/Images/OutliningIndicators/None.gif)
453
![](/Images/OutliningIndicators/None.gif)
454
![](/Images/OutliningIndicators/None.gif)
455
![](/Images/OutliningIndicators/None.gif)
456
![](/Images/OutliningIndicators/None.gif)
457
![](/Images/OutliningIndicators/None.gif)
458
![](/Images/OutliningIndicators/None.gif)
459
![](/Images/OutliningIndicators/None.gif)
460
![](/Images/OutliningIndicators/None.gif)
461
![](/Images/OutliningIndicators/None.gif)
462
![](/Images/OutliningIndicators/None.gif)
463
![](/Images/OutliningIndicators/None.gif)
464
![](/Images/OutliningIndicators/None.gif)
465
![](/Images/OutliningIndicators/None.gif)
466
![](/Images/OutliningIndicators/None.gif)
467
![](/Images/OutliningIndicators/None.gif)
468
![](/Images/OutliningIndicators/None.gif)
469
![](/Images/OutliningIndicators/None.gif)
470
![](/Images/OutliningIndicators/None.gif)
471
![](/Images/OutliningIndicators/None.gif)
472
![](/Images/OutliningIndicators/None.gif)
473
![](/Images/OutliningIndicators/None.gif)
474
![](/Images/OutliningIndicators/None.gif)
475
![](/Images/OutliningIndicators/None.gif)
476
![](/Images/OutliningIndicators/None.gif)
477
![](/Images/OutliningIndicators/None.gif)
478
![](/Images/OutliningIndicators/None.gif)
479
![](/Images/OutliningIndicators/None.gif)
480
![](/Images/OutliningIndicators/None.gif)
481
![](/Images/OutliningIndicators/None.gif)
482
![](/Images/OutliningIndicators/None.gif)
483
![](/Images/OutliningIndicators/None.gif)
484
![](/Images/OutliningIndicators/None.gif)
485
![](/Images/OutliningIndicators/None.gif)
486
![](/Images/OutliningIndicators/None.gif)
487
![](/Images/OutliningIndicators/None.gif)
488
![](/Images/OutliningIndicators/None.gif)
489
![](/Images/OutliningIndicators/None.gif)
490
![](/Images/OutliningIndicators/None.gif)
491
![](/Images/OutliningIndicators/None.gif)
492
![](/Images/OutliningIndicators/None.gif)
493
![](/Images/OutliningIndicators/None.gif)
494
![](/Images/OutliningIndicators/None.gif)
495
![](/Images/OutliningIndicators/None.gif)
496
![](/Images/OutliningIndicators/None.gif)
497
![](/Images/OutliningIndicators/None.gif)
498
![](/Images/OutliningIndicators/None.gif)
499
![](/Images/OutliningIndicators/None.gif)
500
![](/Images/OutliningIndicators/None.gif)
501
![](/Images/OutliningIndicators/None.gif)
502
![](/Images/OutliningIndicators/None.gif)
503
![](/Images/OutliningIndicators/None.gif)
504
![](/Images/OutliningIndicators/None.gif)
505
![](/Images/OutliningIndicators/None.gif)
506
![](/Images/OutliningIndicators/None.gif)
507
![](/Images/OutliningIndicators/None.gif)
508
![](/Images/OutliningIndicators/None.gif)
509
![](/Images/OutliningIndicators/None.gif)
510
![](/Images/OutliningIndicators/None.gif)
511
![](/Images/OutliningIndicators/None.gif)
512
![](/Images/OutliningIndicators/None.gif)
513
![](/Images/OutliningIndicators/None.gif)
514
![](/Images/OutliningIndicators/None.gif)
515
![](/Images/OutliningIndicators/None.gif)
516
![](/Images/OutliningIndicators/None.gif)
517
![](/Images/OutliningIndicators/None.gif)
518
![](/Images/OutliningIndicators/None.gif)
519
![](/Images/OutliningIndicators/None.gif)
520
![](/Images/OutliningIndicators/None.gif)
521
![](/Images/OutliningIndicators/None.gif)
522
![](/Images/OutliningIndicators/None.gif)
523
![](/Images/OutliningIndicators/None.gif)
524
![](/Images/OutliningIndicators/None.gif)
525
![](/Images/OutliningIndicators/None.gif)
526
![](/Images/OutliningIndicators/None.gif)
527
![](/Images/OutliningIndicators/None.gif)
528
![](/Images/OutliningIndicators/None.gif)
529
![](/Images/OutliningIndicators/None.gif)
530
![](/Images/OutliningIndicators/None.gif)
531
![](/Images/OutliningIndicators/None.gif)
532
![](/Images/OutliningIndicators/None.gif)
533
![](/Images/OutliningIndicators/None.gif)
534
![](/Images/OutliningIndicators/None.gif)
535
![](/Images/OutliningIndicators/None.gif)
536
![](/Images/OutliningIndicators/None.gif)
537
![](/Images/OutliningIndicators/None.gif)
538
![](/Images/OutliningIndicators/None.gif)
539
![](/Images/OutliningIndicators/None.gif)
540
![](/Images/OutliningIndicators/None.gif)
541
![](/Images/OutliningIndicators/None.gif)
542
![](/Images/OutliningIndicators/None.gif)
543
![](/Images/OutliningIndicators/None.gif)
544
![](/Images/OutliningIndicators/None.gif)
545
![](/Images/OutliningIndicators/None.gif)
546
![](/Images/OutliningIndicators/None.gif)
547
![](/Images/OutliningIndicators/None.gif)
548
![](/Images/OutliningIndicators/None.gif)
549
![](/Images/OutliningIndicators/None.gif)
550
![](/Images/OutliningIndicators/None.gif)
551
![](/Images/OutliningIndicators/None.gif)
552
![](/Images/OutliningIndicators/None.gif)
553
![](/Images/OutliningIndicators/None.gif)
554
![](/Images/OutliningIndicators/None.gif)
555
![](/Images/OutliningIndicators/None.gif)
556
![](/Images/OutliningIndicators/None.gif)
557
![](/Images/OutliningIndicators/None.gif)
558
![](/Images/OutliningIndicators/None.gif)
559
![](/Images/OutliningIndicators/None.gif)
560
![](/Images/OutliningIndicators/None.gif)
561
![](/Images/OutliningIndicators/None.gif)
562
![](/Images/OutliningIndicators/None.gif)
563
![](/Images/OutliningIndicators/None.gif)
564
![](/Images/OutliningIndicators/None.gif)
565
![](/Images/OutliningIndicators/None.gif)
566
![](/Images/OutliningIndicators/None.gif)
567
![](/Images/OutliningIndicators/None.gif)
568
![](/Images/OutliningIndicators/None.gif)
569
![](/Images/OutliningIndicators/None.gif)
570
![](/Images/OutliningIndicators/None.gif)
571
![](/Images/OutliningIndicators/None.gif)
572
![](/Images/OutliningIndicators/None.gif)
573
![](/Images/OutliningIndicators/None.gif)
574
![](/Images/OutliningIndicators/None.gif)
575
![](/Images/OutliningIndicators/None.gif)
576
![](/Images/OutliningIndicators/None.gif)
577
![](/Images/OutliningIndicators/None.gif)
578
![](/Images/OutliningIndicators/None.gif)
579
![](/Images/OutliningIndicators/None.gif)
580
![](/Images/OutliningIndicators/None.gif)
581
![](/Images/OutliningIndicators/None.gif)
582
![](/Images/OutliningIndicators/None.gif)
583
![](/Images/OutliningIndicators/None.gif)
584
![](/Images/OutliningIndicators/None.gif)
585
![](/Images/OutliningIndicators/None.gif)
586
![](/Images/OutliningIndicators/None.gif)
587
![](/Images/OutliningIndicators/None.gif)
588
![](/Images/OutliningIndicators/None.gif)
589
![](/Images/OutliningIndicators/None.gif)
puzzle.php:
1
<?php
2
include('Deducer.php');
3
if(isset($_POST["type"]))
4
{
5
try
6
{
7
$array=$_POST["array"];
8
$numbers=split(",",$array);
9
$dealingArray=array();
10
for($row=0;$row<9;$row++)
11
{
12
for($column=0;$column<9;$column++)
13
{
14
$dealingArray[$row][$column]=(int)$numbers[$row*9+$column];
15
}
16
}
17
$deducer=new Deducer($dealingArray);
18
if($_POST["type"]=="OneStep")
19
{
20
$deducer->deduceOnce();
21
}
22
else if($_POST["type"]=="AllSteps")
23
{
24
$deducer->deduceAll();
25
}
26
$resultArray=$deducer->getArray();
27
$sb="";
28
for($row=0;$row<9;$row++)
29
{
30
for($column=0;$column<9;$column++)
31
{
32
if($sb=="")
33
{
34
$sb=$sb.$resultArray[$row][$column];
35
}
36
else
37
{
38
$sb=$sb.",".$resultArray[$row][$column];
39
}
40
}
41
}
42
echo $sb;
43
}
44
catch (Exception $e)
45
{
46
echo "ri";
47
}
48
return;
49
}
50
?>
51
<html>
52
<body>
53
<script>
54
var request=false;
55
try
56
{
57
request = new XMLHttpRequest();//Firefox
58
}
59
catch(trymicrosoft)
60
{
61
try
62
{
63
request = new ActiveXObject("Msxml2.XMLHTTP.5.0");//New IE
64
}
65
catch(othermicrosoft)
66
{
67
try
68
{
69
request = new ActiveXObject("Microsoft.XMLHTTP");//Old IE
70
}
71
catch(failed)
72
{
73
request = false;//Unknown browser
74
}
75
}
76
}
77
if(!request)
78
{
79
alert("Please use Internet Explorer");
80
}
81
function dealNullInput(input)
82
{
83
if(input=="")
84
{
85
return "0";
86
}
87
else
88
{
89
return input;
90
}
91
}
92
function dealZeroOutput(input)
93
{
94
if(input==0)
95
{
96
return "";
97
}
98
else
99
{
100
return input;
101
}
102
}
103
function sendOneStepRequest()
104
{
105
url=escape("puzzle.php")+"?random=" + Math.random();//use a random number to avoid cache
106
request.open("POST",url,true);//connection method
107
request.onreadystatechange=showProcess;//show Process method
108
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
109
var array="";
110
for(var i=0;i<81;i++)
111
{
112
if(array=="")
113
{
114
array=array+dealNullInput(document.getElementsByName("TextBox")[i].value);
115
}
116
else
117
{
118
array=array+","+dealNullInput(document.getElementsByName("TextBox")[i].value);
119
}
120
}
121
request.send("type=OneStep"+"&array="+escape(array));
122
}
123
function sendAllStepsRequest()
124
{
125
url=escape("puzzle.php")+"?random=" + Math.random();
126
request.open("POST",url,true);//connection method
127
request.onreadystatechange=showProcess;//show Process method
128
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
129
var array="";
130
for(var i=0;i<81;i++)
131
{
132
if(array=="")
133
{
134
array=array+dealNullInput(document.getElementsByName("TextBox")[i].value);
135
}
136
else
137
{
138
array=array+","+dealNullInput(document.getElementsByName("TextBox")[i].value.replace(/ /g, ""));
139
}
140
}
141
request.send("type=AllSteps"+"&array="+escape(array));
142
}
143
function showProcess()
144
{
145
if(request.readyState == 4)//finished
146
{
147
if(request.status == 200)//normal
148
{
149
var splitResult=request.responseText.split(",");
150
for(var i=0;i<81;i++)
151
{
152
document.getElementsByName("TextBox")[i].value=dealZeroOutput(splitResult[i]);
153
}
154
}
155
}
156
else if(request.readyState == 1)
157
{
158
//"finished step1";
159
}
160
else if(request.readyState == 2)
161
{
162
//"finished step2";
163
}
164
else if(request.readyState == 3)
165
{
166
//"finished step3";
167
}
168
}
169
</script>
170
<table>
171
<tr>
172
<td>
173
<input name="TextBox" type="text" style="width: 25px"/>
174
</td>
175
<td>
176
<input name="TextBox" type="text" style="width: 25px"/>
177
</td>
178
<td>
179
<input name="TextBox" type="text" style="width: 25px"/>
180
</td>
181
<td>
182
<input name="TextBox" type="text" style="width: 25px"/>
183
</td>
184
<td>
185
<input name="TextBox" type="text" style="width: 25px"/>
186
</td>
187
<td>
188
<input name="TextBox" type="text" style="width: 25px"/>
189
</td>
190
<td>
191
<input name="TextBox" type="text" style="width: 25px"/>
192
</td>
193
<td>
194
<input name="TextBox" type="text" style="width: 25px"/>
195
</td>
196
<td>
197
<input name="TextBox" type="text" style="width: 25px"/>
198
</td>
199
</tr>
200
<tr>
201
<td>
202
<input name="TextBox" type="text" style="width: 25px"/>
203
</td>
204
<td>
205
<input name="TextBox" type="text" style="width: 25px"/>
206
</td>
207
<td>
208
<input name="TextBox" type="text" style="width: 25px"/>
209
</td>
210
<td>
211
<input name="TextBox" type="text" style="width: 25px"/>
212
</td>
213
<td>
214
<input name="TextBox" type="text" style="width: 25px"/>
215
</td>
216
<td>
217
<input name="TextBox" type="text" style="width: 25px"/>
218
</td>
219
<td>
220
<input name="TextBox" type="text" style="width: 25px"/>
221
</td>
222
<td>
223
<input name="TextBox" type="text" style="width: 25px"/>
224
</td>
225
<td>
226
<input name="TextBox" type="text" style="width: 25px"/>
227
</td>
228
</tr>
229
<tr>
230
<td>
231
<input name="TextBox" type="text" style="width: 25px"/>
232
</td>
233
<td>
234
<input name="TextBox" type="text" style="width: 25px"/>
235
</td>
236
<td>
237
<input name="TextBox" type="text" style="width: 25px"/>
238
</td>
239
<td>
240
<input name="TextBox" type="text" style="width: 25px"/>
241
</td>
242
<td>
243
<input name="TextBox" type="text" style="width: 25px"/>
244
</td>
245
<td>
246
<input name="TextBox" type="text" style="width: 25px"/>
247
</td>
248
<td>
249
<input name="TextBox" type="text" style="width: 25px"/>
250
</td>
251
<td>
252
<input name="TextBox" type="text" style="width: 25px"/>
253
</td>
254
<td>
255
<input name="TextBox" type="text" style="width: 25px"/>
256
</td>
257
</tr>
258
<tr>
259
<td>
260
<input name="TextBox" type="text" style="width: 25px"/>
261
</td>
262
<td>
263
<input name="TextBox" type="text" style="width: 25px"/>
264
</td>
265
<td>
266
<input name="TextBox" type="text" style="width: 25px"/>
267
</td>
268
<td>
269
<input name="TextBox" type="text" style="width: 25px"/>
270
</td>
271
<td>
272
<input name="TextBox" type="text" style="width: 25px"/>
273
</td>
274
<td>
275
<input name="TextBox" type="text" style="width: 25px"/>
276
</td>
277
<td>
278
<input name="TextBox" type="text" style="width: 25px"/>
279
</td>
280
<td>
281
<input name="TextBox" type="text" style="width: 25px"/>
282
</td>
283
<td>
284
<input name="TextBox" type="text" style="width: 25px"/>
285
</td>
286
</tr>
287
<tr>
288
<td>
289
<input name="TextBox" type="text" style="width: 25px"/>
290
</td>
291
<td>
292
<input name="TextBox" type="text" style="width: 25px"/>
293
</td>
294
<td>
295
<input name="TextBox" type="text" style="width: 25px"/>
296
</td>
297
<td>
298
<input name="TextBox" type="text" style="width: 25px"/>
299
</td>
300
<td>
301
<input name="TextBox" type="text" style="width: 25px"/>
302
</td>
303
<td>
304
<input name="TextBox" type="text" style="width: 25px"/>
305
</td>
306
<td>
307
<input name="TextBox" type="text" style="width: 25px"/>
308
</td>
309
<td>
310
<input name="TextBox" type="text" style="width: 25px"/>
311
</td>
312
<td>
313
<input name="TextBox" type="text" style="width: 25px"/>
314
</td>
315
</tr>
316
<tr>
317
<td>
318
<input name="TextBox" type="text" style="width: 25px"/>
319
</td>
320
<td>
321
<input name="TextBox" type="text" style="width: 25px"/>
322
</td>
323
<td>
324
<input name="TextBox" type="text" style="width: 25px"/>
325
</td>
326
<td>
327
<input name="TextBox" type="text" style="width: 25px"/>
328
</td>
329
<td>
330
<input name="TextBox" type="text" style="width: 25px"/>
331
</td>
332
<td>
333
<input name="TextBox" type="text" style="width: 25px"/>
334
</td>
335
<td>
336
<input name="TextBox" type="text" style="width: 25px"/>
337
</td>
338
<td>
339
<input name="TextBox" type="text" style="width: 25px"/>
340
</td>
341
<td>
342
<input name="TextBox" type="text" style="width: 25px"/>
343
</td>
344
</tr>
345
<tr>
346
<td>
347
<input name="TextBox" type="text" style="width: 25px"/>
348
</td>
349
<td>
350
<input name="TextBox" type="text" style="width: 25px"/>
351
</td>
352
<td>
353
<input name="TextBox" type="text" style="width: 25px"/>
354
</td>
355
<td>
356
<input name="TextBox" type="text" style="width: 25px"/>
357
</td>
358
<td>
359
<input name="TextBox" type="text" style="width: 25px"/>
360
</td>
361
<td>
362
<input name="TextBox" type="text" style="width: 25px"/>
363
</td>
364
<td>
365
<input name="TextBox" type="text" style="width: 25px"/>
366
</td>
367
<td>
368
<input name="TextBox" type="text" style="width: 25px"/>
369
</td>
370
<td>
371
<input name="TextBox" type="text" style="width: 25px"/>
372
</td>
373
</tr>
374
<tr>
375
<td>
376
<input name="TextBox" type="text" style="width: 25px"/>
377
</td>
378
<td>
379
<input name="TextBox" type="text" style="width: 25px"/>
380
</td>
381
<td>
382
<input name="TextBox" type="text" style="width: 25px"/>
383
</td>
384
<td>
385
<input name="TextBox" type="text" style="width: 25px"/>
386
</td>
387
<td>
388
<input name="TextBox" type="text" style="width: 25px"/>
389
</td>
390
<td>
391
<input name="TextBox" type="text" style="width: 25px"/>
392
</td>
393
<td>
394
<input name="TextBox" type="text" style="width: 25px"/>
395
</td>
396
<td>
397
<input name="TextBox" type="text" style="width: 25px"/>
398
</td>
399
<td>
400
<input name="TextBox" type="text" style="width: 25px"/>
401
</td>
402
</tr>
403
<tr>
404
<td>
405
<input name="TextBox" type="text" style="width: 25px"/>
406
</td>
407
<td>
408
<input name="TextBox" type="text" style="width: 25px"/>
409
</td>
410
<td>
411
<input name="TextBox" type="text" style="width: 25px"/>
412
</td>
413
<td>
414
<input name="TextBox" type="text" style="width: 25px"/>
415
</td>
416
<td>
417
<input name="TextBox" type="text" style="width: 25px"/>
418
</td>
419
<td>
420
<input name="TextBox" type="text" style="width: 25px"/>
421
</td>
422
<td>
423
<input name="TextBox" type="text" style="width: 25px"/>
424
</td>
425
<td>
426
<input name="TextBox" type="text" style="width: 25px"/>
427
</td>
428
<td>
429
<input name="TextBox" type="text" style="width: 25px"/>
430
</td>
431
</tr>
432
</table>
433
<input type="button" name="OneStep" value="OneStep" id="OneStep" onclick="sendOneStepRequest()" />
434
<input type="button" name="AllSteps" value="AllSteps" id="AllSteps" onclick="sendAllStepsRequest()" />
435
</body>
436
</html>
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/None.gif)
21
![](/Images/OutliningIndicators/None.gif)
22
![](/Images/OutliningIndicators/None.gif)
23
![](/Images/OutliningIndicators/None.gif)
24
![](/Images/OutliningIndicators/None.gif)
25
![](/Images/OutliningIndicators/None.gif)
26
![](/Images/OutliningIndicators/None.gif)
27
![](/Images/OutliningIndicators/None.gif)
28
![](/Images/OutliningIndicators/None.gif)
29
![](/Images/OutliningIndicators/None.gif)
30
![](/Images/OutliningIndicators/None.gif)
31
![](/Images/OutliningIndicators/None.gif)
32
![](/Images/OutliningIndicators/None.gif)
33
![](/Images/OutliningIndicators/None.gif)
34
![](/Images/OutliningIndicators/None.gif)
35
![](/Images/OutliningIndicators/None.gif)
36
![](/Images/OutliningIndicators/None.gif)
37
![](/Images/OutliningIndicators/None.gif)
38
![](/Images/OutliningIndicators/None.gif)
39
![](/Images/OutliningIndicators/None.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/None.gif)
42
![](/Images/OutliningIndicators/None.gif)
43
![](/Images/OutliningIndicators/None.gif)
44
![](/Images/OutliningIndicators/None.gif)
45
![](/Images/OutliningIndicators/None.gif)
46
![](/Images/OutliningIndicators/None.gif)
47
![](/Images/OutliningIndicators/None.gif)
48
![](/Images/OutliningIndicators/None.gif)
49
![](/Images/OutliningIndicators/None.gif)
50
![](/Images/OutliningIndicators/None.gif)
51
![](/Images/OutliningIndicators/None.gif)
52
![](/Images/OutliningIndicators/None.gif)
53
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
75
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
89
![](/Images/OutliningIndicators/InBlock.gif)
90
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
102
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/InBlock.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
120
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
123
![](/Images/OutliningIndicators/InBlock.gif)
124
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/InBlock.gif)
131
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
132
![](/Images/OutliningIndicators/InBlock.gif)
133
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
134
![](/Images/OutliningIndicators/InBlock.gif)
135
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
136
![](/Images/OutliningIndicators/InBlock.gif)
137
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
138
![](/Images/OutliningIndicators/InBlock.gif)
139
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
140
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
143
![](/Images/OutliningIndicators/InBlock.gif)
144
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
145
![](/Images/OutliningIndicators/InBlock.gif)
146
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
147
![](/Images/OutliningIndicators/InBlock.gif)
148
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
149
![](/Images/OutliningIndicators/InBlock.gif)
150
![](/Images/OutliningIndicators/InBlock.gif)
151
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
152
![](/Images/OutliningIndicators/InBlock.gif)
153
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
154
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
155
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
156
![](/Images/OutliningIndicators/InBlock.gif)
157
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
158
![](/Images/OutliningIndicators/InBlock.gif)
159
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
160
![](/Images/OutliningIndicators/InBlock.gif)
161
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
162
![](/Images/OutliningIndicators/InBlock.gif)
163
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
164
![](/Images/OutliningIndicators/InBlock.gif)
165
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
166
![](/Images/OutliningIndicators/InBlock.gif)
167
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
168
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
169
![](/Images/OutliningIndicators/None.gif)
170
![](/Images/OutliningIndicators/None.gif)
171
![](/Images/OutliningIndicators/None.gif)
172
![](/Images/OutliningIndicators/None.gif)
173
![](/Images/OutliningIndicators/None.gif)
174
![](/Images/OutliningIndicators/None.gif)
175
![](/Images/OutliningIndicators/None.gif)
176
![](/Images/OutliningIndicators/None.gif)
177
![](/Images/OutliningIndicators/None.gif)
178
![](/Images/OutliningIndicators/None.gif)
179
![](/Images/OutliningIndicators/None.gif)
180
![](/Images/OutliningIndicators/None.gif)
181
![](/Images/OutliningIndicators/None.gif)
182
![](/Images/OutliningIndicators/None.gif)
183
![](/Images/OutliningIndicators/None.gif)
184
![](/Images/OutliningIndicators/None.gif)
185
![](/Images/OutliningIndicators/None.gif)
186
![](/Images/OutliningIndicators/None.gif)
187
![](/Images/OutliningIndicators/None.gif)
188
![](/Images/OutliningIndicators/None.gif)
189
![](/Images/OutliningIndicators/None.gif)
190
![](/Images/OutliningIndicators/None.gif)
191
![](/Images/OutliningIndicators/None.gif)
192
![](/Images/OutliningIndicators/None.gif)
193
![](/Images/OutliningIndicators/None.gif)
194
![](/Images/OutliningIndicators/None.gif)
195
![](/Images/OutliningIndicators/None.gif)
196
![](/Images/OutliningIndicators/None.gif)
197
![](/Images/OutliningIndicators/None.gif)
198
![](/Images/OutliningIndicators/None.gif)
199
![](/Images/OutliningIndicators/None.gif)
200
![](/Images/OutliningIndicators/None.gif)
201
![](/Images/OutliningIndicators/None.gif)
202
![](/Images/OutliningIndicators/None.gif)
203
![](/Images/OutliningIndicators/None.gif)
204
![](/Images/OutliningIndicators/None.gif)
205
![](/Images/OutliningIndicators/None.gif)
206
![](/Images/OutliningIndicators/None.gif)
207
![](/Images/OutliningIndicators/None.gif)
208
![](/Images/OutliningIndicators/None.gif)
209
![](/Images/OutliningIndicators/None.gif)
210
![](/Images/OutliningIndicators/None.gif)
211
![](/Images/OutliningIndicators/None.gif)
212
![](/Images/OutliningIndicators/None.gif)
213
![](/Images/OutliningIndicators/None.gif)
214
![](/Images/OutliningIndicators/None.gif)
215
![](/Images/OutliningIndicators/None.gif)
216
![](/Images/OutliningIndicators/None.gif)
217
![](/Images/OutliningIndicators/None.gif)
218
![](/Images/OutliningIndicators/None.gif)
219
![](/Images/OutliningIndicators/None.gif)
220
![](/Images/OutliningIndicators/None.gif)
221
![](/Images/OutliningIndicators/None.gif)
222
![](/Images/OutliningIndicators/None.gif)
223
![](/Images/OutliningIndicators/None.gif)
224
![](/Images/OutliningIndicators/None.gif)
225
![](/Images/OutliningIndicators/None.gif)
226
![](/Images/OutliningIndicators/None.gif)
227
![](/Images/OutliningIndicators/None.gif)
228
![](/Images/OutliningIndicators/None.gif)
229
![](/Images/OutliningIndicators/None.gif)
230
![](/Images/OutliningIndicators/None.gif)
231
![](/Images/OutliningIndicators/None.gif)
232
![](/Images/OutliningIndicators/None.gif)
233
![](/Images/OutliningIndicators/None.gif)
234
![](/Images/OutliningIndicators/None.gif)
235
![](/Images/OutliningIndicators/None.gif)
236
![](/Images/OutliningIndicators/None.gif)
237
![](/Images/OutliningIndicators/None.gif)
238
![](/Images/OutliningIndicators/None.gif)
239
![](/Images/OutliningIndicators/None.gif)
240
![](/Images/OutliningIndicators/None.gif)
241
![](/Images/OutliningIndicators/None.gif)
242
![](/Images/OutliningIndicators/None.gif)
243
![](/Images/OutliningIndicators/None.gif)
244
![](/Images/OutliningIndicators/None.gif)
245
![](/Images/OutliningIndicators/None.gif)
246
![](/Images/OutliningIndicators/None.gif)
247
![](/Images/OutliningIndicators/None.gif)
248
![](/Images/OutliningIndicators/None.gif)
249
![](/Images/OutliningIndicators/None.gif)
250
![](/Images/OutliningIndicators/None.gif)
251
![](/Images/OutliningIndicators/None.gif)
252
![](/Images/OutliningIndicators/None.gif)
253
![](/Images/OutliningIndicators/None.gif)
254
![](/Images/OutliningIndicators/None.gif)
255
![](/Images/OutliningIndicators/None.gif)
256
![](/Images/OutliningIndicators/None.gif)
257
![](/Images/OutliningIndicators/None.gif)
258
![](/Images/OutliningIndicators/None.gif)
259
![](/Images/OutliningIndicators/None.gif)
260
![](/Images/OutliningIndicators/None.gif)
261
![](/Images/OutliningIndicators/None.gif)
262
![](/Images/OutliningIndicators/None.gif)
263
![](/Images/OutliningIndicators/None.gif)
264
![](/Images/OutliningIndicators/None.gif)
265
![](/Images/OutliningIndicators/None.gif)
266
![](/Images/OutliningIndicators/None.gif)
267
![](/Images/OutliningIndicators/None.gif)
268
![](/Images/OutliningIndicators/None.gif)
269
![](/Images/OutliningIndicators/None.gif)
270
![](/Images/OutliningIndicators/None.gif)
271
![](/Images/OutliningIndicators/None.gif)
272
![](/Images/OutliningIndicators/None.gif)
273
![](/Images/OutliningIndicators/None.gif)
274
![](/Images/OutliningIndicators/None.gif)
275
![](/Images/OutliningIndicators/None.gif)
276
![](/Images/OutliningIndicators/None.gif)
277
![](/Images/OutliningIndicators/None.gif)
278
![](/Images/OutliningIndicators/None.gif)
279
![](/Images/OutliningIndicators/None.gif)
280
![](/Images/OutliningIndicators/None.gif)
281
![](/Images/OutliningIndicators/None.gif)
282
![](/Images/OutliningIndicators/None.gif)
283
![](/Images/OutliningIndicators/None.gif)
284
![](/Images/OutliningIndicators/None.gif)
285
![](/Images/OutliningIndicators/None.gif)
286
![](/Images/OutliningIndicators/None.gif)
287
![](/Images/OutliningIndicators/None.gif)
288
![](/Images/OutliningIndicators/None.gif)
289
![](/Images/OutliningIndicators/None.gif)
290
![](/Images/OutliningIndicators/None.gif)
291
![](/Images/OutliningIndicators/None.gif)
292
![](/Images/OutliningIndicators/None.gif)
293
![](/Images/OutliningIndicators/None.gif)
294
![](/Images/OutliningIndicators/None.gif)
295
![](/Images/OutliningIndicators/None.gif)
296
![](/Images/OutliningIndicators/None.gif)
297
![](/Images/OutliningIndicators/None.gif)
298
![](/Images/OutliningIndicators/None.gif)
299
![](/Images/OutliningIndicators/None.gif)
300
![](/Images/OutliningIndicators/None.gif)
301
![](/Images/OutliningIndicators/None.gif)
302
![](/Images/OutliningIndicators/None.gif)
303
![](/Images/OutliningIndicators/None.gif)
304
![](/Images/OutliningIndicators/None.gif)
305
![](/Images/OutliningIndicators/None.gif)
306
![](/Images/OutliningIndicators/None.gif)
307
![](/Images/OutliningIndicators/None.gif)
308
![](/Images/OutliningIndicators/None.gif)
309
![](/Images/OutliningIndicators/None.gif)
310
![](/Images/OutliningIndicators/None.gif)
311
![](/Images/OutliningIndicators/None.gif)
312
![](/Images/OutliningIndicators/None.gif)
313
![](/Images/OutliningIndicators/None.gif)
314
![](/Images/OutliningIndicators/None.gif)
315
![](/Images/OutliningIndicators/None.gif)
316
![](/Images/OutliningIndicators/None.gif)
317
![](/Images/OutliningIndicators/None.gif)
318
![](/Images/OutliningIndicators/None.gif)
319
![](/Images/OutliningIndicators/None.gif)
320
![](/Images/OutliningIndicators/None.gif)
321
![](/Images/OutliningIndicators/None.gif)
322
![](/Images/OutliningIndicators/None.gif)
323
![](/Images/OutliningIndicators/None.gif)
324
![](/Images/OutliningIndicators/None.gif)
325
![](/Images/OutliningIndicators/None.gif)
326
![](/Images/OutliningIndicators/None.gif)
327
![](/Images/OutliningIndicators/None.gif)
328
![](/Images/OutliningIndicators/None.gif)
329
![](/Images/OutliningIndicators/None.gif)
330
![](/Images/OutliningIndicators/None.gif)
331
![](/Images/OutliningIndicators/None.gif)
332
![](/Images/OutliningIndicators/None.gif)
333
![](/Images/OutliningIndicators/None.gif)
334
![](/Images/OutliningIndicators/None.gif)
335
![](/Images/OutliningIndicators/None.gif)
336
![](/Images/OutliningIndicators/None.gif)
337
![](/Images/OutliningIndicators/None.gif)
338
![](/Images/OutliningIndicators/None.gif)
339
![](/Images/OutliningIndicators/None.gif)
340
![](/Images/OutliningIndicators/None.gif)
341
![](/Images/OutliningIndicators/None.gif)
342
![](/Images/OutliningIndicators/None.gif)
343
![](/Images/OutliningIndicators/None.gif)
344
![](/Images/OutliningIndicators/None.gif)
345
![](/Images/OutliningIndicators/None.gif)
346
![](/Images/OutliningIndicators/None.gif)
347
![](/Images/OutliningIndicators/None.gif)
348
![](/Images/OutliningIndicators/None.gif)
349
![](/Images/OutliningIndicators/None.gif)
350
![](/Images/OutliningIndicators/None.gif)
351
![](/Images/OutliningIndicators/None.gif)
352
![](/Images/OutliningIndicators/None.gif)
353
![](/Images/OutliningIndicators/None.gif)
354
![](/Images/OutliningIndicators/None.gif)
355
![](/Images/OutliningIndicators/None.gif)
356
![](/Images/OutliningIndicators/None.gif)
357
![](/Images/OutliningIndicators/None.gif)
358
![](/Images/OutliningIndicators/None.gif)
359
![](/Images/OutliningIndicators/None.gif)
360
![](/Images/OutliningIndicators/None.gif)
361
![](/Images/OutliningIndicators/None.gif)
362
![](/Images/OutliningIndicators/None.gif)
363
![](/Images/OutliningIndicators/None.gif)
364
![](/Images/OutliningIndicators/None.gif)
365
![](/Images/OutliningIndicators/None.gif)
366
![](/Images/OutliningIndicators/None.gif)
367
![](/Images/OutliningIndicators/None.gif)
368
![](/Images/OutliningIndicators/None.gif)
369
![](/Images/OutliningIndicators/None.gif)
370
![](/Images/OutliningIndicators/None.gif)
371
![](/Images/OutliningIndicators/None.gif)
372
![](/Images/OutliningIndicators/None.gif)
373
![](/Images/OutliningIndicators/None.gif)
374
![](/Images/OutliningIndicators/None.gif)
375
![](/Images/OutliningIndicators/None.gif)
376
![](/Images/OutliningIndicators/None.gif)
377
![](/Images/OutliningIndicators/None.gif)
378
![](/Images/OutliningIndicators/None.gif)
379
![](/Images/OutliningIndicators/None.gif)
380
![](/Images/OutliningIndicators/None.gif)
381
![](/Images/OutliningIndicators/None.gif)
382
![](/Images/OutliningIndicators/None.gif)
383
![](/Images/OutliningIndicators/None.gif)
384
![](/Images/OutliningIndicators/None.gif)
385
![](/Images/OutliningIndicators/None.gif)
386
![](/Images/OutliningIndicators/None.gif)
387
![](/Images/OutliningIndicators/None.gif)
388
![](/Images/OutliningIndicators/None.gif)
389
![](/Images/OutliningIndicators/None.gif)
390
![](/Images/OutliningIndicators/None.gif)
391
![](/Images/OutliningIndicators/None.gif)
392
![](/Images/OutliningIndicators/None.gif)
393
![](/Images/OutliningIndicators/None.gif)
394
![](/Images/OutliningIndicators/None.gif)
395
![](/Images/OutliningIndicators/None.gif)
396
![](/Images/OutliningIndicators/None.gif)
397
![](/Images/OutliningIndicators/None.gif)
398
![](/Images/OutliningIndicators/None.gif)
399
![](/Images/OutliningIndicators/None.gif)
400
![](/Images/OutliningIndicators/None.gif)
401
![](/Images/OutliningIndicators/None.gif)
402
![](/Images/OutliningIndicators/None.gif)
403
![](/Images/OutliningIndicators/None.gif)
404
![](/Images/OutliningIndicators/None.gif)
405
![](/Images/OutliningIndicators/None.gif)
406
![](/Images/OutliningIndicators/None.gif)
407
![](/Images/OutliningIndicators/None.gif)
408
![](/Images/OutliningIndicators/None.gif)
409
![](/Images/OutliningIndicators/None.gif)
410
![](/Images/OutliningIndicators/None.gif)
411
![](/Images/OutliningIndicators/None.gif)
412
![](/Images/OutliningIndicators/None.gif)
413
![](/Images/OutliningIndicators/None.gif)
414
![](/Images/OutliningIndicators/None.gif)
415
![](/Images/OutliningIndicators/None.gif)
416
![](/Images/OutliningIndicators/None.gif)
417
![](/Images/OutliningIndicators/None.gif)
418
![](/Images/OutliningIndicators/None.gif)
419
![](/Images/OutliningIndicators/None.gif)
420
![](/Images/OutliningIndicators/None.gif)
421
![](/Images/OutliningIndicators/None.gif)
422
![](/Images/OutliningIndicators/None.gif)
423
![](/Images/OutliningIndicators/None.gif)
424
![](/Images/OutliningIndicators/None.gif)
425
![](/Images/OutliningIndicators/None.gif)
426
![](/Images/OutliningIndicators/None.gif)
427
![](/Images/OutliningIndicators/None.gif)
428
![](/Images/OutliningIndicators/None.gif)
429
![](/Images/OutliningIndicators/None.gif)
430
![](/Images/OutliningIndicators/None.gif)
431
![](/Images/OutliningIndicators/None.gif)
432
![](/Images/OutliningIndicators/None.gif)
433
![](/Images/OutliningIndicators/None.gif)
434
![](/Images/OutliningIndicators/None.gif)
435
![](/Images/OutliningIndicators/None.gif)
436
![](/Images/OutliningIndicators/None.gif)