File Coverage

blib/lib/GD/Barcode/QRcode.pm
Criterion Covered Total %
statement 265 843 31.4
branch 88 2058 4.2
condition 109 2972 3.6
subroutine 13 15 86.6
pod 3 4 75.0
total 478 5892 8.1


line stmt bran cond sub pod time code
1             # GD::Barcode::QRcode 1.20 Edited (^^;;; by Hippo2000
2             # based on QRcode image CGI version 0.50 (C)2000-2002,Y.Swetake
3 1     1   154027 use strict;
  1         1  
  1         33  
4 1     1   7 use warnings;
  1         2  
  1         48  
5              
6             package GD::Barcode::QRcode;
7              
8 1     1   467 use parent qw(Exporter);
  1         363  
  1         6  
9 1     1   74 use vars qw($VERSION @ISA $errStr);
  1         3  
  1         2767  
10             @ISA = qw(GD::Barcode Exporter);
11             $VERSION = '2.02';
12              
13             sub new {
14 6     6 1 216091 my ( $sClass, $sTxt, $rhPrm ) = @_;
15 6         16 $errStr = '';
16 6         12 my $oSelf = {};
17 6         12 bless $oSelf, $sClass;
18 6 50       18 return if ( $errStr = $oSelf->init( $sTxt, $rhPrm ) );
19 6         26 return $oSelf;
20             }
21              
22             sub init {
23 6     6 0 13 my ( $oSelf, $sTxt, $rhPrm ) = @_;
24              
25             #CalcCd
26 6         24 $oSelf->{text} = $sTxt;
27 6   100     32 $oSelf->{Ecc} = $rhPrm->{Ecc} || ' ';
28 6         17 $oSelf->{Ecc} =~ tr/LMHQ/M/c; #Not /LMQH/ => M
29 6   50     29 $oSelf->{Version} = $rhPrm->{Version} || 0;
30 6   100     28 $oSelf->{ModuleSize} = $rhPrm->{ModuleSize} || 1;
31 6         13 $oSelf->{ModuleSize} = int( $oSelf->{ModuleSize} );
32              
33 6         11 my $iDatCnt = 0;
34 6         17 my @aDatVal;
35             my @aDatBit;
36 6         0 my $raPlusWords;
37 6         0 my $iWordsPos;
38 6         14 $aDatBit[$iDatCnt] = 4;
39              
40             # Determine Data Type(8Bit, AlphaNumeric, Numeric .. not supported Kanji-Mode)
41 6 100       29 if ( $oSelf->{text} =~ /\D/ ) {
42 4 50       16 if ( $oSelf->{text} =~ /[^0-9A-Z \$\*\%\+\-\.\/\:]/ ) {
43              
44             # --- 8bit byte mode
45 4         15 ( $iDatCnt, $raPlusWords ) =
46             $oSelf->_cnv8bit( $iDatCnt, \@aDatVal, \@aDatBit, );
47             }
48             else {
49             # ---- alphanumeric mode
50 0         0 ( $iDatCnt, $raPlusWords ) =
51             $oSelf->_cnvAlphaNumeric( $iDatCnt, \@aDatVal, \@aDatBit );
52             }
53             }
54             else {
55             # ---- numeric mode
56 2         8 ( $iDatCnt, $raPlusWords ) =
57             $oSelf->_cnvNumeric( $iDatCnt, \@aDatVal, \@aDatBit );
58             }
59 6         12 my $iTotalBits = 0;
60 6         19 for ( my $i = 0 ; $i < $iDatCnt ; ++$i ) {
61 71         124 $iTotalBits += $aDatBit[$i];
62             }
63              
64             # Calc version(=Size)
65 6         10 my ( $iMaxDatBits, $iCdNumPlus, $iMaxCodeWords, $iRemainBits );
66 6         18 ( $iMaxDatBits, $iCdNumPlus, $iMaxCodeWords, $iRemainBits ) =
67             $oSelf->_calcVersion( $iTotalBits, $raPlusWords );
68 6         11 $iTotalBits += $iCdNumPlus;
69              
70 6         11 $aDatBit[ $oSelf->{WordsPos} ] += $iCdNumPlus;
71 6         21 $oSelf->{MaxModules} = 17 + ( $oSelf->{Version} * 4 );
72 6         12 my $iBitCnt = ( $iMaxCodeWords * 8 ) + $iRemainBits;
73 6         11 my $iMaxDatWords = ( $iMaxDatBits / 8 );
74              
75             # ---- read version ECC data file.
76 6         13 my ( $sMatX, $sMatY, $sMasks, $sFmtInfX2, $sFmtInfY2, $sRsEccCodeWord,
77             $sRso );
78             my $sRec =
79             do( 'GD/Barcode/QRcode/qrv'
80             . sprintf( '%02d', $oSelf->{Version} )
81             . $oSelf->{Ecc}
82 6         1574 . '.dat' );
83              
84 6         129 ( $sMatX, $sMatY, $sMasks, $sFmtInfX2, $sFmtInfY2, $sRsEccCodeWord, $sRso )
85             = unpack( ( "a$iBitCnt" x 3 ) . ( 'a15' x 2 ) . 'a1a128',
86             pack( 'H*', $sRec ) );
87              
88 6         15 my $iRsEccWords = ord($sRsEccCodeWord);
89 6         60 my @aMatrixX = unpack( "C*", $sMatX );
90 6         62 my @aMatrixY = unpack( "C*", $sMatY );
91 6         92 my @aMask = unpack( "C*", $sMasks );
92 6         17 my @aRsBlockOrder = unpack( "C*", $sRso );
93 6         13 my @aFmtInfX2 = unpack( "C*", $sFmtInfX2 );
94 6         28 my @aFmtInfY2 = unpack( "C*", $sFmtInfY2 );
95              
96 6         1796 $sRec =
97             do( 'GD/Barcode/QRcode/rsc' . sprintf( '%02d', $iRsEccWords ) . '.dat' );
98 6         502 my @aRsCalTbl = unpack( "a$iRsEccWords" x 256, pack( 'H*', $sRec ) );
99              
100             # ---- set terminator
101 6 50       24 if ( $iTotalBits <= ( $iMaxDatBits - 4 ) ) {
    0          
    0          
102 6         12 $aDatVal[$iDatCnt] = 0;
103 6         9 $aDatBit[$iDatCnt] = 4;
104             }
105             elsif ( $iTotalBits < $iMaxDatBits ) {
106 0         0 $aDatVal[$iDatCnt] = 0;
107 0         0 $aDatBit[$iDatCnt] = $iMaxDatBits - $iTotalBits;
108             }
109             elsif ( $iTotalBits > $iMaxDatBits ) {
110 0         0 die "Overflow error. version $oSelf->{Version}\n"
111             . "total bits: $iTotalBits max bits: $iMaxDatBits\n";
112             }
113 6         7 my $iCodeWords = 0;
114 6         7 my @aCodeWords;
115 6         7 $aCodeWords[0] = 0;
116 6         7 my $iRestBits = 8;
117 6         16 for ( my $i = 0 ; $i <= $iDatCnt ; ++$i ) {
118 77         89 my $sBuff = $aDatVal[$i];
119 77         99 my $iBuffBit = $aDatBit[$i];
120              
121 77         82 my $iFlg = 1;
122 77         126 while ($iFlg) {
123 143 100       174 if ( $iRestBits > $iBuffBit ) {
124 72   50     114 $aCodeWords[$iCodeWords] =
125             ( ( ( $aCodeWords[$iCodeWords] // 0 ) << $iBuffBit ) | $sBuff );
126 72         77 $iRestBits -= $iBuffBit;
127 72         159 $iFlg = 0;
128             }
129             else {
130 71         64 $iBuffBit -= $iRestBits;
131 71         86 $aCodeWords[$iCodeWords] =
132             ( ( $aCodeWords[$iCodeWords] << $iRestBits ) |
133             ( $sBuff >> $iBuffBit ) );
134 71 100       91 if ( $iBuffBit == 0 ) {
135 5         5 $iFlg = 0;
136             }
137             else {
138 66         81 $sBuff = ( $sBuff & ( ( 1 << $iBuffBit ) - 1 ) );
139 66         70 $iFlg = 1;
140             }
141 71         71 $iCodeWords++;
142 71 50       105 if ( $iCodeWords < $iMaxDatWords - 1 ) {
143 71         75 $aCodeWords[$iCodeWords] = 0;
144             }
145 71         124 $iRestBits = 8;
146             }
147             }
148             }
149 6 100       7 if ( $iRestBits != 8 ) {
150 2         3 $aCodeWords[$iCodeWords] <<= $iRestBits;
151             }
152             else {
153 4         6 --$iCodeWords;
154             }
155              
156             # Padding data
157 6 50       10 if ( $iCodeWords < $iMaxDatWords - 1 ) {
158 6         7 my $iFlg = 1;
159 6         8 while ( $iCodeWords < ( $iMaxDatWords - 1 ) ) {
160 51 100       56 $aCodeWords[ ++$iCodeWords ] = ( $iFlg == 1 ) ? 0xEC : 0x11;
161 51         62 $iFlg *= -1;
162             }
163             }
164              
165             # ---- RS-ECC prepare
166 6         5 my $iRsBlock = 0;
167 6         8 my @aRsTmp = ();
168 6         7 my $j = 0;
169              
170             # Divide RS-Blocks
171 6         10 for ( my $i = 0 ; $i < $iMaxDatWords ; ++$i ) {
172 124         134 $aRsTmp[$iRsBlock] .= chr( $aCodeWords[$i] );
173 124 100       173 if ( ++$j >= $aRsBlockOrder[$iRsBlock] - $iRsEccWords ) {
174 6         5 $j = 0;
175 6         11 ++$iRsBlock;
176             }
177             }
178              
179             # RS-ECC main
180 6         12 for ( $iRsBlock = 0 ; $iRsBlock <= scalar(@aRsBlockOrder) ; $iRsBlock++ ) {
181 12         13 my $sRsCodeWords = $aRsBlockOrder[$iRsBlock];
182 12   100     31 $sRsCodeWords ||= 0;
183 12         32 $sRsCodeWords =~ s/\n//g;
184 12   100     34 my $sRsTmp = ( $aRsTmp[$iRsBlock] || '' ) . ( chr(0) x $iRsEccWords );
185              
186 12         21 for ( $j = ( $sRsCodeWords - $iRsEccWords ) ; $j > 0 ; $j-- ) {
187 124         135 my $iFirst = ord( substr( $sRsTmp, 0, 1 ) );
188 124 100       113 if ( $iFirst != 0 ) {
189 122         198 $sRsTmp = substr( $sRsTmp, 1 ) ^ $aRsCalTbl[$iFirst];
190             }
191             else {
192 2         4 $sRsTmp = substr( $sRsTmp, 1 );
193             }
194             }
195 12         46 push( @aCodeWords, unpack( "C*", $sRsTmp ) );
196             }
197              
198             # ---- put data
199             # ---- flash matrix
200 6         7 my @aCont;
201 6         14 $oSelf->{Cont} = \@aCont;
202 6         12 for ( my $i = 0 ; $i < $oSelf->{MaxModules} ; $i++ ) {
203 134         354 $aCont[$i] = [ (0) x $oSelf->{MaxModules} ];
204             }
205 6         12 for ( my $i = 0 ; $i < $iMaxCodeWords ; $i++ ) {
206 200         206 my $iCodeWord = $aCodeWords[$i];
207 200         256 for ( my $j = 7 ; $j >= 0 ; $j-- ) {
208 1600         1617 my $iCodeWordBitNum = ( $i * 8 ) + $j;
209 1600         1900 $aCont[ $aMatrixX[$iCodeWordBitNum] ][ $aMatrixY[$iCodeWordBitNum] ]
210             = ( ( 255 * ( $iCodeWord & 1 ) ) ^ $aMask[$iCodeWordBitNum] );
211 1600         2182 $iCodeWord >>= 1;
212             }
213             }
214 6         16 for ( my $iMatrixRemain = $iRemainBits ; $iMatrixRemain ; $iMatrixRemain-- )
215             {
216 7         14 my $iRemainBitTmp = $iMatrixRemain + ( $iMaxCodeWords * 8 );
217 7   100     41 $aCont[ $aMatrixX[$iRemainBitTmp] // 0 ][ $aMatrixY[$iRemainBitTmp] // 0 ] =
      100        
      100        
218             ( 255 ^ ( $aMask[$iRemainBitTmp] // 0 ) );
219             }
220              
221             # ---- mask select
222 6         10 my $sHorMst = '';
223 6         9 my $sVerMst = '';
224 6         16 for ( my $i = 0 ; $i < $oSelf->{MaxModules} ; ++$i ) {
225 134         200 for ( $j = 0 ; $j < $oSelf->{MaxModules} ; ++$j ) {
226 3046         3332 $sHorMst .= chr( $aCont[$j][$i] );
227 3046         4456 $sVerMst .= chr( $aCont[$i][$j] );
228             }
229             }
230 6         20 my $iMask = $oSelf->_calcMask( $sHorMst, $sVerMst );
231 6         35 $oSelf->{MaskCont} = ( 1 << $iMask );
232              
233             # ---- format information
234 6         64 my %hFmtInf = (
235             'M' => [
236             '101010000010010', '101000100100101',
237             '101111001111100', '101101101001011',
238             '100010111111001', '100000011001110',
239             '100111110010111', '100101010100000',
240             ],
241             'L' => [
242             '111011111000100', '111001011110011',
243             '111110110101010', '111100010011101',
244             '110011000101111', '110001100011000',
245             '110110001000001', '110100101110110',
246             ],
247             'H' => [
248             '001011010001001', '001001110111110',
249             '001110011100111', '001100111010000',
250             '000011101100010', '000001001010101',
251             '000110100001100', '000100000111011',
252             ],
253             'Q' => [
254             '011010101011111', '011000001101000',
255             '011111100110001', '011101000000110',
256             '010010010110100', '010000110000011',
257             '010111011011010', '010101111101101',
258             ],
259             );
260 6         33 my @aFmtInfX1 = ( 0, 1, 2, 3, 4, 5, 7, 8, 8, 8, 8, 8, 8, 8, 8 );
261 6         14 my @aFmtInfY1 = ( 8, 8, 8, 8, 8, 8, 8, 8, 7, 5, 4, 3, 2, 1, 0 );
262 6         33 my @aContWk = split //, $hFmtInf{ $oSelf->{Ecc} }->[$iMask];
263 6         20 for ( my $i = 0 ; $i < 15 ; ++$i ) {
264 90         143 $aCont[ $aFmtInfX1[$i] ][ $aFmtInfY1[$i] ] = $aContWk[$i] * 255;
265 90         173 $aCont[ $aFmtInfX2[$i] ][ $aFmtInfY2[$i] ] = $aContWk[$i] * 255;
266             }
267 6         266 return '';
268             }
269              
270             sub barcode {
271 2     2 1 1106 my ($oSelf) = @_;
272 2         4 my $sBarL;
273 2         5 my $iModSize = $oSelf->{ModuleSize};
274 2         7 my $sBlack = '1' x $iModSize;
275 2         6 my $sWhite = '0' x $iModSize;
276              
277 2         3 my $sPtn = '';
278             $sPtn =
279 2         12 ( ( $sWhite x ( $oSelf->{MaxModules} + 8 ) ) . "\n" ) x ( 4 * $iModSize );
280 2         3 my @aCont = @{ $oSelf->{Cont} };
  2         10  
281              
282 2         11 for ( my $iY = 0 ; $iY < $oSelf->{MaxModules} ; ++$iY ) {
283 42         52 $sBarL = $sWhite x 4;
284 42         66 for ( my $iX = 0 ; $iX < $oSelf->{MaxModules} ; ++$iX ) {
285             $sBarL .=
286             ( ( _calcFrm( $oSelf->{Version}, $iY, $iX ) )
287 882 100 100     1217 || ( ( $aCont[$iX][$iY] & $oSelf->{MaskCont} ) ) )
288             ? $sBlack
289             : $sWhite;
290             }
291 42         67 $sBarL .= ( $sWhite x 4 ) . "\n";
292 42         83 $sPtn .= $sBarL x $iModSize;
293             }
294             $sPtn .=
295 2         9 ( $sWhite x ( $oSelf->{MaxModules} + 8 ) . "\n" ) x ( 4 * $iModSize );
296 2         11 return $sPtn;
297             }
298              
299             sub plot {
300 0     0 1 0 my ( $oSelf, %hParam ) = @_;
301 0         0 require GD;
302 0         0 my $iUnitSize = $oSelf->{ModuleSize};
303             my $oOutImg = GD::Image->new(
304             ( $oSelf->{MaxModules} + 8 ) * $iUnitSize,
305 0         0 ( $oSelf->{MaxModules} + 8 ) * $iUnitSize
306             );
307 0         0 my $cWhite = $oOutImg->colorAllocate( 255, 255, 255 ); #For BackColor
308 0         0 my $cBlack = $oOutImg->colorAllocate( 0, 0, 0 );
309 0         0 my @aCont = @{ $oSelf->{Cont} };
  0         0  
310 0         0 for ( my $iY = 0 ; $iY < $oSelf->{MaxModules} ; ++$iY ) {
311 0         0 for ( my $iX = 0 ; $iX < $oSelf->{MaxModules} ; ++$iX ) {
312 0 0 0     0 if ( ( _calcFrm( $oSelf->{Version}, $iY, $iX ) )
313             || ( ( $aCont[$iX][$iY] & $oSelf->{MaskCont} ) ) )
314             {
315 0 0       0 if ( $oSelf->{ModuleSize} <= 1 ) {
316 0         0 $oOutImg->setPixel( $iX + 4, $iY + 4, $cBlack );
317             }
318             else {
319             $oOutImg->filledRectangle(
320             ( $iX + 4 ) * $iUnitSize,
321             ( $iY + 4 ) * $iUnitSize,
322             ( $iX + 4 + 1 ) * $oSelf->{ModuleSize} - 1,
323 0         0 ( $iY + 4 + 1 ) * $oSelf->{ModuleSize} - 1,
324             $cBlack
325             );
326             }
327             }
328             }
329             }
330 0         0 return $oOutImg;
331             }
332              
333             sub _calcVersion {
334 6     6   12 my ( $oSelf, $iTtlBits, $raPlusWords ) = @_;
335              
336 6         144 my %hMaxDatBits = (
337             'M' => [
338             0, 128, 224, 352, 512, 688, 864, 992,
339             1232, 1456, 1728, 2032, 2320, 2672, 2920, 3320,
340             3624, 4056, 4504, 5016, 5352, 5712, 6256, 6880,
341             7312, 8000, 8496, 9024, 9544, 10136, 10984, 11640,
342             12328, 13048, 13800, 14496, 15312, 15936, 16816, 17728,
343             18672,
344             ],
345             'L' => [
346             0, 152, 272, 440, 640, 864, 1088, 1248,
347             1552, 1856, 2192, 2592, 2960, 3424, 3688, 4184,
348             4712, 5176, 5768, 6360, 6888, 7456, 8048, 8752,
349             9392, 10208, 10960, 11744, 12248, 13048, 13880, 14744,
350             15640, 16568, 17528, 18448, 19472, 20528, 21616, 22496,
351             23648,
352             ],
353             'H' => [
354             0, 72, 128, 208, 288, 368, 480, 528, 688, 800,
355             976, 1120, 1264, 1440, 1576, 1784, 2024, 2264, 2504, 2728,
356             3080, 3248, 3536, 3712, 4112, 4304, 4768, 5024, 5288, 5608,
357             5960, 6344, 6760, 7208, 7688, 7888, 8432, 8768, 9136, 9776,
358             10208,
359             ],
360             'Q' => [
361             0, 104, 176, 272, 384, 496, 608, 704,
362             880, 1056, 1232, 1440, 1648, 1952, 2088, 2360,
363             2600, 2936, 3176, 3560, 3880, 4096, 4544, 4912,
364             5312, 5744, 6032, 6464, 6968, 7288, 7880, 8264,
365             8920, 9368, 9848, 10288, 10832, 11408, 12016, 12656,
366             13328,
367             ],
368             );
369 6         75 my @aMaxCodeWords = (
370             0, 26, 44, 70, 100, 134, 172, 196, 242, 292,
371             346, 404, 466, 532, 581, 655, 733, 815, 901, 991,
372             1085, 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051,
373             2185, 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532,
374             3706
375             );
376              
377 6         23 my @aRemainBits = (
378             0, 0, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 4,
379             4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0
380             );
381              
382 6 50       19 if ( !$oSelf->{Version} ) { #--- auto version select
383 6         21 for (
384             $oSelf->{Version} = 1 ;
385             $oSelf->{Version} <= 40 ;
386             ++$oSelf->{Version}
387             )
388             {
389             last
390             if ( $hMaxDatBits{ $oSelf->{Ecc} }->[ $oSelf->{Version} ] >=
391 8 100       26 $iTtlBits + $raPlusWords->[ $oSelf->{Version} ] );
392             }
393             }
394             return (
395             $hMaxDatBits{ $oSelf->{Ecc} }->[ $oSelf->{Version} ],
396             $raPlusWords->[ $oSelf->{Version} ],
397             $aMaxCodeWords[ $oSelf->{Version} ],
398 6         58 $aRemainBits[ $oSelf->{Version} ],
399             );
400             }
401              
402             sub _calcMask {
403 6     6   18 my ( $oSelf, $sHorMst, $sVerMst ) = @_;
404 1     1   9 use constant SPCHAR => "\xAA";
  1         2  
  1         14857  
405              
406 6         8 my $iMinDtmScore = 0;
407 6         12 my $iAllMatrix = $oSelf->{MaxModules} * $oSelf->{MaxModules};
408 6         8 my $iMask = 0;
409 6         10 for ( my $i = 0 ; $i < 8 ; ++$i ) {
410 48         180 my $iBit = 1 << $i;
411 48         67 my $iBitR = ( ~$iBit ) & 0xFF;
412              
413 48         96 my $iBitMask = chr($iBit) x $iAllMatrix;
414 48         94 my $iHor = $sHorMst & $iBitMask;
415 48         69 my $iVer = $sVerMst & $iBitMask;
416              
417             my $iVerAnd =
418             ( ( SPCHAR x $oSelf->{MaxModules} ) . $iVer ) &
419 48         186 ( $iVer . ( SPCHAR x $oSelf->{MaxModules} ) );
420             my $iVerOr =
421             ( ( SPCHAR x $oSelf->{MaxModules} ) . $iVer ) |
422 48         149 ( $iVer . ( SPCHAR x $oSelf->{MaxModules} ) );
423              
424 48         74 $iHor = ~$iHor;
425 48         58 $iVer = ~$iVer;
426 48         74 $iVerAnd = ~$iVerAnd;
427 48         76 $iVerOr = ~$iVerOr;
428              
429 48         79 substr( $iVerAnd, $iAllMatrix, 0 ) = SPCHAR;
430 48         73 substr( $iVerOr, $iAllMatrix, 0 ) = SPCHAR;
431 48         94 for ( my $k = ( $oSelf->{MaxModules} - 1 ) ; $k > 0 ; $k-- ) {
432 1024         1428 substr( $iHor, $k * $oSelf->{MaxModules}, 0 ) = SPCHAR;
433 1024         1536 substr( $iVer, $k * $oSelf->{MaxModules}, 0 ) = SPCHAR;
434 1024         1442 substr( $iVerAnd, $k * $oSelf->{MaxModules}, 0 ) = SPCHAR;
435 1024         1930 substr( $iVerOr, $k * $oSelf->{MaxModules}, 0 ) = SPCHAR;
436             }
437              
438 48         175 $iHor .= ( SPCHAR . $iVer );
439 48         93 my $iN1Srch = ( chr(255) x 5 ) . "+|" . ( chr($iBitR) x 5 ) . "+";
440 48         78 my $iN2Srch1 = chr($iBitR) . chr($iBitR) . "+";
441 48         64 my $iN2Srch2 = chr(255) . chr(255) . "+";
442 48         71 my $iN3Srch =
443             chr($iBitR)
444             . chr(255)
445             . chr($iBitR)
446             . chr($iBitR)
447             . chr($iBitR)
448             . chr(255)
449             . chr($iBitR);
450 48         72 my $iN4Srch = chr($iBitR);
451              
452 48         65 my $iHorTmp = $iHor;
453 48         927 my $iDemeritN3 = ( $iHorTmp =~ s/$iN3Srch//g ) * 40;
454 48         1247 my $iDemeritN4 = int(
455             abs(
456             (
457             ( 100 * ( ( $iVer =~ s/$iN4Srch//g ) / ($iAllMatrix) ) ) -
458             50
459             ) / 5
460             )
461             ) * 10;
462              
463 48         71 my $iMatchBeforeNum = length($iVerAnd) + length($iVerOr);
464 48         1928 my $iMatchNum =
465             ( $iVerAnd =~ s/$iN2Srch1//g ) + ( $iVerOr =~ s/$iN2Srch2//g );
466 48         71 my $iMatchAftNum = length($iVerAnd) + length($iVerOr);
467 48         62 my $iDemeritN2 = ( $iMatchBeforeNum - $iMatchAftNum - $iMatchNum ) * 3;
468              
469 48         50 my $iMatchBfrNum = length($iHor);
470 48         4813 $iMatchNum = ( $iHor =~ s/$iN1Srch//g );
471 48         100 $iMatchAftNum = length($iHor);
472 48         67 my $iDemeritN1 = $iMatchBfrNum - $iMatchAftNum - ( $iMatchNum * 2 );
473              
474 48         85 my $iDemeritScore =
475             $iDemeritN1 + $iDemeritN2 + $iDemeritN3 + $iDemeritN4;
476              
477 48 100 100     196 if ( $iDemeritScore <= $iMinDtmScore || $i == 0 ) {
478 22         26 $iMask = $i;
479 22         53 $iMinDtmScore = $iDemeritScore;
480             }
481             }
482 6         17 return $iMask;
483             }
484              
485             sub _cnv8bit {
486 4     4   9 my ( $oSelf, $iDatCnt, $raDatVal, $raDatBit ) = @_;
487              
488 4         9 my $iDatLen = length( $oSelf->{text} );
489 4         8 $raDatVal->[$iDatCnt] = 4; # 8bit byte mode
490 4         8 ++$iDatCnt;
491 4         7 $raDatBit->[$iDatCnt] = 8; # version 1-9
492 4         7 $raDatVal->[$iDatCnt] = $iDatLen;
493 4         8 $oSelf->{WordsPos} = $iDatCnt;
494              
495 4         5 $iDatCnt++;
496 4         14 for ( my $i = 0 ; $i < $iDatLen ; ++$i ) {
497 56         98 $raDatVal->[$iDatCnt] = ord( substr( $oSelf->{text}, $i, 1 ) );
498 56         78 $raDatBit->[$iDatCnt] = 8;
499 56         104 $iDatCnt++;
500             }
501             return (
502 4         22 $iDatCnt,
503             [
504             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
505             8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
506             ]
507             );
508             }
509              
510             sub _cnvAlphaNumeric {
511 0     0   0 my ( $oSelf, $iDatCnt, $raDatVal, $raDatBit ) = @_;
512              
513 0         0 my $iDatLen = length( $oSelf->{text} );
514 0         0 $raDatVal->[$iDatCnt] = 2; # alpha numeric mode
515 0         0 $iDatCnt++;
516 0         0 $raDatVal->[$iDatCnt] = $iDatLen;
517 0         0 $raDatBit->[$iDatCnt] = 9; #version 1-9
518 0         0 $oSelf->{WordsPos} = $iDatCnt;
519 0         0 my %hAlphanumeric = (
520             '0' => 0,
521             '1' => 1,
522             '2' => 2,
523             '3' => 3,
524             '4' => 4,
525             '5' => 5,
526             '6' => 6,
527             '7' => 7,
528             '8' => 8,
529             '9' => 9,
530             'A' => 10,
531             'B' => 11,
532             'C' => 12,
533             'D' => 13,
534             'E' => 14,
535             'F' => 15,
536             'G' => 16,
537             'H' => 17,
538             'I' => 18,
539             'J' => 19,
540             'K' => 20,
541             'L' => 21,
542             'M' => 22,
543             'N' => 23,
544             'O' => 24,
545             'P' => 25,
546             'Q' => 26,
547             'R' => 27,
548             'S' => 28,
549             'T' => 29,
550             'U' => 30,
551             'V' => 31,
552             'W' => 32,
553             'X' => 33,
554             'Y' => 34,
555             'Z' => 35,
556             ' ' => 36,
557             '$' => 37,
558             '%' => 38,
559             '*' => 39,
560             '+' => 40,
561             '-' => 41,
562             '.' => 42,
563             '/' => 43,
564             ':' => 44
565             );
566 0         0 $iDatCnt++;
567              
568 0         0 for ( my $i = 0 ; $i < $iDatLen ; ++$i ) {
569 0 0       0 if ( ( $i % 2 ) == 0 ) {
570             $raDatVal->[$iDatCnt] =
571 0         0 $hAlphanumeric{ substr( $oSelf->{text}, $i, 1 ) };
572 0         0 $raDatBit->[$iDatCnt] = 6;
573             }
574             else {
575             $raDatVal->[$iDatCnt] =
576             $raDatVal->[$iDatCnt] * 45 +
577 0         0 $hAlphanumeric{ substr( $oSelf->{text}, $i, 1 ) };
578 0         0 $raDatBit->[$iDatCnt] = 11;
579 0         0 $iDatCnt++;
580             }
581             }
582 0 0 0     0 ++$iDatCnt if ( ( $raDatBit->[$iDatCnt] || 0 ) > 0 );
583             return (
584 0         0 $iDatCnt,
585             [
586             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
587             2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
588             ]
589             );
590             }
591              
592             sub _cnvNumeric {
593 2     2   5 my ( $oSelf, $iDatCnt, $raDatVal, $raDatBit ) = @_;
594              
595 2         4 my $iDatLen = length( $oSelf->{text} );
596 2         5 $raDatVal->[$iDatCnt] = 1; # numeric mode
597 2         3 $iDatCnt++;
598 2         4 $raDatVal->[$iDatCnt] = $iDatLen; # length
599 2         15 $raDatBit->[$iDatCnt] = 10; # version 1-9
600 2         4 $oSelf->{WordsPos} = $iDatCnt;
601              
602 2         5 $iDatCnt++;
603 2         8 for ( my $i = 0 ; $i < $iDatLen ; ++$i ) {
604 7 100       12 if ( ( $i % 3 ) == 0 ) {
605 3         6 $raDatVal->[$iDatCnt] = substr( $oSelf->{text}, $i, 1 );
606 3         6 $raDatBit->[$iDatCnt] = 4;
607             }
608             else {
609             $raDatVal->[$iDatCnt] =
610 4         7 $raDatVal->[$iDatCnt] * 10 + substr( $oSelf->{text}, $i, 1 );
611 4 100       8 if ( ( $i % 3 ) == 1 ) {
612 2         3 $raDatBit->[$iDatCnt] = 7;
613             }
614             else {
615 2         2 $raDatBit->[$iDatCnt] = 10;
616 2         3 $iDatCnt++;
617             }
618             }
619             }
620 2 100 66     9 ++$iDatCnt
621             if ( defined( $raDatBit->[$iDatCnt] ) && ( $raDatBit->[$iDatCnt] > 0 ) );
622             return (
623 2         11 $iDatCnt,
624             [
625             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
626             2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
627             ]
628             );
629             }
630              
631             sub _calcFrm {
632 882     882   1036 my ( $iV, $iR, $iC ) = @_;
633 882         879 my $iPosR = $iV * 4 + 10;
634 882 100 100     3407 if ( $iR == 0 ) {
    100 66        
    100 100        
    100          
    100          
    100          
    100          
    100          
    100          
    100          
    100          
    100          
635 42 100 66     265 return 1
      66        
      66        
636             if ( ( ( $iC >= 0 ) and ( $iC <= 6 ) )
637             or ( ( $iC >= $iPosR ) and ( $iC <= ( $iPosR + 6 ) ) ) );
638             }
639             elsif ( $iR == 6 ) {
640 42 100 66     125 return 1
      100        
      66        
      66        
641             if ( ( ( $iC % 2 ) == 0 )
642             or ( ( $iC >= 0 ) and ( $iC <= 6 ) )
643             or ( ( $iC >= $iPosR ) and ( $iC <= ( $iPosR + 6 ) ) ) );
644             }
645             elsif ( ( $iR == 1 ) or ( $iR == 5 ) ) {
646 84 100 100     332 return 1
      100        
      100        
647             if ( ( $iC == 0 )
648             or ( $iC == 6 )
649             or ( $iC == $iPosR )
650             or ( $iC == $iPosR + 6 ) );
651             }
652             elsif ( ( $iR >= 2 ) and ( $iR <= 4 ) ) {
653 126 100 100     598 return 1
      100        
      100        
      100        
      100        
      100        
      100        
654             if ( ( $iC == 0 )
655             or ( ( $iC >= 2 ) and ( $iC <= 4 ) )
656             or ( $iC == 6 )
657             or ( $iC == $iPosR )
658             or ( ( $iC >= ( $iPosR + 2 ) ) and ( $iC <= ( $iPosR + 4 ) ) )
659             or ( $iC == $iPosR + 6 ) );
660             }
661             elsif ( ( $iR == ( $iPosR - 2 ) ) ) {
662 42 100       49 return 1 if ( $iC == 6 );
663 40 50       46 if ( $iV > 1 ) {
664 0 0 0     0 return 1
665             if ( ( $iC >= ( $iPosR - 2 ) )
666             and ( $iC <= ( $iPosR + 2 ) ) );
667             }
668             }
669             elsif ( ( $iR == ( $iPosR - 1 ) ) ) {
670 42 100       67 return 1 if ( $iC == 8 );
671 40 50       46 if ( $iV > 1 ) {
672 0 0 0     0 return 1
673             if ( ( $iC == ( $iPosR - 2 ) )
674             or ( $iC == ( $iPosR + 2 ) ) );
675             }
676             }
677             elsif ( $iR == $iPosR ) {
678 42 100 66     115 return 1 if ( ( ( $iC >= 0 ) and ( $iC <= 6 ) ) );
679 28 50       41 if ( $iV > 1 ) {
680 0 0 0     0 return 1
      0        
681             if ( ( $iC == ( $iPosR - 2 ) )
682             or ( $iC == $iPosR )
683             or ( $iC == ( $iPosR + 2 ) ) );
684             }
685             }
686             elsif ( $iR == ( $iPosR + 1 ) ) {
687 42 100 100     106 return 1 if ( ( $iC == 0 ) or ( $iC == 6 ) );
688 38 50       58 if ( $iV > 1 ) {
689 0 0 0     0 return 1
690             if ( ( $iC == ( $iPosR - 2 ) )
691             or ( $iC == ( $iPosR + 2 ) ) );
692             }
693             }
694             elsif ( $iR == ( $iPosR + 2 ) ) {
695 42 100 100     193 return 1
      100        
      100        
696             if ( ( $iC == 0 )
697             or ( ( $iC >= 2 ) and ( $iC <= 4 ) )
698             or ( $iC == 6 ) );
699 32 50       44 if ( $iV > 1 ) {
700 0 0 0     0 return 1
701             if ( ( $iC >= ( $iPosR - 2 ) )
702             and ( $iC <= ( $iPosR + 2 ) ) );
703             }
704             }
705             elsif ( ( $iR > ( $iPosR + 2 ) ) and ( $iR <= ( $iPosR + 4 ) ) ) {
706 84 100 100     411 return 1
      100        
      100        
707             if ( ( $iC == 0 )
708             or ( ( $iC >= 2 ) and ( $iC <= 4 ) )
709             or ( $iC == 6 ) );
710             }
711             elsif ( $iR == ( $iPosR + 5 ) ) {
712 42 100 100     120 return 1
713             if ( ( $iC == 0 ) or ( $iC == 6 ) );
714             }
715             elsif ( $iR == ( $iPosR + 6 ) ) {
716 42 100 66     153 return 1 if ( ( $iC >= 0 ) and ( $iC <= 6 ) );
717             }
718             else {
719 210 100 100     365 return 1 if ( ( ( $iR % 2 ) == 0 ) and ( $iC == 6 ) );
720             }
721              
722             #2. Depend on Version
723 670 50 33     2688 return 0 if ( ( $iV >= 1 ) and ( $iV <= 6 ) );
724 0 0         if ( $iV == 7 ) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
725 0 0 0       if ( $iR == 35 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
726 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
727             }
728             elsif ( $iR == 3 ) {
729 0 0 0       return ( ( ( $iC >= 35 ) and ( $iC <= 36 ) ) ) ? 1 : 0;
730             }
731             elsif ( $iR == 36 ) {
732             return (
733 0 0 0       ( $iC == 0 )
734             or ( ( $iC >= 3 ) and ( $iC <= 4 ) )
735             or ( ( $iC >= 20 ) and ( $iC <= 24 ) )
736             ) ? 1 : 0;
737             }
738             elsif ( $iR == 4 ) {
739             return (
740 0 0 0       ( ( $iC >= 20 ) and ( $iC <= 24 ) )
741             or ( ( $iC >= 34 ) and ( $iC <= 36 ) )
742             ) ? 1 : 0;
743             }
744             elsif ( $iR == 38 ) {
745 0 0 0       return ( ( $iC == 20 ) or ( $iC == 22 ) or ( $iC == 24 ) ) ? 1 : 0;
746             }
747             elsif ( $iR == 22 ) {
748             return (
749 0 0 0       ( $iC == 4 )
750             or ( $iC == 8 )
751             or ( $iC == 20 )
752             or ( $iC == 22 )
753             or ( $iC == 24 )
754             or ( $iC == 36 )
755             or ( $iC == 38 )
756             or ( $iC == 40 )
757             ) ? 1 : 0;
758             }
759             elsif ( $iR == 34 ) {
760 0 0         return ( ( $iC == 4 ) ) ? 1 : 0;
761             }
762             elsif ( $iR == 0 ) {
763 0 0         return ( ( $iC == 36 ) ) ? 1 : 0;
764             }
765             elsif ( ( $iR == 8 ) or ( $iR == 40 ) ) {
766 0 0 0       return ( ( ( $iC >= 20 ) and ( $iC <= 24 ) ) ) ? 1 : 0;
767             }
768             elsif ( ( $iR == 21 ) or ( $iR == 23 ) ) {
769             return (
770 0 0 0       ( $iC == 4 )
771             or ( $iC == 8 )
772             or ( $iC == 20 )
773             or ( $iC == 24 )
774             or ( $iC == 36 )
775             or ( $iC == 40 )
776             ) ? 1 : 0;
777             }
778             elsif ( ( $iR == 1 ) or ( $iR == 2 ) ) {
779 0 0         return ( ( $iC == 35 ) ) ? 1 : 0;
780             }
781             elsif ( ( $iR == 20 ) or ( $iR == 24 ) ) {
782             return (
783 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
784             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
785             or ( ( $iC >= 20 ) and ( $iC <= 24 ) )
786             or ( ( $iC >= 36 ) and ( $iC <= 40 ) )
787             ) ? 1 : 0;
788             }
789             elsif ( ( $iR == 5 ) or ( $iR == 7 ) or ( $iR == 37 ) or ( $iR == 39 ) )
790             {
791 0 0 0       return ( ( $iC == 20 ) or ( $iC == 24 ) ) ? 1 : 0;
792             }
793 0           return 0;
794             }
795             elsif ( $iV == 8 ) {
796 0 0 0       if ( $iR == 40 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
797             return (
798 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 2 ) )
799             or ( ( $iC >= 22 ) and ( $iC <= 26 ) )
800             ) ? 1 : 0;
801             }
802             elsif ( $iR == 0 ) {
803 0 0         return ( ( $iC == 40 ) ) ? 1 : 0;
804             }
805             elsif ( $iR == 38 ) {
806 0 0 0       return ( ( $iC == 1 ) or ( $iC == 5 ) ) ? 1 : 0;
807             }
808             elsif ( $iR == 5 ) {
809 0 0 0       return ( ( $iC == 22 ) or ( $iC == 26 ) or ( $iC == 38 ) ) ? 1 : 0;
810             }
811             elsif ( $iR == 24 ) {
812             return (
813 0 0 0       ( $iC == 4 )
814             or ( $iC == 8 )
815             or ( $iC == 22 )
816             or ( $iC == 24 )
817             or ( $iC == 26 )
818             or ( $iC == 40 )
819             or ( $iC == 42 )
820             or ( $iC == 44 )
821             ) ? 1 : 0;
822             }
823             elsif ( $iR == 39 ) {
824 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 3 ) ) ) ? 1 : 0;
825             }
826             elsif ( $iR == 1 ) {
827 0 0 0       return ( ( ( $iC >= 38 ) and ( $iC <= 40 ) ) ) ? 1 : 0;
828             }
829             elsif ( $iR == 2 ) {
830 0 0 0       return ( ( ( $iC >= 39 ) and ( $iC <= 40 ) ) ) ? 1 : 0;
831             }
832             elsif ( $iR == 42 ) {
833 0 0 0       return ( ( $iC == 22 ) or ( $iC == 24 ) or ( $iC == 26 ) ) ? 1 : 0;
834             }
835             elsif ( $iR == 3 ) {
836 0 0         return ( ( $iC == 39 ) ) ? 1 : 0;
837             }
838             elsif ( ( $iR == 23 ) or ( $iR == 25 ) ) {
839             return (
840 0 0 0       ( $iC == 4 )
841             or ( $iC == 8 )
842             or ( $iC == 22 )
843             or ( $iC == 26 )
844             or ( $iC == 40 )
845             or ( $iC == 44 )
846             ) ? 1 : 0;
847             }
848             elsif ( ( $iR == 22 ) or ( $iR == 26 ) ) {
849             return (
850 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
851             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
852             or ( ( $iC >= 22 ) and ( $iC <= 26 ) )
853             or ( ( $iC >= 40 ) and ( $iC <= 44 ) )
854             ) ? 1 : 0;
855             }
856             elsif ( ( $iR == 7 ) or ( $iR == 41 ) or ( $iR == 43 ) ) {
857 0 0 0       return ( ( $iC == 22 ) or ( $iC == 26 ) ) ? 1 : 0;
858             }
859             elsif ( ( $iR == 4 ) or ( $iR == 8 ) or ( $iR == 44 ) ) {
860 0 0 0       return ( ( ( $iC >= 22 ) and ( $iC <= 26 ) ) ) ? 1 : 0;
861             }
862 0           return 0;
863             }
864             elsif ( $iV == 9 ) {
865 0 0 0       if ( $iR == 26 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
866             return (
867 0 0 0       ( $iC == 4 )
868             or ( $iC == 8 )
869             or ( $iC == 24 )
870             or ( $iC == 26 )
871             or ( $iC == 28 )
872             or ( $iC == 44 )
873             or ( $iC == 46 )
874             or ( $iC == 48 )
875             ) ? 1 : 0;
876             }
877             elsif ( $iR == 46 ) {
878 0 0 0       return ( ( $iC == 24 ) or ( $iC == 26 ) or ( $iC == 28 ) ) ? 1 : 0;
879             }
880             elsif ( $iR == 44 ) {
881 0 0 0       return ( ( $iC == 3 ) or ( ( $iC >= 24 ) and ( $iC <= 28 ) ) )
882             ? 1
883             : 0;
884             }
885             elsif ( $iR == 5 ) {
886 0 0 0       return ( ( $iC == 24 ) or ( $iC == 28 ) or ( $iC == 42 ) ) ? 1 : 0;
887             }
888             elsif ( $iR == 0 ) {
889 0 0         return ( ( $iC == 42 ) ) ? 1 : 0;
890             }
891             elsif ( $iR == 1 ) {
892 0 0 0       return ( ( ( $iC >= 42 ) and ( $iC <= 43 ) ) ) ? 1 : 0;
893             }
894             elsif ( $iR == 2 ) {
895 0 0         return ( ( $iC == 43 ) ) ? 1 : 0;
896             }
897             elsif ( $iR == 43 ) {
898 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 2 ) ) ) ? 1 : 0;
899             }
900             elsif ( $iR == 4 ) {
901 0 0 0       return ( ( ( $iC >= 24 ) and ( $iC <= 28 ) ) or ( $iC == 42 ) )
902             ? 1
903             : 0;
904             }
905             elsif ( $iR == 3 ) {
906 0 0 0       return ( ( $iC == 42 ) or ( $iC == 44 ) ) ? 1 : 0;
907             }
908             elsif ( $iR == 42 ) {
909             return (
910 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
911             or ( ( $iC >= 3 ) and ( $iC <= 5 ) )
912             ) ? 1 : 0;
913             }
914             elsif ( ( $iR == 24 ) or ( $iR == 28 ) ) {
915             return (
916 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
917             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
918             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
919             or ( ( $iC >= 44 ) and ( $iC <= 48 ) )
920             ) ? 1 : 0;
921             }
922             elsif ( ( $iR == 25 ) or ( $iR == 27 ) ) {
923             return (
924 0 0 0       ( $iC == 4 )
925             or ( $iC == 8 )
926             or ( $iC == 24 )
927             or ( $iC == 28 )
928             or ( $iC == 44 )
929             or ( $iC == 48 )
930             ) ? 1 : 0;
931             }
932             elsif ( ( $iR == 8 ) or ( $iR == 48 ) ) {
933 0 0 0       return ( ( ( $iC >= 24 ) and ( $iC <= 28 ) ) ) ? 1 : 0;
934             }
935             elsif ( ( $iR == 7 ) or ( $iR == 45 ) or ( $iR == 47 ) ) {
936 0 0 0       return ( ( $iC == 24 ) or ( $iC == 28 ) ) ? 1 : 0;
937             }
938 0           return 0;
939             }
940             elsif ( $iV == 10 ) {
941 0 0 0       if ( $iR == 28 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
942             return (
943 0 0 0       ( $iC == 4 )
944             or ( $iC == 8 )
945             or ( $iC == 26 )
946             or ( $iC == 28 )
947             or ( $iC == 30 )
948             or ( $iC == 48 )
949             or ( $iC == 50 )
950             or ( $iC == 52 )
951             ) ? 1 : 0;
952             }
953             elsif ( $iR == 5 ) {
954 0 0 0       return ( ( $iC == 26 ) or ( $iC == 30 ) or ( $iC == 46 ) ) ? 1 : 0;
955             }
956             elsif ( $iR == 46 ) {
957 0 0 0       return ( ( $iC == 0 ) or ( $iC == 2 ) or ( $iC == 5 ) ) ? 1 : 0;
958             }
959             elsif ( $iR == 50 ) {
960 0 0 0       return ( ( $iC == 26 ) or ( $iC == 28 ) or ( $iC == 30 ) ) ? 1 : 0;
961             }
962             elsif ( $iR == 4 ) {
963 0 0 0       return ( ( ( $iC >= 26 ) and ( $iC <= 30 ) ) or ( $iC == 47 ) )
964             ? 1
965             : 0;
966             }
967             elsif ( $iR == 47 ) {
968 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
969             }
970             elsif ( ( $iR == 27 ) or ( $iR == 29 ) ) {
971             return (
972 0 0 0       ( $iC == 4 )
973             or ( $iC == 8 )
974             or ( $iC == 26 )
975             or ( $iC == 30 )
976             or ( $iC == 48 )
977             or ( $iC == 52 )
978             ) ? 1 : 0;
979             }
980             elsif ( ( $iR == 0 ) or ( $iR == 2 ) ) {
981 0 0 0       return ( ( ( $iC >= 46 ) and ( $iC <= 47 ) ) ) ? 1 : 0;
982             }
983             elsif ( ( $iR == 1 ) or ( $iR == 3 ) ) {
984 0 0         return ( ( $iC == 47 ) ) ? 1 : 0;
985             }
986             elsif ( ( $iR == 26 ) or ( $iR == 30 ) ) {
987             return (
988 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
989             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
990             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
991             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
992             ) ? 1 : 0;
993             }
994             elsif ( ( $iR == 7 ) or ( $iR == 49 ) or ( $iR == 51 ) ) {
995 0 0 0       return ( ( $iC == 26 ) or ( $iC == 30 ) ) ? 1 : 0;
996             }
997             elsif ( ( $iR == 8 ) or ( $iR == 48 ) or ( $iR == 52 ) ) {
998 0 0 0       return ( ( ( $iC >= 26 ) and ( $iC <= 30 ) ) ) ? 1 : 0;
999             }
1000 0           return 0;
1001             }
1002             elsif ( $iV == 11 ) {
1003 0 0 0       if ( $iR == 50 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1004 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 5 ) ) ) ? 1 : 0;
1005             }
1006             elsif ( $iR == 52 ) {
1007             return (
1008 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 3 ) )
1009             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1010             ) ? 1 : 0;
1011             }
1012             elsif ( $iR == 2 ) {
1013 0 0 0       return ( ( ( $iC >= 50 ) and ( $iC <= 52 ) ) ) ? 1 : 0;
1014             }
1015             elsif ( $iR == 30 ) {
1016             return (
1017 0 0 0       ( $iC == 4 )
1018             or ( $iC == 8 )
1019             or ( $iC == 28 )
1020             or ( $iC == 30 )
1021             or ( $iC == 32 )
1022             or ( $iC == 52 )
1023             or ( $iC == 54 )
1024             or ( $iC == 56 )
1025             ) ? 1 : 0;
1026             }
1027             elsif ( $iR == 54 ) {
1028 0 0 0       return ( ( $iC == 28 ) or ( $iC == 30 ) or ( $iC == 32 ) ) ? 1 : 0;
1029             }
1030             elsif ( $iR == 4 ) {
1031             return (
1032 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1033             or ( ( $iC >= 50 ) and ( $iC <= 51 ) )
1034             ) ? 1 : 0;
1035             }
1036             elsif ( $iR == 51 ) {
1037 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 2 ) ) or ( $iC == 4 ) )
1038             ? 1
1039             : 0;
1040             }
1041             elsif ( $iR == 5 ) {
1042 0 0 0       return ( ( $iC == 28 ) or ( $iC == 32 ) or ( $iC == 50 ) ) ? 1 : 0;
1043             }
1044             elsif ( $iR == 3 ) {
1045 0 0 0       return ( ( $iC == 50 ) or ( $iC == 52 ) ) ? 1 : 0;
1046             }
1047             elsif ( ( $iR == 0 ) or ( $iR == 1 ) ) {
1048 0 0 0       return ( ( ( $iC >= 51 ) and ( $iC <= 52 ) ) ) ? 1 : 0;
1049             }
1050             elsif ( ( $iR == 29 ) or ( $iR == 31 ) ) {
1051             return (
1052 0 0 0       ( $iC == 4 )
1053             or ( $iC == 8 )
1054             or ( $iC == 28 )
1055             or ( $iC == 32 )
1056             or ( $iC == 52 )
1057             or ( $iC == 56 )
1058             ) ? 1 : 0;
1059             }
1060             elsif ( ( $iR == 28 ) or ( $iR == 32 ) ) {
1061             return (
1062 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1063             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1064             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1065             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
1066             ) ? 1 : 0;
1067             }
1068             elsif ( ( $iR == 8 ) or ( $iR == 56 ) ) {
1069 0 0 0       return ( ( ( $iC >= 28 ) and ( $iC <= 32 ) ) ) ? 1 : 0;
1070             }
1071             elsif ( ( $iR == 7 ) or ( $iR == 53 ) or ( $iR == 55 ) ) {
1072 0 0 0       return ( ( $iC == 28 ) or ( $iC == 32 ) ) ? 1 : 0;
1073             }
1074 0           return 0;
1075             }
1076             elsif ( $iV == 12 ) {
1077 0 0 0       if ( $iR == 55 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1078 0 0 0       return ( ( $iC == 0 ) or ( $iC == 3 ) ) ? 1 : 0;
1079             }
1080             elsif ( $iR == 56 ) {
1081             return (
1082 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 2 ) )
1083             or ( $iC == 4 )
1084             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
1085             ) ? 1 : 0;
1086             }
1087             elsif ( $iR == 5 ) {
1088 0 0 0       return ( ( $iC == 30 ) or ( $iC == 34 ) or ( $iC == 54 ) ) ? 1 : 0;
1089             }
1090             elsif ( $iR == 1 ) {
1091 0 0         return ( ( $iC == 56 ) ) ? 1 : 0;
1092             }
1093             elsif ( $iR == 32 ) {
1094             return (
1095 0 0 0       ( $iC == 4 )
1096             or ( $iC == 8 )
1097             or ( $iC == 30 )
1098             or ( $iC == 32 )
1099             or ( $iC == 34 )
1100             or ( $iC == 56 )
1101             or ( $iC == 58 )
1102             or ( $iC == 60 )
1103             ) ? 1 : 0;
1104             }
1105             elsif ( $iR == 4 ) {
1106 0 0 0       return ( ( ( $iC >= 30 ) and ( $iC <= 34 ) ) or ( $iC == 56 ) )
1107             ? 1
1108             : 0;
1109             }
1110             elsif ( $iR == 3 ) {
1111 0 0 0       return ( ( ( $iC >= 54 ) and ( $iC <= 55 ) ) ) ? 1 : 0;
1112             }
1113             elsif ( $iR == 2 ) {
1114 0 0 0       return ( ( $iC == 54 ) or ( $iC == 56 ) ) ? 1 : 0;
1115             }
1116             elsif ( $iR == 54 ) {
1117 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 3 ) ) or ( $iC == 5 ) )
1118             ? 1
1119             : 0;
1120             }
1121             elsif ( $iR == 0 ) {
1122 0 0         return ( ( $iC == 55 ) ) ? 1 : 0;
1123             }
1124             elsif ( $iR == 58 ) {
1125 0 0 0       return ( ( $iC == 30 ) or ( $iC == 32 ) or ( $iC == 34 ) ) ? 1 : 0;
1126             }
1127             elsif ( ( $iR == 30 ) or ( $iR == 34 ) ) {
1128             return (
1129 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1130             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1131             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
1132             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
1133             ) ? 1 : 0;
1134             }
1135             elsif ( ( $iR == 8 ) or ( $iR == 60 ) ) {
1136 0 0 0       return ( ( ( $iC >= 30 ) and ( $iC <= 34 ) ) ) ? 1 : 0;
1137             }
1138             elsif ( ( $iR == 31 ) or ( $iR == 33 ) ) {
1139             return (
1140 0 0 0       ( $iC == 4 )
1141             or ( $iC == 8 )
1142             or ( $iC == 30 )
1143             or ( $iC == 34 )
1144             or ( $iC == 56 )
1145             or ( $iC == 60 )
1146             ) ? 1 : 0;
1147             }
1148             elsif ( ( $iR == 7 ) or ( $iR == 57 ) or ( $iR == 59 ) ) {
1149 0 0 0       return ( ( $iC == 30 ) or ( $iC == 34 ) ) ? 1 : 0;
1150             }
1151 0           return 0;
1152             }
1153             elsif ( $iV == 13 ) {
1154 0 0 0       if ( $iR == 3 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1155 0 0         return ( ( $iC == 60 ) ) ? 1 : 0;
1156             }
1157             elsif ( $iR == 58 ) {
1158             return (
1159 0 0 0       ( $iC == 0 )
1160             or ( $iC == 2 )
1161             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1162             ) ? 1 : 0;
1163             }
1164             elsif ( $iR == 2 ) {
1165 0 0         return ( ( $iC == 58 ) ) ? 1 : 0;
1166             }
1167             elsif ( $iR == 62 ) {
1168 0 0 0       return ( ( $iC == 32 ) or ( $iC == 34 ) or ( $iC == 36 ) ) ? 1 : 0;
1169             }
1170             elsif ( $iR == 60 ) {
1171             return (
1172 0 0 0       ( $iC == 0 )
1173             or ( ( $iC >= 3 ) and ( $iC <= 4 ) )
1174             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1175             ) ? 1 : 0;
1176             }
1177             elsif ( $iR == 34 ) {
1178             return (
1179 0 0 0       ( $iC == 4 )
1180             or ( $iC == 8 )
1181             or ( $iC == 32 )
1182             or ( $iC == 34 )
1183             or ( $iC == 36 )
1184             or ( $iC == 60 )
1185             or ( $iC == 62 )
1186             or ( $iC == 64 )
1187             ) ? 1 : 0;
1188             }
1189             elsif ( $iR == 0 ) {
1190 0 0 0       return ( ( ( $iC >= 58 ) and ( $iC <= 60 ) ) ) ? 1 : 0;
1191             }
1192             elsif ( $iR == 4 ) {
1193             return (
1194 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1195             or ( $iC == 58 )
1196             or ( $iC == 60 )
1197             ) ? 1 : 0;
1198             }
1199             elsif ( $iR == 59 ) {
1200 0 0         return ( ( $iC == 0 ) ) ? 1 : 0;
1201             }
1202             elsif ( $iR == 5 ) {
1203 0 0 0       return ( ( $iC == 32 ) or ( $iC == 36 ) or ( $iC == 58 ) ) ? 1 : 0;
1204             }
1205             elsif ( ( $iR == 32 ) or ( $iR == 36 ) ) {
1206             return (
1207 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1208             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1209             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1210             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
1211             ) ? 1 : 0;
1212             }
1213             elsif ( ( $iR == 33 ) or ( $iR == 35 ) ) {
1214             return (
1215 0 0 0       ( $iC == 4 )
1216             or ( $iC == 8 )
1217             or ( $iC == 32 )
1218             or ( $iC == 36 )
1219             or ( $iC == 60 )
1220             or ( $iC == 64 )
1221             ) ? 1 : 0;
1222             }
1223             elsif ( ( $iR == 8 ) or ( $iR == 64 ) ) {
1224 0 0 0       return ( ( ( $iC >= 32 ) and ( $iC <= 36 ) ) ) ? 1 : 0;
1225             }
1226             elsif ( ( $iR == 7 ) or ( $iR == 61 ) or ( $iR == 63 ) ) {
1227 0 0 0       return ( ( $iC == 32 ) or ( $iC == 36 ) ) ? 1 : 0;
1228             }
1229 0           return 0;
1230             }
1231             elsif ( $iV == 14 ) {
1232 0 0 0       if ( $iR == 63 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
1233 0 0 0       return ( ( ( $iC >= 3 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
1234             }
1235             elsif ( $iR == 4 ) {
1236             return (
1237 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1238             or ( ( $iC >= 44 ) and ( $iC <= 48 ) )
1239             or ( ( $iC >= 63 ) and ( $iC <= 64 ) )
1240             ) ? 1 : 0;
1241             }
1242             elsif ( $iR == 66 ) {
1243             return (
1244 0 0 0       ( $iC == 24 )
1245             or ( $iC == 26 )
1246             or ( $iC == 28 )
1247             or ( $iC == 44 )
1248             or ( $iC == 46 )
1249             or ( $iC == 48 )
1250             ) ? 1 : 0;
1251             }
1252             elsif ( $iR == 3 ) {
1253 0 0 0       return ( ( ( $iC >= 62 ) and ( $iC <= 63 ) ) ) ? 1 : 0;
1254             }
1255             elsif ( $iR == 64 ) {
1256             return (
1257 0 0 0       ( $iC == 0 )
1258             or ( $iC == 4 )
1259             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1260             or ( ( $iC >= 44 ) and ( $iC <= 48 ) )
1261             ) ? 1 : 0;
1262             }
1263             elsif ( $iR == 5 ) {
1264             return (
1265 0 0 0       ( $iC == 24 )
1266             or ( $iC == 28 )
1267             or ( $iC == 44 )
1268             or ( $iC == 48 )
1269             or ( $iC == 62 )
1270             ) ? 1 : 0;
1271             }
1272             elsif ( $iR == 0 ) {
1273 0 0 0       return ( ( $iC == 62 ) or ( $iC == 64 ) ) ? 1 : 0;
1274             }
1275             elsif ( $iR == 1 ) {
1276 0 0         return ( ( $iC == 62 ) ) ? 1 : 0;
1277             }
1278             elsif ( $iR == 62 ) {
1279             return (
1280 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
1281             or ( $iC == 3 )
1282             or ( $iC == 5 )
1283             ) ? 1 : 0;
1284             }
1285             elsif ( ( $iR == 8 ) or ( $iR == 68 ) ) {
1286             return (
1287 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1288             or ( ( $iC >= 44 ) and ( $iC <= 48 ) )
1289             ) ? 1 : 0;
1290             }
1291             elsif ( ( $iR == 26 ) or ( $iR == 46 ) ) {
1292             return (
1293 0 0 0       ( $iC == 4 )
1294             or ( $iC == 8 )
1295             or ( $iC == 24 )
1296             or ( $iC == 26 )
1297             or ( $iC == 28 )
1298             or ( $iC == 44 )
1299             or ( $iC == 46 )
1300             or ( $iC == 48 )
1301             or ( $iC == 64 )
1302             or ( $iC == 66 )
1303             or ( $iC == 68 )
1304             ) ? 1 : 0;
1305             }
1306             elsif ( ( $iR == 7 ) or ( $iR == 65 ) or ( $iR == 67 ) ) {
1307             return (
1308 0 0 0       ( $iC == 24 )
1309             or ( $iC == 28 )
1310             or ( $iC == 44 )
1311             or ( $iC == 48 )
1312             ) ? 1 : 0;
1313             }
1314             elsif (( $iR == 25 )
1315             or ( $iR == 27 )
1316             or ( $iR == 45 )
1317             or ( $iR == 47 ) )
1318             {
1319             return (
1320 0 0 0       ( $iC == 4 )
1321             or ( $iC == 8 )
1322             or ( $iC == 24 )
1323             or ( $iC == 28 )
1324             or ( $iC == 44 )
1325             or ( $iC == 48 )
1326             or ( $iC == 64 )
1327             or ( $iC == 68 )
1328             ) ? 1 : 0;
1329             }
1330             elsif (( $iR == 24 )
1331             or ( $iR == 28 )
1332             or ( $iR == 44 )
1333             or ( $iR == 48 ) )
1334             {
1335             return (
1336 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1337             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1338             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1339             or ( ( $iC >= 44 ) and ( $iC <= 48 ) )
1340             or ( ( $iC >= 64 ) and ( $iC <= 68 ) )
1341             ) ? 1 : 0;
1342             }
1343 0           return 0;
1344             }
1345             elsif ( $iV == 15 ) {
1346 0 0 0       if ( $iR == 66 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
1347 0 0 0       return ( ( $iC == 1 ) or ( ( $iC >= 4 ) and ( $iC <= 5 ) ) )
1348             ? 1
1349             : 0;
1350             }
1351             elsif ( $iR == 4 ) {
1352             return (
1353 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1354             or ( ( $iC >= 46 ) and ( $iC <= 50 ) )
1355             or ( ( $iC >= 66 ) and ( $iC <= 68 ) )
1356             ) ? 1 : 0;
1357             }
1358             elsif ( $iR == 68 ) {
1359             return (
1360 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 4 ) )
1361             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1362             or ( ( $iC >= 46 ) and ( $iC <= 50 ) )
1363             ) ? 1 : 0;
1364             }
1365             elsif ( $iR == 67 ) {
1366 0 0         return ( ( $iC == 4 ) ) ? 1 : 0;
1367             }
1368             elsif ( $iR == 1 ) {
1369 0 0 0       return ( ( $iC == 66 ) or ( $iC == 68 ) ) ? 1 : 0;
1370             }
1371             elsif ( $iR == 70 ) {
1372             return (
1373 0 0 0       ( $iC == 24 )
1374             or ( $iC == 26 )
1375             or ( $iC == 28 )
1376             or ( $iC == 46 )
1377             or ( $iC == 48 )
1378             or ( $iC == 50 )
1379             ) ? 1 : 0;
1380             }
1381             elsif ( $iR == 5 ) {
1382             return (
1383 0 0 0       ( $iC == 24 )
1384             or ( $iC == 28 )
1385             or ( $iC == 46 )
1386             or ( $iC == 50 )
1387             or ( $iC == 66 )
1388             ) ? 1 : 0;
1389             }
1390             elsif ( ( $iR == 2 ) or ( $iR == 3 ) ) {
1391 0 0         return ( ( $iC == 68 ) ) ? 1 : 0;
1392             }
1393             elsif ( ( $iR == 8 ) or ( $iR == 72 ) ) {
1394             return (
1395 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1396             or ( ( $iC >= 46 ) and ( $iC <= 50 ) )
1397             ) ? 1 : 0;
1398             }
1399             elsif ( ( $iR == 26 ) or ( $iR == 48 ) ) {
1400             return (
1401 0 0 0       ( $iC == 4 )
1402             or ( $iC == 8 )
1403             or ( $iC == 24 )
1404             or ( $iC == 26 )
1405             or ( $iC == 28 )
1406             or ( $iC == 46 )
1407             or ( $iC == 48 )
1408             or ( $iC == 50 )
1409             or ( $iC == 68 )
1410             or ( $iC == 70 )
1411             or ( $iC == 72 )
1412             ) ? 1 : 0;
1413             }
1414             elsif ( ( $iR == 7 ) or ( $iR == 69 ) or ( $iR == 71 ) ) {
1415             return (
1416 0 0 0       ( $iC == 24 )
1417             or ( $iC == 28 )
1418             or ( $iC == 46 )
1419             or ( $iC == 50 )
1420             ) ? 1 : 0;
1421             }
1422             elsif (( $iR == 24 )
1423             or ( $iR == 28 )
1424             or ( $iR == 46 )
1425             or ( $iR == 50 ) )
1426             {
1427             return (
1428 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1429             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1430             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1431             or ( ( $iC >= 46 ) and ( $iC <= 50 ) )
1432             or ( ( $iC >= 68 ) and ( $iC <= 72 ) )
1433             ) ? 1 : 0;
1434             }
1435             elsif (( $iR == 25 )
1436             or ( $iR == 27 )
1437             or ( $iR == 47 )
1438             or ( $iR == 49 ) )
1439             {
1440             return (
1441 0 0 0       ( $iC == 4 )
1442             or ( $iC == 8 )
1443             or ( $iC == 24 )
1444             or ( $iC == 28 )
1445             or ( $iC == 46 )
1446             or ( $iC == 50 )
1447             or ( $iC == 68 )
1448             or ( $iC == 72 )
1449             ) ? 1 : 0;
1450             }
1451 0           return 0;
1452             }
1453             elsif ( $iV == 16 ) {
1454 0 0 0       if ( $iR == 74 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
1455             return (
1456 0 0 0       ( $iC == 24 )
1457             or ( $iC == 26 )
1458             or ( $iC == 28 )
1459             or ( $iC == 48 )
1460             or ( $iC == 50 )
1461             or ( $iC == 52 )
1462             ) ? 1 : 0;
1463             }
1464             elsif ( $iR == 70 ) {
1465 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 3 ) ) ) ? 1 : 0;
1466             }
1467             elsif ( $iR == 72 ) {
1468             return (
1469 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 3 ) )
1470             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1471             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
1472             ) ? 1 : 0;
1473             }
1474             elsif ( $iR == 1 ) {
1475 0 0 0       return ( ( ( $iC >= 70 ) and ( $iC <= 72 ) ) ) ? 1 : 0;
1476             }
1477             elsif ( $iR == 71 ) {
1478 0 0 0       return ( ( $iC == 1 ) or ( $iC == 5 ) ) ? 1 : 0;
1479             }
1480             elsif ( $iR == 5 ) {
1481             return (
1482 0 0 0       ( $iC == 24 )
1483             or ( $iC == 28 )
1484             or ( $iC == 48 )
1485             or ( $iC == 52 )
1486             or ( $iC == 71 )
1487             ) ? 1 : 0;
1488             }
1489             elsif ( ( $iR == 26 ) or ( $iR == 50 ) ) {
1490             return (
1491 0 0 0       ( $iC == 4 )
1492             or ( $iC == 8 )
1493             or ( $iC == 24 )
1494             or ( $iC == 26 )
1495             or ( $iC == 28 )
1496             or ( $iC == 48 )
1497             or ( $iC == 50 )
1498             or ( $iC == 52 )
1499             or ( $iC == 72 )
1500             or ( $iC == 74 )
1501             or ( $iC == 76 )
1502             ) ? 1 : 0;
1503             }
1504             elsif ( ( $iR == 2 ) or ( $iR == 3 ) ) {
1505 0 0 0       return ( ( $iC == 70 ) or ( $iC == 72 ) ) ? 1 : 0;
1506             }
1507             elsif ( ( $iR == 4 ) or ( $iR == 8 ) or ( $iR == 76 ) ) {
1508             return (
1509 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1510             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
1511             ) ? 1 : 0;
1512             }
1513             elsif ( ( $iR == 7 ) or ( $iR == 73 ) or ( $iR == 75 ) ) {
1514             return (
1515 0 0 0       ( $iC == 24 )
1516             or ( $iC == 28 )
1517             or ( $iC == 48 )
1518             or ( $iC == 52 )
1519             ) ? 1 : 0;
1520             }
1521             elsif (( $iR == 24 )
1522             or ( $iR == 28 )
1523             or ( $iR == 48 )
1524             or ( $iR == 52 ) )
1525             {
1526             return (
1527 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1528             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1529             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1530             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
1531             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
1532             ) ? 1 : 0;
1533             }
1534             elsif (( $iR == 25 )
1535             or ( $iR == 27 )
1536             or ( $iR == 49 )
1537             or ( $iR == 51 ) )
1538             {
1539             return (
1540 0 0 0       ( $iC == 4 )
1541             or ( $iC == 8 )
1542             or ( $iC == 24 )
1543             or ( $iC == 28 )
1544             or ( $iC == 48 )
1545             or ( $iC == 52 )
1546             or ( $iC == 72 )
1547             or ( $iC == 76 )
1548             ) ? 1 : 0;
1549             }
1550 0           return 0;
1551             }
1552             elsif ( $iV == 17 ) {
1553 0 0 0       if ( $iR == 2 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
1554 0 0         return ( ( $iC == 74 ) ) ? 1 : 0;
1555             }
1556             elsif ( $iR == 3 ) {
1557 0 0         return ( ( $iC == 75 ) ) ? 1 : 0;
1558             }
1559             elsif ( $iR == 0 ) {
1560 0 0 0       return ( ( $iC == 74 ) or ( $iC == 76 ) ) ? 1 : 0;
1561             }
1562             elsif ( $iR == 4 ) {
1563             return (
1564 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1565             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
1566             or ( $iC == 74 )
1567             ) ? 1 : 0;
1568             }
1569             elsif ( $iR == 5 ) {
1570             return (
1571 0 0 0       ( $iC == 28 )
1572             or ( $iC == 32 )
1573             or ( $iC == 52 )
1574             or ( $iC == 56 )
1575             or ( $iC == 75 )
1576             ) ? 1 : 0;
1577             }
1578             elsif ( $iR == 74 ) {
1579 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 2 ) ) or ( $iC == 4 ) )
1580             ? 1
1581             : 0;
1582             }
1583             elsif ( $iR == 78 ) {
1584             return (
1585 0 0 0       ( $iC == 28 )
1586             or ( $iC == 30 )
1587             or ( $iC == 32 )
1588             or ( $iC == 52 )
1589             or ( $iC == 54 )
1590             or ( $iC == 56 )
1591             ) ? 1 : 0;
1592             }
1593             elsif ( $iR == 1 ) {
1594 0 0 0       return ( ( ( $iC >= 74 ) and ( $iC <= 75 ) ) ) ? 1 : 0;
1595             }
1596             elsif ( $iR == 76 ) {
1597             return (
1598 0 0 0       ( $iC == 0 )
1599             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1600             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
1601             ) ? 1 : 0;
1602             }
1603             elsif ( $iR == 75 ) {
1604 0 0 0       return ( ( $iC == 1 ) or ( $iC == 3 ) or ( $iC == 5 ) ) ? 1 : 0;
1605             }
1606             elsif ( ( $iR == 30 ) or ( $iR == 54 ) ) {
1607             return (
1608 0 0 0       ( $iC == 4 )
1609             or ( $iC == 8 )
1610             or ( $iC == 28 )
1611             or ( $iC == 30 )
1612             or ( $iC == 32 )
1613             or ( $iC == 52 )
1614             or ( $iC == 54 )
1615             or ( $iC == 56 )
1616             or ( $iC == 76 )
1617             or ( $iC == 78 )
1618             or ( $iC == 80 )
1619             ) ? 1 : 0;
1620             }
1621             elsif ( ( $iR == 8 ) or ( $iR == 80 ) ) {
1622             return (
1623 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1624             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
1625             ) ? 1 : 0;
1626             }
1627             elsif ( ( $iR == 7 ) or ( $iR == 77 ) or ( $iR == 79 ) ) {
1628             return (
1629 0 0 0       ( $iC == 28 )
1630             or ( $iC == 32 )
1631             or ( $iC == 52 )
1632             or ( $iC == 56 )
1633             ) ? 1 : 0;
1634             }
1635             elsif (( $iR == 29 )
1636             or ( $iR == 31 )
1637             or ( $iR == 53 )
1638             or ( $iR == 55 ) )
1639             {
1640             return (
1641 0 0 0       ( $iC == 4 )
1642             or ( $iC == 8 )
1643             or ( $iC == 28 )
1644             or ( $iC == 32 )
1645             or ( $iC == 52 )
1646             or ( $iC == 56 )
1647             or ( $iC == 76 )
1648             or ( $iC == 80 )
1649             ) ? 1 : 0;
1650             }
1651             elsif (( $iR == 28 )
1652             or ( $iR == 32 )
1653             or ( $iR == 52 )
1654             or ( $iR == 56 ) )
1655             {
1656             return (
1657 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1658             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1659             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1660             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
1661             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
1662             ) ? 1 : 0;
1663             }
1664 0           return 0;
1665             }
1666             elsif ( $iV == 18 ) {
1667 0 0 0       if ( $iR == 79 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
1668             return (
1669 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
1670             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1671             ) ? 1 : 0;
1672             }
1673             elsif ( $iR == 78 ) {
1674 0 0 0       return ( ( $iC == 0 ) or ( $iC == 3 ) ) ? 1 : 0;
1675             }
1676             elsif ( $iR == 3 ) {
1677 0 0 0       return ( ( $iC == 78 ) or ( $iC == 80 ) ) ? 1 : 0;
1678             }
1679             elsif ( $iR == 80 ) {
1680             return (
1681 0 0 0       ( $iC == 0 )
1682             or ( $iC == 3 )
1683             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1684             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
1685             ) ? 1 : 0;
1686             }
1687             elsif ( $iR == 82 ) {
1688             return (
1689 0 0 0       ( $iC == 28 )
1690             or ( $iC == 30 )
1691             or ( $iC == 32 )
1692             or ( $iC == 54 )
1693             or ( $iC == 56 )
1694             or ( $iC == 58 )
1695             ) ? 1 : 0;
1696             }
1697             elsif ( $iR == 5 ) {
1698             return (
1699 0 0 0       ( $iC == 28 )
1700             or ( $iC == 32 )
1701             or ( $iC == 54 )
1702             or ( $iC == 58 )
1703             or ( $iC == 79 )
1704             ) ? 1 : 0;
1705             }
1706             elsif ( $iR == 0 ) {
1707 0 0 0       return ( ( ( $iC >= 78 ) and ( $iC <= 80 ) ) ) ? 1 : 0;
1708             }
1709             elsif ( $iR == 1 ) {
1710 0 0         return ( ( $iC == 79 ) ) ? 1 : 0;
1711             }
1712             elsif ( $iR == 4 ) {
1713             return (
1714 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1715             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
1716             or ( $iC == 79 )
1717             ) ? 1 : 0;
1718             }
1719             elsif ( ( $iR == 8 ) or ( $iR == 84 ) ) {
1720             return (
1721 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1722             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
1723             ) ? 1 : 0;
1724             }
1725             elsif ( ( $iR == 30 ) or ( $iR == 56 ) ) {
1726             return (
1727 0 0 0       ( $iC == 4 )
1728             or ( $iC == 8 )
1729             or ( $iC == 28 )
1730             or ( $iC == 30 )
1731             or ( $iC == 32 )
1732             or ( $iC == 54 )
1733             or ( $iC == 56 )
1734             or ( $iC == 58 )
1735             or ( $iC == 80 )
1736             or ( $iC == 82 )
1737             or ( $iC == 84 )
1738             ) ? 1 : 0;
1739             }
1740             elsif ( ( $iR == 7 ) or ( $iR == 81 ) or ( $iR == 83 ) ) {
1741             return (
1742 0 0 0       ( $iC == 28 )
1743             or ( $iC == 32 )
1744             or ( $iC == 54 )
1745             or ( $iC == 58 )
1746             ) ? 1 : 0;
1747             }
1748             elsif (( $iR == 29 )
1749             or ( $iR == 31 )
1750             or ( $iR == 55 )
1751             or ( $iR == 57 ) )
1752             {
1753             return (
1754 0 0 0       ( $iC == 4 )
1755             or ( $iC == 8 )
1756             or ( $iC == 28 )
1757             or ( $iC == 32 )
1758             or ( $iC == 54 )
1759             or ( $iC == 58 )
1760             or ( $iC == 80 )
1761             or ( $iC == 84 )
1762             ) ? 1 : 0;
1763             }
1764             elsif (( $iR == 28 )
1765             or ( $iR == 32 )
1766             or ( $iR == 54 )
1767             or ( $iR == 58 ) )
1768             {
1769             return (
1770 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1771             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1772             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1773             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
1774             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
1775             ) ? 1 : 0;
1776             }
1777 0           return 0;
1778             }
1779             elsif ( $iV == 19 ) {
1780 0 0 0       if ( $iR == 1 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
1781 0 0 0       return ( ( ( $iC >= 83 ) and ( $iC <= 84 ) ) ) ? 1 : 0;
1782             }
1783             elsif ( $iR == 4 ) {
1784             return (
1785 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1786             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
1787             or ( ( $iC >= 82 ) and ( $iC <= 83 ) )
1788             ) ? 1 : 0;
1789             }
1790             elsif ( $iR == 84 ) {
1791             return (
1792 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 2 ) )
1793             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1794             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
1795             ) ? 1 : 0;
1796             }
1797             elsif ( $iR == 83 ) {
1798             return (
1799 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
1800             or ( ( $iC >= 3 ) and ( $iC <= 5 ) )
1801             ) ? 1 : 0;
1802             }
1803             elsif ( $iR == 2 ) {
1804 0 0         return ( ( $iC == 84 ) ) ? 1 : 0;
1805             }
1806             elsif ( $iR == 86 ) {
1807             return (
1808 0 0 0       ( $iC == 28 )
1809             or ( $iC == 30 )
1810             or ( $iC == 32 )
1811             or ( $iC == 56 )
1812             or ( $iC == 58 )
1813             or ( $iC == 60 )
1814             ) ? 1 : 0;
1815             }
1816             elsif ( $iR == 82 ) {
1817 0 0         return ( ( $iC == 4 ) ) ? 1 : 0;
1818             }
1819             elsif ( $iR == 5 ) {
1820             return (
1821 0 0 0       ( $iC == 28 )
1822             or ( $iC == 32 )
1823             or ( $iC == 56 )
1824             or ( $iC == 60 )
1825             or ( $iC == 83 )
1826             ) ? 1 : 0;
1827             }
1828             elsif ( ( $iR == 0 ) or ( $iR == 3 ) ) {
1829 0 0         return ( ( $iC == 83 ) ) ? 1 : 0;
1830             }
1831             elsif ( ( $iR == 30 ) or ( $iR == 58 ) ) {
1832             return (
1833 0 0 0       ( $iC == 4 )
1834             or ( $iC == 8 )
1835             or ( $iC == 28 )
1836             or ( $iC == 30 )
1837             or ( $iC == 32 )
1838             or ( $iC == 56 )
1839             or ( $iC == 58 )
1840             or ( $iC == 60 )
1841             or ( $iC == 84 )
1842             or ( $iC == 86 )
1843             or ( $iC == 88 )
1844             ) ? 1 : 0;
1845             }
1846             elsif ( ( $iR == 8 ) or ( $iR == 88 ) ) {
1847             return (
1848 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1849             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
1850             ) ? 1 : 0;
1851             }
1852             elsif ( ( $iR == 7 ) or ( $iR == 85 ) or ( $iR == 87 ) ) {
1853             return (
1854 0 0 0       ( $iC == 28 )
1855             or ( $iC == 32 )
1856             or ( $iC == 56 )
1857             or ( $iC == 60 )
1858             ) ? 1 : 0;
1859             }
1860             elsif (( $iR == 29 )
1861             or ( $iR == 31 )
1862             or ( $iR == 57 )
1863             or ( $iR == 59 ) )
1864             {
1865             return (
1866 0 0 0       ( $iC == 4 )
1867             or ( $iC == 8 )
1868             or ( $iC == 28 )
1869             or ( $iC == 32 )
1870             or ( $iC == 56 )
1871             or ( $iC == 60 )
1872             or ( $iC == 84 )
1873             or ( $iC == 88 )
1874             ) ? 1 : 0;
1875             }
1876             elsif (( $iR == 28 )
1877             or ( $iR == 32 )
1878             or ( $iR == 56 )
1879             or ( $iR == 60 ) )
1880             {
1881             return (
1882 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1883             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1884             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1885             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
1886             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
1887             ) ? 1 : 0;
1888             }
1889 0           return 0;
1890             }
1891             elsif ( $iV == 20 ) {
1892 0 0 0       if ( $iR == 4 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
1893             return (
1894 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1895             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
1896             or ( $iC == 88 )
1897             ) ? 1 : 0;
1898             }
1899             elsif ( $iR == 87 ) {
1900 0 0 0       return ( ( $iC == 0 ) or ( $iC == 2 ) or ( $iC == 5 ) ) ? 1 : 0;
1901             }
1902             elsif ( $iR == 88 ) {
1903             return (
1904 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 4 ) )
1905             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1906             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
1907             ) ? 1 : 0;
1908             }
1909             elsif ( $iR == 90 ) {
1910             return (
1911 0 0 0       ( $iC == 32 )
1912             or ( $iC == 34 )
1913             or ( $iC == 36 )
1914             or ( $iC == 60 )
1915             or ( $iC == 62 )
1916             or ( $iC == 64 )
1917             ) ? 1 : 0;
1918             }
1919             elsif ( $iR == 5 ) {
1920             return (
1921 0 0 0       ( $iC == 32 )
1922             or ( $iC == 36 )
1923             or ( $iC == 60 )
1924             or ( $iC == 64 )
1925             or ( $iC == 87 )
1926             ) ? 1 : 0;
1927             }
1928             elsif ( ( $iR == 1 ) or ( $iR == 3 ) ) {
1929 0 0         return ( ( $iC == 88 ) ) ? 1 : 0;
1930             }
1931             elsif ( ( $iR == 0 ) or ( $iR == 2 ) ) {
1932 0 0 0       return ( ( ( $iC >= 87 ) and ( $iC <= 88 ) ) ) ? 1 : 0;
1933             }
1934             elsif ( ( $iR == 34 ) or ( $iR == 62 ) ) {
1935             return (
1936 0 0 0       ( $iC == 4 )
1937             or ( $iC == 8 )
1938             or ( $iC == 32 )
1939             or ( $iC == 34 )
1940             or ( $iC == 36 )
1941             or ( $iC == 60 )
1942             or ( $iC == 62 )
1943             or ( $iC == 64 )
1944             or ( $iC == 88 )
1945             or ( $iC == 90 )
1946             or ( $iC == 92 )
1947             ) ? 1 : 0;
1948             }
1949             elsif ( ( $iR == 8 ) or ( $iR == 92 ) ) {
1950             return (
1951 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1952             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
1953             ) ? 1 : 0;
1954             }
1955             elsif ( ( $iR == 7 ) or ( $iR == 89 ) or ( $iR == 91 ) ) {
1956             return (
1957 0 0 0       ( $iC == 32 )
1958             or ( $iC == 36 )
1959             or ( $iC == 60 )
1960             or ( $iC == 64 )
1961             ) ? 1 : 0;
1962             }
1963             elsif (( $iR == 32 )
1964             or ( $iR == 36 )
1965             or ( $iR == 60 )
1966             or ( $iR == 64 ) )
1967             {
1968             return (
1969 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1970             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1971             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1972             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
1973             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
1974             ) ? 1 : 0;
1975             }
1976             elsif (( $iR == 33 )
1977             or ( $iR == 35 )
1978             or ( $iR == 61 )
1979             or ( $iR == 63 ) )
1980             {
1981             return (
1982 0 0 0       ( $iC == 4 )
1983             or ( $iC == 8 )
1984             or ( $iC == 32 )
1985             or ( $iC == 36 )
1986             or ( $iC == 60 )
1987             or ( $iC == 64 )
1988             or ( $iC == 88 )
1989             or ( $iC == 92 )
1990             ) ? 1 : 0;
1991             }
1992 0           return 0;
1993             }
1994             elsif ( $iV == 21 ) {
1995 0 0 0       if ( $iR == 90 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
1996 0 0 0       return ( ( $iC == 0 ) or ( ( $iC >= 3 ) and ( $iC <= 4 ) ) )
1997             ? 1
1998             : 0;
1999             }
2000             elsif ( $iR == 2 ) {
2001 0 0         return ( ( $iC == 91 ) ) ? 1 : 0;
2002             }
2003             elsif ( $iR == 91 ) {
2004             return (
2005 0 0 0       ( $iC == 0 )
2006             or ( ( $iC >= 2 ) and ( $iC <= 3 ) )
2007             or ( $iC == 5 )
2008             ) ? 1 : 0;
2009             }
2010             elsif ( $iR == 94 ) {
2011             return (
2012 0 0 0       ( $iC == 26 )
2013             or ( $iC == 28 )
2014             or ( $iC == 30 )
2015             or ( $iC == 48 )
2016             or ( $iC == 50 )
2017             or ( $iC == 52 )
2018             or ( $iC == 70 )
2019             or ( $iC == 72 )
2020             or ( $iC == 74 )
2021             ) ? 1 : 0;
2022             }
2023             elsif ( $iR == 92 ) {
2024             return (
2025 0 0 0       ( $iC == 4 )
2026             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2027             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2028             or ( ( $iC >= 70 ) and ( $iC <= 74 ) )
2029             ) ? 1 : 0;
2030             }
2031             elsif ( $iR == 5 ) {
2032             return (
2033 0 0 0       ( $iC == 26 )
2034             or ( $iC == 30 )
2035             or ( $iC == 48 )
2036             or ( $iC == 52 )
2037             or ( $iC == 70 )
2038             or ( $iC == 74 )
2039             or ( $iC == 91 )
2040             ) ? 1 : 0;
2041             }
2042             elsif ( $iR == 4 ) {
2043             return (
2044 0 0 0       ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2045             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2046             or ( ( $iC >= 70 ) and ( $iC <= 74 ) )
2047             or ( $iC == 90 )
2048             or ( $iC == 92 )
2049             ) ? 1 : 0;
2050             }
2051             elsif ( ( $iR == 0 ) or ( $iR == 3 ) ) {
2052 0 0 0       return ( ( ( $iC >= 90 ) and ( $iC <= 91 ) ) ) ? 1 : 0;
2053             }
2054             elsif ( ( $iR == 8 ) or ( $iR == 96 ) ) {
2055             return (
2056 0 0 0       ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2057             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2058             or ( ( $iC >= 70 ) and ( $iC <= 74 ) )
2059             ) ? 1 : 0;
2060             }
2061             elsif ( ( $iR == 7 ) or ( $iR == 93 ) or ( $iR == 95 ) ) {
2062             return (
2063 0 0 0       ( $iC == 26 )
2064             or ( $iC == 30 )
2065             or ( $iC == 48 )
2066             or ( $iC == 52 )
2067             or ( $iC == 70 )
2068             or ( $iC == 74 )
2069             ) ? 1 : 0;
2070             }
2071             elsif ( ( $iR == 28 ) or ( $iR == 50 ) or ( $iR == 72 ) ) {
2072             return (
2073 0 0 0       ( $iC == 4 )
2074             or ( $iC == 8 )
2075             or ( $iC == 26 )
2076             or ( $iC == 28 )
2077             or ( $iC == 30 )
2078             or ( $iC == 48 )
2079             or ( $iC == 50 )
2080             or ( $iC == 52 )
2081             or ( $iC == 70 )
2082             or ( $iC == 72 )
2083             or ( $iC == 74 )
2084             or ( $iC == 92 )
2085             or ( $iC == 94 )
2086             or ( $iC == 96 )
2087             ) ? 1 : 0;
2088             }
2089             elsif (( $iR == 27 )
2090             or ( $iR == 29 )
2091             or ( $iR == 49 )
2092             or ( $iR == 51 )
2093             or ( $iR == 71 )
2094             or ( $iR == 73 ) )
2095             {
2096             return (
2097 0 0 0       ( $iC == 4 )
2098             or ( $iC == 8 )
2099             or ( $iC == 26 )
2100             or ( $iC == 30 )
2101             or ( $iC == 48 )
2102             or ( $iC == 52 )
2103             or ( $iC == 70 )
2104             or ( $iC == 74 )
2105             or ( $iC == 92 )
2106             or ( $iC == 96 )
2107             ) ? 1 : 0;
2108             }
2109             elsif (( $iR == 26 )
2110             or ( $iR == 30 )
2111             or ( $iR == 48 )
2112             or ( $iR == 52 )
2113             or ( $iR == 70 )
2114             or ( $iR == 74 ) )
2115             {
2116             return (
2117 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2118             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2119             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2120             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2121             or ( ( $iC >= 70 ) and ( $iC <= 74 ) )
2122             or ( ( $iC >= 92 ) and ( $iC <= 96 ) )
2123             ) ? 1 : 0;
2124             }
2125 0           return 0;
2126             }
2127             elsif ( $iV == 22 ) {
2128 0 0 0       if ( $iR == 98 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
2129             return (
2130 0 0 0       ( $iC == 24 )
2131             or ( $iC == 26 )
2132             or ( $iC == 28 )
2133             or ( $iC == 48 )
2134             or ( $iC == 50 )
2135             or ( $iC == 52 )
2136             or ( $iC == 72 )
2137             or ( $iC == 74 )
2138             or ( $iC == 76 )
2139             ) ? 1 : 0;
2140             }
2141             elsif ( $iR == 95 ) {
2142 0 0 0       return ( ( $iC == 2 ) or ( ( $iC >= 4 ) and ( $iC <= 5 ) ) )
2143             ? 1
2144             : 0;
2145             }
2146             elsif ( $iR == 3 ) {
2147 0 0         return ( ( $iC == 96 ) ) ? 1 : 0;
2148             }
2149             elsif ( $iR == 96 ) {
2150             return (
2151 0 0 0       ( ( $iC >= 3 ) and ( $iC <= 4 ) )
2152             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2153             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2154             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2155             ) ? 1 : 0;
2156             }
2157             elsif ( $iR == 94 ) {
2158 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 2 ) ) ) ? 1 : 0;
2159             }
2160             elsif ( $iR == 4 ) {
2161             return (
2162 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2163             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2164             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2165             or ( ( $iC >= 95 ) and ( $iC <= 96 ) )
2166             ) ? 1 : 0;
2167             }
2168             elsif ( $iR == 5 ) {
2169             return (
2170 0 0 0       ( $iC == 24 )
2171             or ( $iC == 28 )
2172             or ( $iC == 48 )
2173             or ( $iC == 52 )
2174             or ( $iC == 72 )
2175             or ( $iC == 76 )
2176             or ( $iC == 95 )
2177             ) ? 1 : 0;
2178             }
2179             elsif ( $iR == 2 ) {
2180 0 0 0       return ( ( ( $iC >= 94 ) and ( $iC <= 95 ) ) ) ? 1 : 0;
2181             }
2182             elsif ( ( $iR == 8 ) or ( $iR == 100 ) ) {
2183             return (
2184 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2185             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2186             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2187             ) ? 1 : 0;
2188             }
2189             elsif ( ( $iR == 0 ) or ( $iR == 1 ) ) {
2190 0 0         return ( ( $iC == 94 ) ) ? 1 : 0;
2191             }
2192             elsif ( ( $iR == 26 ) or ( $iR == 50 ) or ( $iR == 74 ) ) {
2193             return (
2194 0 0 0       ( $iC == 4 )
2195             or ( $iC == 8 )
2196             or ( $iC == 24 )
2197             or ( $iC == 26 )
2198             or ( $iC == 28 )
2199             or ( $iC == 48 )
2200             or ( $iC == 50 )
2201             or ( $iC == 52 )
2202             or ( $iC == 72 )
2203             or ( $iC == 74 )
2204             or ( $iC == 76 )
2205             or ( $iC == 96 )
2206             or ( $iC == 98 )
2207             or ( $iC == 100 )
2208             ) ? 1 : 0;
2209             }
2210             elsif ( ( $iR == 7 ) or ( $iR == 97 ) or ( $iR == 99 ) ) {
2211             return (
2212 0 0 0       ( $iC == 24 )
2213             or ( $iC == 28 )
2214             or ( $iC == 48 )
2215             or ( $iC == 52 )
2216             or ( $iC == 72 )
2217             or ( $iC == 76 )
2218             ) ? 1 : 0;
2219             }
2220             elsif (( $iR == 24 )
2221             or ( $iR == 28 )
2222             or ( $iR == 48 )
2223             or ( $iR == 52 )
2224             or ( $iR == 72 )
2225             or ( $iR == 76 ) )
2226             {
2227             return (
2228 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2229             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2230             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2231             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2232             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2233             or ( ( $iC >= 96 ) and ( $iC <= 100 ) )
2234             ) ? 1 : 0;
2235             }
2236             elsif (( $iR == 25 )
2237             or ( $iR == 27 )
2238             or ( $iR == 49 )
2239             or ( $iR == 51 )
2240             or ( $iR == 73 )
2241             or ( $iR == 75 ) )
2242             {
2243             return (
2244 0 0 0       ( $iC == 4 )
2245             or ( $iC == 8 )
2246             or ( $iC == 24 )
2247             or ( $iC == 28 )
2248             or ( $iC == 48 )
2249             or ( $iC == 52 )
2250             or ( $iC == 72 )
2251             or ( $iC == 76 )
2252             or ( $iC == 96 )
2253             or ( $iC == 100 )
2254             ) ? 1 : 0;
2255             }
2256 0           return 0;
2257             }
2258             elsif ( $iV == 23 ) {
2259 0 0 0       if ( $iR == 3 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
2260 0 0 0       return ( ( ( $iC >= 98 ) and ( $iC <= 99 ) ) ) ? 1 : 0;
2261             }
2262             elsif ( $iR == 2 ) {
2263 0 0 0       return ( ( ( $iC >= 98 ) and ( $iC <= 100 ) ) ) ? 1 : 0;
2264             }
2265             elsif ( $iR == 1 ) {
2266 0 0 0       return ( ( $iC == 98 ) or ( $iC == 100 ) ) ? 1 : 0;
2267             }
2268             elsif ( $iR == 5 ) {
2269             return (
2270 0 0 0       ( $iC == 28 )
2271             or ( $iC == 32 )
2272             or ( $iC == 52 )
2273             or ( $iC == 56 )
2274             or ( $iC == 76 )
2275             or ( $iC == 80 )
2276             or ( $iC == 99 )
2277             ) ? 1 : 0;
2278             }
2279             elsif ( $iR == 100 ) {
2280             return (
2281 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 2 ) )
2282             or ( $iC == 4 )
2283             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2284             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2285             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
2286             ) ? 1 : 0;
2287             }
2288             elsif ( $iR == 99 ) {
2289 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 5 ) ) ) ? 1 : 0;
2290             }
2291             elsif ( $iR == 4 ) {
2292             return (
2293 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2294             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2295             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
2296             or ( ( $iC >= 98 ) and ( $iC <= 100 ) )
2297             ) ? 1 : 0;
2298             }
2299             elsif ( $iR == 102 ) {
2300             return (
2301 0 0 0       ( $iC == 28 )
2302             or ( $iC == 30 )
2303             or ( $iC == 32 )
2304             or ( $iC == 52 )
2305             or ( $iC == 54 )
2306             or ( $iC == 56 )
2307             or ( $iC == 76 )
2308             or ( $iC == 78 )
2309             or ( $iC == 80 )
2310             ) ? 1 : 0;
2311             }
2312             elsif ( $iR == 0 ) {
2313 0 0         return ( ( $iC == 100 ) ) ? 1 : 0;
2314             }
2315             elsif ( $iR == 98 ) {
2316 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
2317             }
2318             elsif ( ( $iR == 8 ) or ( $iR == 104 ) ) {
2319             return (
2320 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2321             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2322             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
2323             ) ? 1 : 0;
2324             }
2325             elsif ( ( $iR == 7 ) or ( $iR == 101 ) or ( $iR == 103 ) ) {
2326             return (
2327 0 0 0       ( $iC == 28 )
2328             or ( $iC == 32 )
2329             or ( $iC == 52 )
2330             or ( $iC == 56 )
2331             or ( $iC == 76 )
2332             or ( $iC == 80 )
2333             ) ? 1 : 0;
2334             }
2335             elsif ( ( $iR == 30 ) or ( $iR == 54 ) or ( $iR == 78 ) ) {
2336             return (
2337 0 0 0       ( $iC == 4 )
2338             or ( $iC == 8 )
2339             or ( $iC == 28 )
2340             or ( $iC == 30 )
2341             or ( $iC == 32 )
2342             or ( $iC == 52 )
2343             or ( $iC == 54 )
2344             or ( $iC == 56 )
2345             or ( $iC == 76 )
2346             or ( $iC == 78 )
2347             or ( $iC == 80 )
2348             or ( $iC == 100 )
2349             or ( $iC == 102 )
2350             or ( $iC == 104 )
2351             ) ? 1 : 0;
2352             }
2353             elsif (( $iR == 28 )
2354             or ( $iR == 32 )
2355             or ( $iR == 52 )
2356             or ( $iR == 56 )
2357             or ( $iR == 76 )
2358             or ( $iR == 80 ) )
2359             {
2360             return (
2361 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2362             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2363             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2364             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2365             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
2366             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
2367             ) ? 1 : 0;
2368             }
2369             elsif (( $iR == 29 )
2370             or ( $iR == 31 )
2371             or ( $iR == 53 )
2372             or ( $iR == 55 )
2373             or ( $iR == 77 )
2374             or ( $iR == 79 ) )
2375             {
2376             return (
2377 0 0 0       ( $iC == 4 )
2378             or ( $iC == 8 )
2379             or ( $iC == 28 )
2380             or ( $iC == 32 )
2381             or ( $iC == 52 )
2382             or ( $iC == 56 )
2383             or ( $iC == 76 )
2384             or ( $iC == 80 )
2385             or ( $iC == 100 )
2386             or ( $iC == 104 )
2387             ) ? 1 : 0;
2388             }
2389 0           return 0;
2390             }
2391             elsif ( $iV == 24 ) {
2392 0 0 0       if ( $iR == 0 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
2393 0 0         return ( ( $iC == 104 ) ) ? 1 : 0;
2394             }
2395             elsif ( $iR == 106 ) {
2396             return (
2397 0 0 0       ( $iC == 26 )
2398             or ( $iC == 28 )
2399             or ( $iC == 30 )
2400             or ( $iC == 52 )
2401             or ( $iC == 54 )
2402             or ( $iC == 56 )
2403             or ( $iC == 78 )
2404             or ( $iC == 80 )
2405             or ( $iC == 82 )
2406             ) ? 1 : 0;
2407             }
2408             elsif ( $iR == 3 ) {
2409 0 0 0       return ( ( ( $iC >= 102 ) and ( $iC <= 104 ) ) ) ? 1 : 0;
2410             }
2411             elsif ( $iR == 2 ) {
2412 0 0 0       return ( ( ( $iC >= 102 ) and ( $iC <= 103 ) ) ) ? 1 : 0;
2413             }
2414             elsif ( $iR == 104 ) {
2415             return (
2416 0 0 0       ( $iC == 0 )
2417             or ( $iC == 3 )
2418             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2419             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2420             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
2421             ) ? 1 : 0;
2422             }
2423             elsif ( $iR == 5 ) {
2424             return (
2425 0 0 0       ( $iC == 26 )
2426             or ( $iC == 30 )
2427             or ( $iC == 52 )
2428             or ( $iC == 56 )
2429             or ( $iC == 78 )
2430             or ( $iC == 82 )
2431             or ( ( $iC >= 102 ) and ( $iC <= 103 ) )
2432             ) ? 1 : 0;
2433             }
2434             elsif ( ( $iR == 102 ) or ( $iR == 103 ) ) {
2435 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 3 ) ) or ( $iC == 5 ) )
2436             ? 1
2437             : 0;
2438             }
2439             elsif ( ( $iR == 4 ) or ( $iR == 8 ) or ( $iR == 108 ) ) {
2440             return (
2441 0 0 0       ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2442             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2443             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
2444             ) ? 1 : 0;
2445             }
2446             elsif ( ( $iR == 7 ) or ( $iR == 105 ) or ( $iR == 107 ) ) {
2447             return (
2448 0 0 0       ( $iC == 26 )
2449             or ( $iC == 30 )
2450             or ( $iC == 52 )
2451             or ( $iC == 56 )
2452             or ( $iC == 78 )
2453             or ( $iC == 82 )
2454             ) ? 1 : 0;
2455             }
2456             elsif ( ( $iR == 28 ) or ( $iR == 54 ) or ( $iR == 80 ) ) {
2457             return (
2458 0 0 0       ( $iC == 4 )
2459             or ( $iC == 8 )
2460             or ( $iC == 26 )
2461             or ( $iC == 28 )
2462             or ( $iC == 30 )
2463             or ( $iC == 52 )
2464             or ( $iC == 54 )
2465             or ( $iC == 56 )
2466             or ( $iC == 78 )
2467             or ( $iC == 80 )
2468             or ( $iC == 82 )
2469             or ( $iC == 104 )
2470             or ( $iC == 106 )
2471             or ( $iC == 108 )
2472             ) ? 1 : 0;
2473             }
2474             elsif (( $iR == 26 )
2475             or ( $iR == 30 )
2476             or ( $iR == 52 )
2477             or ( $iR == 56 )
2478             or ( $iR == 78 )
2479             or ( $iR == 82 ) )
2480             {
2481             return (
2482 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2483             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2484             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2485             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2486             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
2487             or ( ( $iC >= 104 ) and ( $iC <= 108 ) )
2488             ) ? 1 : 0;
2489             }
2490             elsif (( $iR == 27 )
2491             or ( $iR == 29 )
2492             or ( $iR == 53 )
2493             or ( $iR == 55 )
2494             or ( $iR == 79 )
2495             or ( $iR == 81 ) )
2496             {
2497             return (
2498 0 0 0       ( $iC == 4 )
2499             or ( $iC == 8 )
2500             or ( $iC == 26 )
2501             or ( $iC == 30 )
2502             or ( $iC == 52 )
2503             or ( $iC == 56 )
2504             or ( $iC == 78 )
2505             or ( $iC == 82 )
2506             or ( $iC == 104 )
2507             or ( $iC == 108 )
2508             ) ? 1 : 0;
2509             }
2510 0           return 0;
2511             }
2512             elsif ( $iV == 25 ) {
2513 0 0 0       if ( $iR == 1 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
2514 0 0         return ( ( $iC == 108 ) ) ? 1 : 0;
2515             }
2516             elsif ( $iR == 106 ) {
2517             return (
2518 0 0 0       ( $iC == 0 )
2519             or ( $iC == 2 )
2520             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2521             ) ? 1 : 0;
2522             }
2523             elsif ( $iR == 108 ) {
2524             return (
2525 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 2 ) )
2526             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
2527             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2528             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
2529             ) ? 1 : 0;
2530             }
2531             elsif ( $iR == 5 ) {
2532             return (
2533 0 0 0       ( $iC == 30 )
2534             or ( $iC == 34 )
2535             or ( $iC == 56 )
2536             or ( $iC == 60 )
2537             or ( $iC == 82 )
2538             or ( $iC == 86 )
2539             or ( ( $iC >= 106 ) and ( $iC <= 107 ) )
2540             ) ? 1 : 0;
2541             }
2542             elsif ( $iR == 110 ) {
2543             return (
2544 0 0 0       ( $iC == 30 )
2545             or ( $iC == 32 )
2546             or ( $iC == 34 )
2547             or ( $iC == 56 )
2548             or ( $iC == 58 )
2549             or ( $iC == 60 )
2550             or ( $iC == 82 )
2551             or ( $iC == 84 )
2552             or ( $iC == 86 )
2553             ) ? 1 : 0;
2554             }
2555             elsif ( $iR == 107 ) {
2556 0 0 0       return ( ( $iC == 2 ) or ( $iC == 5 ) ) ? 1 : 0;
2557             }
2558             elsif ( $iR == 2 ) {
2559 0 0 0       return ( ( ( $iC >= 106 ) and ( $iC <= 108 ) ) ) ? 1 : 0;
2560             }
2561             elsif ( $iR == 0 ) {
2562 0 0         return ( ( $iC == 106 ) ) ? 1 : 0;
2563             }
2564             elsif ( $iR == 4 ) {
2565             return (
2566 0 0 0       ( ( $iC >= 30 ) and ( $iC <= 34 ) )
2567             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2568             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
2569             or ( $iC == 106 )
2570             ) ? 1 : 0;
2571             }
2572             elsif ( ( $iR == 8 ) or ( $iR == 112 ) ) {
2573             return (
2574 0 0 0       ( ( $iC >= 30 ) and ( $iC <= 34 ) )
2575             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2576             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
2577             ) ? 1 : 0;
2578             }
2579             elsif ( ( $iR == 7 ) or ( $iR == 109 ) or ( $iR == 111 ) ) {
2580             return (
2581 0 0 0       ( $iC == 30 )
2582             or ( $iC == 34 )
2583             or ( $iC == 56 )
2584             or ( $iC == 60 )
2585             or ( $iC == 82 )
2586             or ( $iC == 86 )
2587             ) ? 1 : 0;
2588             }
2589             elsif ( ( $iR == 32 ) or ( $iR == 58 ) or ( $iR == 84 ) ) {
2590             return (
2591 0 0 0       ( $iC == 4 )
2592             or ( $iC == 8 )
2593             or ( $iC == 30 )
2594             or ( $iC == 32 )
2595             or ( $iC == 34 )
2596             or ( $iC == 56 )
2597             or ( $iC == 58 )
2598             or ( $iC == 60 )
2599             or ( $iC == 82 )
2600             or ( $iC == 84 )
2601             or ( $iC == 86 )
2602             or ( $iC == 108 )
2603             or ( $iC == 110 )
2604             or ( $iC == 112 )
2605             ) ? 1 : 0;
2606             }
2607             elsif (( $iR == 31 )
2608             or ( $iR == 33 )
2609             or ( $iR == 57 )
2610             or ( $iR == 59 )
2611             or ( $iR == 83 )
2612             or ( $iR == 85 ) )
2613             {
2614             return (
2615 0 0 0       ( $iC == 4 )
2616             or ( $iC == 8 )
2617             or ( $iC == 30 )
2618             or ( $iC == 34 )
2619             or ( $iC == 56 )
2620             or ( $iC == 60 )
2621             or ( $iC == 82 )
2622             or ( $iC == 86 )
2623             or ( $iC == 108 )
2624             or ( $iC == 112 )
2625             ) ? 1 : 0;
2626             }
2627             elsif (( $iR == 30 )
2628             or ( $iR == 34 )
2629             or ( $iR == 56 )
2630             or ( $iR == 60 )
2631             or ( $iR == 82 )
2632             or ( $iR == 86 ) )
2633             {
2634             return (
2635 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2636             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2637             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
2638             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2639             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
2640             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
2641             ) ? 1 : 0;
2642             }
2643 0           return 0;
2644             }
2645             elsif ( $iV == 26 ) {
2646 0 0 0       if ( $iR == 112 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
2647             return (
2648 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 3 ) )
2649             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2650             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2651             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
2652             ) ? 1 : 0;
2653             }
2654             elsif ( $iR == 0 ) {
2655 0 0 0       return ( ( ( $iC >= 110 ) and ( $iC <= 111 ) ) ) ? 1 : 0;
2656             }
2657             elsif ( $iR == 1 ) {
2658 0 0 0       return ( ( $iC == 110 ) or ( $iC == 112 ) ) ? 1 : 0;
2659             }
2660             elsif ( $iR == 4 ) {
2661             return (
2662 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2663             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2664             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
2665             or ( $iC == 111 )
2666             ) ? 1 : 0;
2667             }
2668             elsif ( $iR == 3 ) {
2669 0 0 0       return ( ( ( $iC >= 110 ) and ( $iC <= 112 ) ) ) ? 1 : 0;
2670             }
2671             elsif ( $iR == 110 ) {
2672             return (
2673 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
2674             or ( $iC == 3 )
2675             or ( $iC == 5 )
2676             ) ? 1 : 0;
2677             }
2678             elsif ( $iR == 114 ) {
2679             return (
2680 0 0 0       ( $iC == 28 )
2681             or ( $iC == 30 )
2682             or ( $iC == 32 )
2683             or ( $iC == 56 )
2684             or ( $iC == 58 )
2685             or ( $iC == 60 )
2686             or ( $iC == 84 )
2687             or ( $iC == 86 )
2688             or ( $iC == 88 )
2689             ) ? 1 : 0;
2690             }
2691             elsif ( $iR == 2 ) {
2692 0 0 0       return ( ( ( $iC >= 111 ) and ( $iC <= 112 ) ) ) ? 1 : 0;
2693             }
2694             elsif ( $iR == 5 ) {
2695             return (
2696 0 0 0       ( $iC == 28 )
2697             or ( $iC == 32 )
2698             or ( $iC == 56 )
2699             or ( $iC == 60 )
2700             or ( $iC == 84 )
2701             or ( $iC == 88 )
2702             or ( ( $iC >= 110 ) and ( $iC <= 111 ) )
2703             ) ? 1 : 0;
2704             }
2705             elsif ( $iR == 111 ) {
2706 0 0 0       return ( ( $iC == 0 ) or ( ( $iC >= 2 ) and ( $iC <= 5 ) ) )
2707             ? 1
2708             : 0;
2709             }
2710             elsif ( ( $iR == 8 ) or ( $iR == 116 ) ) {
2711             return (
2712 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2713             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2714             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
2715             ) ? 1 : 0;
2716             }
2717             elsif ( ( $iR == 7 ) or ( $iR == 113 ) or ( $iR == 115 ) ) {
2718             return (
2719 0 0 0       ( $iC == 28 )
2720             or ( $iC == 32 )
2721             or ( $iC == 56 )
2722             or ( $iC == 60 )
2723             or ( $iC == 84 )
2724             or ( $iC == 88 )
2725             ) ? 1 : 0;
2726             }
2727             elsif ( ( $iR == 30 ) or ( $iR == 58 ) or ( $iR == 86 ) ) {
2728             return (
2729 0 0 0       ( $iC == 4 )
2730             or ( $iC == 8 )
2731             or ( $iC == 28 )
2732             or ( $iC == 30 )
2733             or ( $iC == 32 )
2734             or ( $iC == 56 )
2735             or ( $iC == 58 )
2736             or ( $iC == 60 )
2737             or ( $iC == 84 )
2738             or ( $iC == 86 )
2739             or ( $iC == 88 )
2740             or ( $iC == 112 )
2741             or ( $iC == 114 )
2742             or ( $iC == 116 )
2743             ) ? 1 : 0;
2744             }
2745             elsif (( $iR == 29 )
2746             or ( $iR == 31 )
2747             or ( $iR == 57 )
2748             or ( $iR == 59 )
2749             or ( $iR == 85 )
2750             or ( $iR == 87 ) )
2751             {
2752             return (
2753 0 0 0       ( $iC == 4 )
2754             or ( $iC == 8 )
2755             or ( $iC == 28 )
2756             or ( $iC == 32 )
2757             or ( $iC == 56 )
2758             or ( $iC == 60 )
2759             or ( $iC == 84 )
2760             or ( $iC == 88 )
2761             or ( $iC == 112 )
2762             or ( $iC == 116 )
2763             ) ? 1 : 0;
2764             }
2765             elsif (( $iR == 28 )
2766             or ( $iR == 32 )
2767             or ( $iR == 56 )
2768             or ( $iR == 60 )
2769             or ( $iR == 84 )
2770             or ( $iR == 88 ) )
2771             {
2772             return (
2773 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2774             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2775             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2776             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2777             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
2778             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
2779             ) ? 1 : 0;
2780             }
2781 0           return 0;
2782             }
2783             elsif ( $iV == 27 ) {
2784 0 0 0       if ( $iR == 116 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
2785             return (
2786 0 0 0       ( $iC == 0 )
2787             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
2788             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
2789             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
2790             ) ? 1 : 0;
2791             }
2792             elsif ( $iR == 114 ) {
2793 0 0 0       return ( ( $iC == 1 ) or ( ( $iC >= 4 ) and ( $iC <= 5 ) ) )
2794             ? 1
2795             : 0;
2796             }
2797             elsif ( $iR == 118 ) {
2798             return (
2799 0 0 0       ( $iC == 32 )
2800             or ( $iC == 34 )
2801             or ( $iC == 36 )
2802             or ( $iC == 60 )
2803             or ( $iC == 62 )
2804             or ( $iC == 64 )
2805             or ( $iC == 88 )
2806             or ( $iC == 90 )
2807             or ( $iC == 92 )
2808             ) ? 1 : 0;
2809             }
2810             elsif ( $iR == 115 ) {
2811             return (
2812 0 0 0       ( $iC == 0 )
2813             or ( $iC == 2 )
2814             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2815             ) ? 1 : 0;
2816             }
2817             elsif ( $iR == 1 ) {
2818 0 0         return ( ( $iC == 114 ) ) ? 1 : 0;
2819             }
2820             elsif ( $iR == 0 ) {
2821 0 0 0       return ( ( ( $iC >= 115 ) and ( $iC <= 116 ) ) ) ? 1 : 0;
2822             }
2823             elsif ( $iR == 5 ) {
2824             return (
2825 0 0 0       ( $iC == 32 )
2826             or ( $iC == 36 )
2827             or ( $iC == 60 )
2828             or ( $iC == 64 )
2829             or ( $iC == 88 )
2830             or ( $iC == 92 )
2831             or ( ( $iC >= 114 ) and ( $iC <= 115 ) )
2832             ) ? 1 : 0;
2833             }
2834             elsif ( $iR == 2 ) {
2835 0 0         return ( ( $iC == 115 ) ) ? 1 : 0;
2836             }
2837             elsif ( $iR == 4 ) {
2838             return (
2839 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
2840             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
2841             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
2842             or ( ( $iC >= 114 ) and ( $iC <= 115 ) )
2843             ) ? 1 : 0;
2844             }
2845             elsif ( ( $iR == 8 ) or ( $iR == 120 ) ) {
2846             return (
2847 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
2848             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
2849             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
2850             ) ? 1 : 0;
2851             }
2852             elsif ( ( $iR == 34 ) or ( $iR == 62 ) or ( $iR == 90 ) ) {
2853             return (
2854 0 0 0       ( $iC == 4 )
2855             or ( $iC == 8 )
2856             or ( $iC == 32 )
2857             or ( $iC == 34 )
2858             or ( $iC == 36 )
2859             or ( $iC == 60 )
2860             or ( $iC == 62 )
2861             or ( $iC == 64 )
2862             or ( $iC == 88 )
2863             or ( $iC == 90 )
2864             or ( $iC == 92 )
2865             or ( $iC == 116 )
2866             or ( $iC == 118 )
2867             or ( $iC == 120 )
2868             ) ? 1 : 0;
2869             }
2870             elsif ( ( $iR == 7 ) or ( $iR == 117 ) or ( $iR == 119 ) ) {
2871             return (
2872 0 0 0       ( $iC == 32 )
2873             or ( $iC == 36 )
2874             or ( $iC == 60 )
2875             or ( $iC == 64 )
2876             or ( $iC == 88 )
2877             or ( $iC == 92 )
2878             ) ? 1 : 0;
2879             }
2880             elsif (( $iR == 33 )
2881             or ( $iR == 35 )
2882             or ( $iR == 61 )
2883             or ( $iR == 63 )
2884             or ( $iR == 89 )
2885             or ( $iR == 91 ) )
2886             {
2887             return (
2888 0 0 0       ( $iC == 4 )
2889             or ( $iC == 8 )
2890             or ( $iC == 32 )
2891             or ( $iC == 36 )
2892             or ( $iC == 60 )
2893             or ( $iC == 64 )
2894             or ( $iC == 88 )
2895             or ( $iC == 92 )
2896             or ( $iC == 116 )
2897             or ( $iC == 120 )
2898             ) ? 1 : 0;
2899             }
2900             elsif (( $iR == 32 )
2901             or ( $iR == 36 )
2902             or ( $iR == 60 )
2903             or ( $iR == 64 )
2904             or ( $iR == 88 )
2905             or ( $iR == 92 ) )
2906             {
2907             return (
2908 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2909             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2910             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
2911             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
2912             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
2913             or ( ( $iC >= 116 ) and ( $iC <= 120 ) )
2914             ) ? 1 : 0;
2915             }
2916 0           return 0;
2917             }
2918             elsif ( $iV == 28 ) {
2919 0 0 0       if ( $iR == 122 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
2920             return (
2921 0 0 0       ( $iC == 24 )
2922             or ( $iC == 26 )
2923             or ( $iC == 28 )
2924             or ( $iC == 48 )
2925             or ( $iC == 50 )
2926             or ( $iC == 52 )
2927             or ( $iC == 72 )
2928             or ( $iC == 74 )
2929             or ( $iC == 76 )
2930             or ( $iC == 96 )
2931             or ( $iC == 98 )
2932             or ( $iC == 100 )
2933             ) ? 1 : 0;
2934             }
2935             elsif ( $iR == 120 ) {
2936             return (
2937 0 0 0       ( ( $iC >= 3 ) and ( $iC <= 4 ) )
2938             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2939             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2940             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2941             or ( ( $iC >= 96 ) and ( $iC <= 100 ) )
2942             ) ? 1 : 0;
2943             }
2944             elsif ( $iR == 5 ) {
2945             return (
2946 0 0 0       ( $iC == 24 )
2947             or ( $iC == 28 )
2948             or ( $iC == 48 )
2949             or ( $iC == 52 )
2950             or ( $iC == 72 )
2951             or ( $iC == 76 )
2952             or ( $iC == 96 )
2953             or ( $iC == 100 )
2954             or ( ( $iC >= 118 ) and ( $iC <= 119 ) )
2955             ) ? 1 : 0;
2956             }
2957             elsif ( $iR == 3 ) {
2958 0 0 0       return ( ( ( $iC >= 119 ) and ( $iC <= 120 ) ) ) ? 1 : 0;
2959             }
2960             elsif ( $iR == 118 ) {
2961 0 0 0       return ( ( $iC == 1 ) or ( $iC == 5 ) ) ? 1 : 0;
2962             }
2963             elsif ( $iR == 1 ) {
2964 0 0 0       return ( ( ( $iC >= 118 ) and ( $iC <= 119 ) ) ) ? 1 : 0;
2965             }
2966             elsif ( $iR == 119 ) {
2967             return (
2968 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
2969             or ( $iC == 3 )
2970             or ( $iC == 5 )
2971             ) ? 1 : 0;
2972             }
2973             elsif ( $iR == 4 ) {
2974             return (
2975 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2976             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2977             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2978             or ( ( $iC >= 96 ) and ( $iC <= 100 ) )
2979             or ( $iC == 120 )
2980             ) ? 1 : 0;
2981             }
2982             elsif ( $iR == 0 ) {
2983 0 0         return ( ( $iC == 119 ) ) ? 1 : 0;
2984             }
2985             elsif ( ( $iR == 8 ) or ( $iR == 124 ) ) {
2986             return (
2987 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2988             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2989             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2990             or ( ( $iC >= 96 ) and ( $iC <= 100 ) )
2991             ) ? 1 : 0;
2992             }
2993             elsif ( ( $iR == 7 ) or ( $iR == 121 ) or ( $iR == 123 ) ) {
2994             return (
2995 0 0 0       ( $iC == 24 )
2996             or ( $iC == 28 )
2997             or ( $iC == 48 )
2998             or ( $iC == 52 )
2999             or ( $iC == 72 )
3000             or ( $iC == 76 )
3001             or ( $iC == 96 )
3002             or ( $iC == 100 )
3003             ) ? 1 : 0;
3004             }
3005             elsif (( $iR == 26 )
3006             or ( $iR == 50 )
3007             or ( $iR == 74 )
3008             or ( $iR == 98 ) )
3009             {
3010             return (
3011 0 0 0       ( $iC == 4 )
3012             or ( $iC == 8 )
3013             or ( $iC == 24 )
3014             or ( $iC == 26 )
3015             or ( $iC == 28 )
3016             or ( $iC == 48 )
3017             or ( $iC == 50 )
3018             or ( $iC == 52 )
3019             or ( $iC == 72 )
3020             or ( $iC == 74 )
3021             or ( $iC == 76 )
3022             or ( $iC == 96 )
3023             or ( $iC == 98 )
3024             or ( $iC == 100 )
3025             or ( $iC == 120 )
3026             or ( $iC == 122 )
3027             or ( $iC == 124 )
3028             ) ? 1 : 0;
3029             }
3030             elsif (( $iR == 24 )
3031             or ( $iR == 28 )
3032             or ( $iR == 48 )
3033             or ( $iR == 52 )
3034             or ( $iR == 72 )
3035             or ( $iR == 76 )
3036             or ( $iR == 96 )
3037             or ( $iR == 100 ) )
3038             {
3039             return (
3040 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3041             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3042             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
3043             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
3044             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
3045             or ( ( $iC >= 96 ) and ( $iC <= 100 ) )
3046             or ( ( $iC >= 120 ) and ( $iC <= 124 ) )
3047             ) ? 1 : 0;
3048             }
3049             elsif (( $iR == 25 )
3050             or ( $iR == 27 )
3051             or ( $iR == 49 )
3052             or ( $iR == 51 )
3053             or ( $iR == 73 )
3054             or ( $iR == 75 )
3055             or ( $iR == 97 )
3056             or ( $iR == 99 ) )
3057             {
3058             return (
3059 0 0 0       ( $iC == 4 )
3060             or ( $iC == 8 )
3061             or ( $iC == 24 )
3062             or ( $iC == 28 )
3063             or ( $iC == 48 )
3064             or ( $iC == 52 )
3065             or ( $iC == 72 )
3066             or ( $iC == 76 )
3067             or ( $iC == 96 )
3068             or ( $iC == 100 )
3069             or ( $iC == 120 )
3070             or ( $iC == 124 )
3071             ) ? 1 : 0;
3072             }
3073 0           return 0;
3074             }
3075             elsif ( $iV == 29 ) {
3076 0 0 0       if ( $iR == 123 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3077 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 1 ) ) or ( $iC == 5 ) )
3078             ? 1
3079             : 0;
3080             }
3081             elsif ( $iR == 122 ) {
3082             return (
3083 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
3084             or ( ( $iC >= 3 ) and ( $iC <= 5 ) )
3085             ) ? 1 : 0;
3086             }
3087             elsif ( $iR == 4 ) {
3088             return (
3089 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3090             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
3091             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3092             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
3093             or ( $iC == 122 )
3094             or ( $iC == 124 )
3095             ) ? 1 : 0;
3096             }
3097             elsif ( $iR == 126 ) {
3098             return (
3099 0 0 0       ( $iC == 28 )
3100             or ( $iC == 30 )
3101             or ( $iC == 32 )
3102             or ( $iC == 52 )
3103             or ( $iC == 54 )
3104             or ( $iC == 56 )
3105             or ( $iC == 76 )
3106             or ( $iC == 78 )
3107             or ( $iC == 80 )
3108             or ( $iC == 100 )
3109             or ( $iC == 102 )
3110             or ( $iC == 104 )
3111             ) ? 1 : 0;
3112             }
3113             elsif ( $iR == 3 ) {
3114 0 0         return ( ( $iC == 122 ) ) ? 1 : 0;
3115             }
3116             elsif ( $iR == 5 ) {
3117             return (
3118 0 0 0       ( $iC == 28 )
3119             or ( $iC == 32 )
3120             or ( $iC == 52 )
3121             or ( $iC == 56 )
3122             or ( $iC == 76 )
3123             or ( $iC == 80 )
3124             or ( $iC == 100 )
3125             or ( $iC == 104 )
3126             or ( ( $iC >= 122 ) and ( $iC <= 123 ) )
3127             ) ? 1 : 0;
3128             }
3129             elsif ( $iR == 124 ) {
3130             return (
3131 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 2 ) )
3132             or ( $iC == 4 )
3133             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3134             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
3135             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3136             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
3137             ) ? 1 : 0;
3138             }
3139             elsif ( $iR == 2 ) {
3140 0 0         return ( ( $iC == 124 ) ) ? 1 : 0;
3141             }
3142             elsif ( ( $iR == 8 ) or ( $iR == 128 ) ) {
3143             return (
3144 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3145             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
3146             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3147             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
3148             ) ? 1 : 0;
3149             }
3150             elsif ( ( $iR == 0 ) or ( $iR == 1 ) ) {
3151 0 0 0       return ( ( ( $iC >= 122 ) and ( $iC <= 124 ) ) ) ? 1 : 0;
3152             }
3153             elsif ( ( $iR == 7 ) or ( $iR == 125 ) or ( $iR == 127 ) ) {
3154             return (
3155 0 0 0       ( $iC == 28 )
3156             or ( $iC == 32 )
3157             or ( $iC == 52 )
3158             or ( $iC == 56 )
3159             or ( $iC == 76 )
3160             or ( $iC == 80 )
3161             or ( $iC == 100 )
3162             or ( $iC == 104 )
3163             ) ? 1 : 0;
3164             }
3165             elsif (( $iR == 30 )
3166             or ( $iR == 54 )
3167             or ( $iR == 78 )
3168             or ( $iR == 102 ) )
3169             {
3170             return (
3171 0 0 0       ( $iC == 4 )
3172             or ( $iC == 8 )
3173             or ( $iC == 28 )
3174             or ( $iC == 30 )
3175             or ( $iC == 32 )
3176             or ( $iC == 52 )
3177             or ( $iC == 54 )
3178             or ( $iC == 56 )
3179             or ( $iC == 76 )
3180             or ( $iC == 78 )
3181             or ( $iC == 80 )
3182             or ( $iC == 100 )
3183             or ( $iC == 102 )
3184             or ( $iC == 104 )
3185             or ( $iC == 124 )
3186             or ( $iC == 126 )
3187             or ( $iC == 128 )
3188             ) ? 1 : 0;
3189             }
3190             elsif (( $iR == 29 )
3191             or ( $iR == 31 )
3192             or ( $iR == 53 )
3193             or ( $iR == 55 )
3194             or ( $iR == 77 )
3195             or ( $iR == 79 )
3196             or ( $iR == 101 )
3197             or ( $iR == 103 ) )
3198             {
3199             return (
3200 0 0 0       ( $iC == 4 )
3201             or ( $iC == 8 )
3202             or ( $iC == 28 )
3203             or ( $iC == 32 )
3204             or ( $iC == 52 )
3205             or ( $iC == 56 )
3206             or ( $iC == 76 )
3207             or ( $iC == 80 )
3208             or ( $iC == 100 )
3209             or ( $iC == 104 )
3210             or ( $iC == 124 )
3211             or ( $iC == 128 )
3212             ) ? 1 : 0;
3213             }
3214             elsif (( $iR == 28 )
3215             or ( $iR == 32 )
3216             or ( $iR == 52 )
3217             or ( $iR == 56 )
3218             or ( $iR == 76 )
3219             or ( $iR == 80 )
3220             or ( $iR == 100 )
3221             or ( $iR == 104 ) )
3222             {
3223             return (
3224 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3225             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3226             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3227             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
3228             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3229             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
3230             or ( ( $iC >= 124 ) and ( $iC <= 128 ) )
3231             ) ? 1 : 0;
3232             }
3233 0           return 0;
3234             }
3235             elsif ( $iV == 30 ) {
3236 0 0 0       if ( $iR == 4 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3237             return (
3238 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
3239             or ( ( $iC >= 50 ) and ( $iC <= 54 ) )
3240             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3241             or ( ( $iC >= 102 ) and ( $iC <= 106 ) )
3242             or ( ( $iC >= 127 ) and ( $iC <= 128 ) )
3243             ) ? 1 : 0;
3244             }
3245             elsif ( $iR == 128 ) {
3246             return (
3247 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 4 ) )
3248             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
3249             or ( ( $iC >= 50 ) and ( $iC <= 54 ) )
3250             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3251             or ( ( $iC >= 102 ) and ( $iC <= 106 ) )
3252             ) ? 1 : 0;
3253             }
3254             elsif ( $iR == 127 ) {
3255 0 0 0       return ( ( $iC == 1 ) or ( ( $iC >= 3 ) and ( $iC <= 5 ) ) )
3256             ? 1
3257             : 0;
3258             }
3259             elsif ( $iR == 5 ) {
3260             return (
3261 0 0 0       ( $iC == 24 )
3262             or ( $iC == 28 )
3263             or ( $iC == 50 )
3264             or ( $iC == 54 )
3265             or ( $iC == 76 )
3266             or ( $iC == 80 )
3267             or ( $iC == 102 )
3268             or ( $iC == 106 )
3269             or ( ( $iC >= 126 ) and ( $iC <= 127 ) )
3270             ) ? 1 : 0;
3271             }
3272             elsif ( $iR == 130 ) {
3273             return (
3274 0 0 0       ( $iC == 24 )
3275             or ( $iC == 26 )
3276             or ( $iC == 28 )
3277             or ( $iC == 50 )
3278             or ( $iC == 52 )
3279             or ( $iC == 54 )
3280             or ( $iC == 76 )
3281             or ( $iC == 78 )
3282             or ( $iC == 80 )
3283             or ( $iC == 102 )
3284             or ( $iC == 104 )
3285             or ( $iC == 106 )
3286             ) ? 1 : 0;
3287             }
3288             elsif ( $iR == 126 ) {
3289 0 0 0       return ( ( $iC == 0 ) or ( $iC == 2 ) or ( $iC == 5 ) ) ? 1 : 0;
3290             }
3291             elsif ( ( $iR == 8 ) or ( $iR == 132 ) ) {
3292             return (
3293 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
3294             or ( ( $iC >= 50 ) and ( $iC <= 54 ) )
3295             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3296             or ( ( $iC >= 102 ) and ( $iC <= 106 ) )
3297             ) ? 1 : 0;
3298             }
3299             elsif ( ( $iR == 0 ) or ( $iR == 2 ) ) {
3300 0 0 0       return ( ( $iC == 126 ) or ( $iC == 128 ) ) ? 1 : 0;
3301             }
3302             elsif ( ( $iR == 1 ) or ( $iR == 3 ) ) {
3303 0 0 0       return ( ( ( $iC >= 127 ) and ( $iC <= 128 ) ) ) ? 1 : 0;
3304             }
3305             elsif ( ( $iR == 7 ) or ( $iR == 129 ) or ( $iR == 131 ) ) {
3306             return (
3307 0 0 0       ( $iC == 24 )
3308             or ( $iC == 28 )
3309             or ( $iC == 50 )
3310             or ( $iC == 54 )
3311             or ( $iC == 76 )
3312             or ( $iC == 80 )
3313             or ( $iC == 102 )
3314             or ( $iC == 106 )
3315             ) ? 1 : 0;
3316             }
3317             elsif (( $iR == 26 )
3318             or ( $iR == 52 )
3319             or ( $iR == 78 )
3320             or ( $iR == 104 ) )
3321             {
3322             return (
3323 0 0 0       ( $iC == 4 )
3324             or ( $iC == 8 )
3325             or ( $iC == 24 )
3326             or ( $iC == 26 )
3327             or ( $iC == 28 )
3328             or ( $iC == 50 )
3329             or ( $iC == 52 )
3330             or ( $iC == 54 )
3331             or ( $iC == 76 )
3332             or ( $iC == 78 )
3333             or ( $iC == 80 )
3334             or ( $iC == 102 )
3335             or ( $iC == 104 )
3336             or ( $iC == 106 )
3337             or ( $iC == 128 )
3338             or ( $iC == 130 )
3339             or ( $iC == 132 )
3340             ) ? 1 : 0;
3341             }
3342             elsif (( $iR == 25 )
3343             or ( $iR == 27 )
3344             or ( $iR == 51 )
3345             or ( $iR == 53 )
3346             or ( $iR == 77 )
3347             or ( $iR == 79 )
3348             or ( $iR == 103 )
3349             or ( $iR == 105 ) )
3350             {
3351             return (
3352 0 0 0       ( $iC == 4 )
3353             or ( $iC == 8 )
3354             or ( $iC == 24 )
3355             or ( $iC == 28 )
3356             or ( $iC == 50 )
3357             or ( $iC == 54 )
3358             or ( $iC == 76 )
3359             or ( $iC == 80 )
3360             or ( $iC == 102 )
3361             or ( $iC == 106 )
3362             or ( $iC == 128 )
3363             or ( $iC == 132 )
3364             ) ? 1 : 0;
3365             }
3366             elsif (( $iR == 24 )
3367             or ( $iR == 28 )
3368             or ( $iR == 50 )
3369             or ( $iR == 54 )
3370             or ( $iR == 76 )
3371             or ( $iR == 80 )
3372             or ( $iR == 102 )
3373             or ( $iR == 106 ) )
3374             {
3375             return (
3376 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3377             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3378             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
3379             or ( ( $iC >= 50 ) and ( $iC <= 54 ) )
3380             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3381             or ( ( $iC >= 102 ) and ( $iC <= 106 ) )
3382             or ( ( $iC >= 128 ) and ( $iC <= 132 ) )
3383             ) ? 1 : 0;
3384             }
3385 0           return 0;
3386             }
3387             elsif ( $iV == 31 ) {
3388 0 0 0       if ( $iR == 131 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3389 0 0 0       return ( ( $iC == 1 ) or ( ( $iC >= 4 ) and ( $iC <= 5 ) ) )
3390             ? 1
3391             : 0;
3392             }
3393             elsif ( $iR == 134 ) {
3394             return (
3395 0 0 0       ( $iC == 28 )
3396             or ( $iC == 30 )
3397             or ( $iC == 32 )
3398             or ( $iC == 54 )
3399             or ( $iC == 56 )
3400             or ( $iC == 58 )
3401             or ( $iC == 80 )
3402             or ( $iC == 82 )
3403             or ( $iC == 84 )
3404             or ( $iC == 106 )
3405             or ( $iC == 108 )
3406             or ( $iC == 110 )
3407             ) ? 1 : 0;
3408             }
3409             elsif ( $iR == 5 ) {
3410             return (
3411 0 0 0       ( $iC == 28 )
3412             or ( $iC == 32 )
3413             or ( $iC == 54 )
3414             or ( $iC == 58 )
3415             or ( $iC == 80 )
3416             or ( $iC == 84 )
3417             or ( $iC == 106 )
3418             or ( $iC == 110 )
3419             or ( ( $iC >= 130 ) and ( $iC <= 131 ) )
3420             ) ? 1 : 0;
3421             }
3422             elsif ( $iR == 130 ) {
3423 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 5 ) ) ) ? 1 : 0;
3424             }
3425             elsif ( $iR == 132 ) {
3426             return (
3427 0 0 0       ( $iC == 4 )
3428             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3429             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
3430             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
3431             or ( ( $iC >= 106 ) and ( $iC <= 110 ) )
3432             ) ? 1 : 0;
3433             }
3434             elsif ( $iR == 4 ) {
3435             return (
3436 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3437             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
3438             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
3439             or ( ( $iC >= 106 ) and ( $iC <= 110 ) )
3440             or ( ( $iC >= 130 ) and ( $iC <= 132 ) )
3441             ) ? 1 : 0;
3442             }
3443             elsif ( $iR == 1 ) {
3444 0 0         return ( ( $iC == 131 ) ) ? 1 : 0;
3445             }
3446             elsif ( ( $iR == 8 ) or ( $iR == 136 ) ) {
3447             return (
3448 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3449             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
3450             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
3451             or ( ( $iC >= 106 ) and ( $iC <= 110 ) )
3452             ) ? 1 : 0;
3453             }
3454             elsif ( ( $iR == 2 ) or ( $iR == 3 ) ) {
3455 0 0         return ( ( $iC == 130 ) ) ? 1 : 0;
3456             }
3457             elsif ( ( $iR == 7 ) or ( $iR == 133 ) or ( $iR == 135 ) ) {
3458             return (
3459 0 0 0       ( $iC == 28 )
3460             or ( $iC == 32 )
3461             or ( $iC == 54 )
3462             or ( $iC == 58 )
3463             or ( $iC == 80 )
3464             or ( $iC == 84 )
3465             or ( $iC == 106 )
3466             or ( $iC == 110 )
3467             ) ? 1 : 0;
3468             }
3469             elsif (( $iR == 30 )
3470             or ( $iR == 56 )
3471             or ( $iR == 82 )
3472             or ( $iR == 108 ) )
3473             {
3474             return (
3475 0 0 0       ( $iC == 4 )
3476             or ( $iC == 8 )
3477             or ( $iC == 28 )
3478             or ( $iC == 30 )
3479             or ( $iC == 32 )
3480             or ( $iC == 54 )
3481             or ( $iC == 56 )
3482             or ( $iC == 58 )
3483             or ( $iC == 80 )
3484             or ( $iC == 82 )
3485             or ( $iC == 84 )
3486             or ( $iC == 106 )
3487             or ( $iC == 108 )
3488             or ( $iC == 110 )
3489             or ( $iC == 132 )
3490             or ( $iC == 134 )
3491             or ( $iC == 136 )
3492             ) ? 1 : 0;
3493             }
3494             elsif (( $iR == 29 )
3495             or ( $iR == 31 )
3496             or ( $iR == 55 )
3497             or ( $iR == 57 )
3498             or ( $iR == 81 )
3499             or ( $iR == 83 )
3500             or ( $iR == 107 )
3501             or ( $iR == 109 ) )
3502             {
3503             return (
3504 0 0 0       ( $iC == 4 )
3505             or ( $iC == 8 )
3506             or ( $iC == 28 )
3507             or ( $iC == 32 )
3508             or ( $iC == 54 )
3509             or ( $iC == 58 )
3510             or ( $iC == 80 )
3511             or ( $iC == 84 )
3512             or ( $iC == 106 )
3513             or ( $iC == 110 )
3514             or ( $iC == 132 )
3515             or ( $iC == 136 )
3516             ) ? 1 : 0;
3517             }
3518             elsif (( $iR == 28 )
3519             or ( $iR == 32 )
3520             or ( $iR == 54 )
3521             or ( $iR == 58 )
3522             or ( $iR == 80 )
3523             or ( $iR == 84 )
3524             or ( $iR == 106 )
3525             or ( $iR == 110 ) )
3526             {
3527             return (
3528 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3529             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3530             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3531             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
3532             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
3533             or ( ( $iC >= 106 ) and ( $iC <= 110 ) )
3534             or ( ( $iC >= 132 ) and ( $iC <= 136 ) )
3535             ) ? 1 : 0;
3536             }
3537 0           return 0;
3538             }
3539             elsif ( $iV == 32 ) {
3540 0 0 0       if ( $iR == 134 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3541 0 0 0       return ( ( $iC == 0 ) or ( $iC == 2 ) ) ? 1 : 0;
3542             }
3543             elsif ( $iR == 5 ) {
3544             return (
3545 0 0 0       ( $iC == 32 )
3546             or ( $iC == 36 )
3547             or ( $iC == 58 )
3548             or ( $iC == 62 )
3549             or ( $iC == 84 )
3550             or ( $iC == 88 )
3551             or ( $iC == 110 )
3552             or ( $iC == 114 )
3553             or ( $iC == 136 )
3554             ) ? 1 : 0;
3555             }
3556             elsif ( $iR == 0 ) {
3557 0 0 0       return ( ( $iC == 134 ) or ( $iC == 136 ) ) ? 1 : 0;
3558             }
3559             elsif ( $iR == 138 ) {
3560             return (
3561 0 0 0       ( $iC == 32 )
3562             or ( $iC == 34 )
3563             or ( $iC == 36 )
3564             or ( $iC == 58 )
3565             or ( $iC == 60 )
3566             or ( $iC == 62 )
3567             or ( $iC == 84 )
3568             or ( $iC == 86 )
3569             or ( $iC == 88 )
3570             or ( $iC == 110 )
3571             or ( $iC == 112 )
3572             or ( $iC == 114 )
3573             ) ? 1 : 0;
3574             }
3575             elsif ( $iR == 2 ) {
3576 0 0 0       return ( ( ( $iC >= 134 ) and ( $iC <= 136 ) ) ) ? 1 : 0;
3577             }
3578             elsif ( $iR == 135 ) {
3579 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 2 ) ) ) ? 1 : 0;
3580             }
3581             elsif ( $iR == 1 ) {
3582 0 0         return ( ( $iC == 135 ) ) ? 1 : 0;
3583             }
3584             elsif ( $iR == 136 ) {
3585             return (
3586 0 0 0       ( $iC == 0 )
3587             or ( ( $iC >= 2 ) and ( $iC <= 3 ) )
3588             or ( $iC == 5 )
3589             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3590             or ( ( $iC >= 58 ) and ( $iC <= 62 ) )
3591             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3592             or ( ( $iC >= 110 ) and ( $iC <= 114 ) )
3593             ) ? 1 : 0;
3594             }
3595             elsif ( $iR == 3 ) {
3596 0 0         return ( ( $iC == 136 ) ) ? 1 : 0;
3597             }
3598             elsif ( ( $iR == 4 ) or ( $iR == 8 ) or ( $iR == 140 ) ) {
3599             return (
3600 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3601             or ( ( $iC >= 58 ) and ( $iC <= 62 ) )
3602             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3603             or ( ( $iC >= 110 ) and ( $iC <= 114 ) )
3604             ) ? 1 : 0;
3605             }
3606             elsif ( ( $iR == 7 ) or ( $iR == 137 ) or ( $iR == 139 ) ) {
3607             return (
3608 0 0 0       ( $iC == 32 )
3609             or ( $iC == 36 )
3610             or ( $iC == 58 )
3611             or ( $iC == 62 )
3612             or ( $iC == 84 )
3613             or ( $iC == 88 )
3614             or ( $iC == 110 )
3615             or ( $iC == 114 )
3616             ) ? 1 : 0;
3617             }
3618             elsif (( $iR == 34 )
3619             or ( $iR == 60 )
3620             or ( $iR == 86 )
3621             or ( $iR == 112 ) )
3622             {
3623             return (
3624 0 0 0       ( $iC == 4 )
3625             or ( $iC == 8 )
3626             or ( $iC == 32 )
3627             or ( $iC == 34 )
3628             or ( $iC == 36 )
3629             or ( $iC == 58 )
3630             or ( $iC == 60 )
3631             or ( $iC == 62 )
3632             or ( $iC == 84 )
3633             or ( $iC == 86 )
3634             or ( $iC == 88 )
3635             or ( $iC == 110 )
3636             or ( $iC == 112 )
3637             or ( $iC == 114 )
3638             or ( $iC == 136 )
3639             or ( $iC == 138 )
3640             or ( $iC == 140 )
3641             ) ? 1 : 0;
3642             }
3643             elsif (( $iR == 33 )
3644             or ( $iR == 35 )
3645             or ( $iR == 59 )
3646             or ( $iR == 61 )
3647             or ( $iR == 85 )
3648             or ( $iR == 87 )
3649             or ( $iR == 111 )
3650             or ( $iR == 113 ) )
3651             {
3652             return (
3653 0 0 0       ( $iC == 4 )
3654             or ( $iC == 8 )
3655             or ( $iC == 32 )
3656             or ( $iC == 36 )
3657             or ( $iC == 58 )
3658             or ( $iC == 62 )
3659             or ( $iC == 84 )
3660             or ( $iC == 88 )
3661             or ( $iC == 110 )
3662             or ( $iC == 114 )
3663             or ( $iC == 136 )
3664             or ( $iC == 140 )
3665             ) ? 1 : 0;
3666             }
3667             elsif (( $iR == 32 )
3668             or ( $iR == 36 )
3669             or ( $iR == 58 )
3670             or ( $iR == 62 )
3671             or ( $iR == 84 )
3672             or ( $iR == 88 )
3673             or ( $iR == 110 )
3674             or ( $iR == 114 ) )
3675             {
3676             return (
3677 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3678             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3679             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3680             or ( ( $iC >= 58 ) and ( $iC <= 62 ) )
3681             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3682             or ( ( $iC >= 110 ) and ( $iC <= 114 ) )
3683             or ( ( $iC >= 136 ) and ( $iC <= 140 ) )
3684             ) ? 1 : 0;
3685             }
3686 0           return 0;
3687             }
3688             elsif ( $iV == 33 ) {
3689 0 0 0       if ( $iR == 142 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3690             return (
3691 0 0 0       ( $iC == 28 )
3692             or ( $iC == 30 )
3693             or ( $iC == 32 )
3694             or ( $iC == 56 )
3695             or ( $iC == 58 )
3696             or ( $iC == 60 )
3697             or ( $iC == 84 )
3698             or ( $iC == 86 )
3699             or ( $iC == 88 )
3700             or ( $iC == 112 )
3701             or ( $iC == 114 )
3702             or ( $iC == 116 )
3703             ) ? 1 : 0;
3704             }
3705             elsif ( $iR == 4 ) {
3706             return (
3707 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3708             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
3709             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3710             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
3711             or ( $iC == 138 )
3712             ) ? 1 : 0;
3713             }
3714             elsif ( $iR == 138 ) {
3715 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
3716             }
3717             elsif ( $iR == 140 ) {
3718             return (
3719 0 0 0       ( $iC == 1 )
3720             or ( $iC == 5 )
3721             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3722             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
3723             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3724             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
3725             ) ? 1 : 0;
3726             }
3727             elsif ( $iR == 139 ) {
3728 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 3 ) ) ) ? 1 : 0;
3729             }
3730             elsif ( $iR == 1 ) {
3731 0 0 0       return ( ( ( $iC >= 139 ) and ( $iC <= 140 ) ) ) ? 1 : 0;
3732             }
3733             elsif ( $iR == 5 ) {
3734             return (
3735 0 0 0       ( $iC == 28 )
3736             or ( $iC == 32 )
3737             or ( $iC == 56 )
3738             or ( $iC == 60 )
3739             or ( $iC == 84 )
3740             or ( $iC == 88 )
3741             or ( $iC == 112 )
3742             or ( $iC == 116 )
3743             or ( $iC == 140 )
3744             ) ? 1 : 0;
3745             }
3746             elsif ( ( $iR == 8 ) or ( $iR == 144 ) ) {
3747             return (
3748 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3749             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
3750             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3751             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
3752             ) ? 1 : 0;
3753             }
3754             elsif ( ( $iR == 2 ) or ( $iR == 3 ) ) {
3755 0 0 0       return ( ( ( $iC >= 138 ) and ( $iC <= 139 ) ) ) ? 1 : 0;
3756             }
3757             elsif ( ( $iR == 7 ) or ( $iR == 141 ) or ( $iR == 143 ) ) {
3758             return (
3759 0 0 0       ( $iC == 28 )
3760             or ( $iC == 32 )
3761             or ( $iC == 56 )
3762             or ( $iC == 60 )
3763             or ( $iC == 84 )
3764             or ( $iC == 88 )
3765             or ( $iC == 112 )
3766             or ( $iC == 116 )
3767             ) ? 1 : 0;
3768             }
3769             elsif (( $iR == 30 )
3770             or ( $iR == 58 )
3771             or ( $iR == 86 )
3772             or ( $iR == 114 ) )
3773             {
3774             return (
3775 0 0 0       ( $iC == 4 )
3776             or ( $iC == 8 )
3777             or ( $iC == 28 )
3778             or ( $iC == 30 )
3779             or ( $iC == 32 )
3780             or ( $iC == 56 )
3781             or ( $iC == 58 )
3782             or ( $iC == 60 )
3783             or ( $iC == 84 )
3784             or ( $iC == 86 )
3785             or ( $iC == 88 )
3786             or ( $iC == 112 )
3787             or ( $iC == 114 )
3788             or ( $iC == 116 )
3789             or ( $iC == 140 )
3790             or ( $iC == 142 )
3791             or ( $iC == 144 )
3792             ) ? 1 : 0;
3793             }
3794             elsif (( $iR == 28 )
3795             or ( $iR == 32 )
3796             or ( $iR == 56 )
3797             or ( $iR == 60 )
3798             or ( $iR == 84 )
3799             or ( $iR == 88 )
3800             or ( $iR == 112 )
3801             or ( $iR == 116 ) )
3802             {
3803             return (
3804 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3805             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3806             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3807             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
3808             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3809             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
3810             or ( ( $iC >= 140 ) and ( $iC <= 144 ) )
3811             ) ? 1 : 0;
3812             }
3813             elsif (( $iR == 29 )
3814             or ( $iR == 31 )
3815             or ( $iR == 57 )
3816             or ( $iR == 59 )
3817             or ( $iR == 85 )
3818             or ( $iR == 87 )
3819             or ( $iR == 113 )
3820             or ( $iR == 115 ) )
3821             {
3822             return (
3823 0 0 0       ( $iC == 4 )
3824             or ( $iC == 8 )
3825             or ( $iC == 28 )
3826             or ( $iC == 32 )
3827             or ( $iC == 56 )
3828             or ( $iC == 60 )
3829             or ( $iC == 84 )
3830             or ( $iC == 88 )
3831             or ( $iC == 112 )
3832             or ( $iC == 116 )
3833             or ( $iC == 140 )
3834             or ( $iC == 144 )
3835             ) ? 1 : 0;
3836             }
3837 0           return 0;
3838             }
3839             elsif ( $iV == 34 ) {
3840 0 0 0       if ( $iR == 4 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3841             return (
3842 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3843             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
3844             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
3845             or ( ( $iC >= 116 ) and ( $iC <= 120 ) )
3846             or ( $iC == 143 )
3847             ) ? 1 : 0;
3848             }
3849             elsif ( $iR == 142 ) {
3850 0 0         return ( ( $iC == 1 ) ) ? 1 : 0;
3851             }
3852             elsif ( $iR == 5 ) {
3853             return (
3854 0 0 0       ( $iC == 32 )
3855             or ( $iC == 36 )
3856             or ( $iC == 60 )
3857             or ( $iC == 64 )
3858             or ( $iC == 88 )
3859             or ( $iC == 92 )
3860             or ( $iC == 116 )
3861             or ( $iC == 120 )
3862             or ( $iC == 144 )
3863             ) ? 1 : 0;
3864             }
3865             elsif ( $iR == 146 ) {
3866             return (
3867 0 0 0       ( $iC == 32 )
3868             or ( $iC == 34 )
3869             or ( $iC == 36 )
3870             or ( $iC == 60 )
3871             or ( $iC == 62 )
3872             or ( $iC == 64 )
3873             or ( $iC == 88 )
3874             or ( $iC == 90 )
3875             or ( $iC == 92 )
3876             or ( $iC == 116 )
3877             or ( $iC == 118 )
3878             or ( $iC == 120 )
3879             ) ? 1 : 0;
3880             }
3881             elsif ( $iR == 144 ) {
3882             return (
3883 0 0 0       ( $iC == 1 )
3884             or ( $iC == 3 )
3885             or ( $iC == 5 )
3886             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3887             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
3888             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
3889             or ( ( $iC >= 116 ) and ( $iC <= 120 ) )
3890             ) ? 1 : 0;
3891             }
3892             elsif ( $iR == 143 ) {
3893 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 2 ) ) or ( $iC == 4 ) )
3894             ? 1
3895             : 0;
3896             }
3897             elsif ( $iR == 3 ) {
3898 0 0         return ( ( $iC == 144 ) ) ? 1 : 0;
3899             }
3900             elsif ( $iR == 1 ) {
3901 0 0 0       return ( ( ( $iC >= 142 ) and ( $iC <= 144 ) ) ) ? 1 : 0;
3902             }
3903             elsif ( ( $iR == 8 ) or ( $iR == 148 ) ) {
3904             return (
3905 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3906             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
3907             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
3908             or ( ( $iC >= 116 ) and ( $iC <= 120 ) )
3909             ) ? 1 : 0;
3910             }
3911             elsif ( ( $iR == 0 ) or ( $iR == 2 ) ) {
3912 0 0         return ( ( $iC == 143 ) ) ? 1 : 0;
3913             }
3914             elsif ( ( $iR == 7 ) or ( $iR == 145 ) or ( $iR == 147 ) ) {
3915             return (
3916 0 0 0       ( $iC == 32 )
3917             or ( $iC == 36 )
3918             or ( $iC == 60 )
3919             or ( $iC == 64 )
3920             or ( $iC == 88 )
3921             or ( $iC == 92 )
3922             or ( $iC == 116 )
3923             or ( $iC == 120 )
3924             ) ? 1 : 0;
3925             }
3926             elsif (( $iR == 34 )
3927             or ( $iR == 62 )
3928             or ( $iR == 90 )
3929             or ( $iR == 118 ) )
3930             {
3931             return (
3932 0 0 0       ( $iC == 4 )
3933             or ( $iC == 8 )
3934             or ( $iC == 32 )
3935             or ( $iC == 34 )
3936             or ( $iC == 36 )
3937             or ( $iC == 60 )
3938             or ( $iC == 62 )
3939             or ( $iC == 64 )
3940             or ( $iC == 88 )
3941             or ( $iC == 90 )
3942             or ( $iC == 92 )
3943             or ( $iC == 116 )
3944             or ( $iC == 118 )
3945             or ( $iC == 120 )
3946             or ( $iC == 144 )
3947             or ( $iC == 146 )
3948             or ( $iC == 148 )
3949             ) ? 1 : 0;
3950             }
3951             elsif (( $iR == 32 )
3952             or ( $iR == 36 )
3953             or ( $iR == 60 )
3954             or ( $iR == 64 )
3955             or ( $iR == 88 )
3956             or ( $iR == 92 )
3957             or ( $iR == 116 )
3958             or ( $iR == 120 ) )
3959             {
3960             return (
3961 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3962             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3963             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3964             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
3965             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
3966             or ( ( $iC >= 116 ) and ( $iC <= 120 ) )
3967             or ( ( $iC >= 144 ) and ( $iC <= 148 ) )
3968             ) ? 1 : 0;
3969             }
3970             elsif (( $iR == 33 )
3971             or ( $iR == 35 )
3972             or ( $iR == 61 )
3973             or ( $iR == 63 )
3974             or ( $iR == 89 )
3975             or ( $iR == 91 )
3976             or ( $iR == 117 )
3977             or ( $iR == 119 ) )
3978             {
3979             return (
3980 0 0 0       ( $iC == 4 )
3981             or ( $iC == 8 )
3982             or ( $iC == 32 )
3983             or ( $iC == 36 )
3984             or ( $iC == 60 )
3985             or ( $iC == 64 )
3986             or ( $iC == 88 )
3987             or ( $iC == 92 )
3988             or ( $iC == 116 )
3989             or ( $iC == 120 )
3990             or ( $iC == 144 )
3991             or ( $iC == 148 )
3992             ) ? 1 : 0;
3993             }
3994 0           return 0;
3995             }
3996             elsif ( $iV == 35 ) {
3997 0 0 0       if ( $iR == 146 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3998             return (
3999 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
4000             or ( ( $iC >= 3 ) and ( $iC <= 4 ) )
4001             ) ? 1 : 0;
4002             }
4003             elsif ( $iR == 5 ) {
4004             return (
4005 0 0 0       ( $iC == 28 )
4006             or ( $iC == 32 )
4007             or ( $iC == 52 )
4008             or ( $iC == 56 )
4009             or ( $iC == 76 )
4010             or ( $iC == 80 )
4011             or ( $iC == 100 )
4012             or ( $iC == 104 )
4013             or ( $iC == 124 )
4014             or ( $iC == 128 )
4015             or ( $iC == 148 )
4016             ) ? 1 : 0;
4017             }
4018             elsif ( $iR == 4 ) {
4019             return (
4020 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4021             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4022             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
4023             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4024             or ( ( $iC >= 124 ) and ( $iC <= 128 ) )
4025             or ( ( $iC >= 146 ) and ( $iC <= 147 ) )
4026             ) ? 1 : 0;
4027             }
4028             elsif ( $iR == 148 ) {
4029             return (
4030 0 0 0       ( $iC == 0 )
4031             or ( $iC == 2 )
4032             or ( $iC == 5 )
4033             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4034             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4035             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
4036             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4037             or ( ( $iC >= 124 ) and ( $iC <= 128 ) )
4038             ) ? 1 : 0;
4039             }
4040             elsif ( $iR == 2 ) {
4041 0 0 0       return ( ( ( $iC >= 147 ) and ( $iC <= 148 ) ) ) ? 1 : 0;
4042             }
4043             elsif ( $iR == 0 ) {
4044 0 0 0       return ( ( ( $iC >= 146 ) and ( $iC <= 148 ) ) ) ? 1 : 0;
4045             }
4046             elsif ( $iR == 147 ) {
4047 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
4048             }
4049             elsif ( $iR == 150 ) {
4050             return (
4051 0 0 0       ( $iC == 28 )
4052             or ( $iC == 30 )
4053             or ( $iC == 32 )
4054             or ( $iC == 52 )
4055             or ( $iC == 54 )
4056             or ( $iC == 56 )
4057             or ( $iC == 76 )
4058             or ( $iC == 78 )
4059             or ( $iC == 80 )
4060             or ( $iC == 100 )
4061             or ( $iC == 102 )
4062             or ( $iC == 104 )
4063             or ( $iC == 124 )
4064             or ( $iC == 126 )
4065             or ( $iC == 128 )
4066             ) ? 1 : 0;
4067             }
4068             elsif ( ( $iR == 1 ) or ( $iR == 3 ) ) {
4069 0 0 0       return ( ( ( $iC >= 146 ) and ( $iC <= 147 ) ) ) ? 1 : 0;
4070             }
4071             elsif ( ( $iR == 8 ) or ( $iR == 152 ) ) {
4072             return (
4073 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4074             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4075             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
4076             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4077             or ( ( $iC >= 124 ) and ( $iC <= 128 ) )
4078             ) ? 1 : 0;
4079             }
4080             elsif ( ( $iR == 7 ) or ( $iR == 149 ) or ( $iR == 151 ) ) {
4081             return (
4082 0 0 0       ( $iC == 28 )
4083             or ( $iC == 32 )
4084             or ( $iC == 52 )
4085             or ( $iC == 56 )
4086             or ( $iC == 76 )
4087             or ( $iC == 80 )
4088             or ( $iC == 100 )
4089             or ( $iC == 104 )
4090             or ( $iC == 124 )
4091             or ( $iC == 128 )
4092             ) ? 1 : 0;
4093             }
4094             elsif (( $iR == 30 )
4095             or ( $iR == 54 )
4096             or ( $iR == 78 )
4097             or ( $iR == 102 )
4098             or ( $iR == 126 ) )
4099             {
4100             return (
4101 0 0 0       ( $iC == 4 )
4102             or ( $iC == 8 )
4103             or ( $iC == 28 )
4104             or ( $iC == 30 )
4105             or ( $iC == 32 )
4106             or ( $iC == 52 )
4107             or ( $iC == 54 )
4108             or ( $iC == 56 )
4109             or ( $iC == 76 )
4110             or ( $iC == 78 )
4111             or ( $iC == 80 )
4112             or ( $iC == 100 )
4113             or ( $iC == 102 )
4114             or ( $iC == 104 )
4115             or ( $iC == 124 )
4116             or ( $iC == 126 )
4117             or ( $iC == 128 )
4118             or ( $iC == 148 )
4119             or ( $iC == 150 )
4120             or ( $iC == 152 )
4121             ) ? 1 : 0;
4122             }
4123             elsif (( $iR == 29 )
4124             or ( $iR == 31 )
4125             or ( $iR == 53 )
4126             or ( $iR == 55 )
4127             or ( $iR == 77 )
4128             or ( $iR == 79 )
4129             or ( $iR == 101 )
4130             or ( $iR == 103 )
4131             or ( $iR == 125 )
4132             or ( $iR == 127 ) )
4133             {
4134             return (
4135 0 0 0       ( $iC == 4 )
4136             or ( $iC == 8 )
4137             or ( $iC == 28 )
4138             or ( $iC == 32 )
4139             or ( $iC == 52 )
4140             or ( $iC == 56 )
4141             or ( $iC == 76 )
4142             or ( $iC == 80 )
4143             or ( $iC == 100 )
4144             or ( $iC == 104 )
4145             or ( $iC == 124 )
4146             or ( $iC == 128 )
4147             or ( $iC == 148 )
4148             or ( $iC == 152 )
4149             ) ? 1 : 0;
4150             }
4151             elsif (( $iR == 28 )
4152             or ( $iR == 32 )
4153             or ( $iR == 52 )
4154             or ( $iR == 56 )
4155             or ( $iR == 76 )
4156             or ( $iR == 80 )
4157             or ( $iR == 100 )
4158             or ( $iR == 104 )
4159             or ( $iR == 124 )
4160             or ( $iR == 128 ) )
4161             {
4162             return (
4163 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4164             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
4165             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4166             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4167             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
4168             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4169             or ( ( $iC >= 124 ) and ( $iC <= 128 ) )
4170             or ( ( $iC >= 148 ) and ( $iC <= 152 ) )
4171             ) ? 1 : 0;
4172             }
4173 0           return 0;
4174             }
4175             elsif ( $iV == 36 ) {
4176 0 0 0       if ( $iR == 5 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
4177             return (
4178 0 0 0       ( $iC == 22 )
4179             or ( $iC == 26 )
4180             or ( $iC == 48 )
4181             or ( $iC == 52 )
4182             or ( $iC == 74 )
4183             or ( $iC == 78 )
4184             or ( $iC == 100 )
4185             or ( $iC == 104 )
4186             or ( $iC == 126 )
4187             or ( $iC == 130 )
4188             or ( $iC == 152 )
4189             ) ? 1 : 0;
4190             }
4191             elsif ( $iR == 4 ) {
4192             return (
4193 0 0 0       ( ( $iC >= 22 ) and ( $iC <= 26 ) )
4194             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
4195             or ( ( $iC >= 74 ) and ( $iC <= 78 ) )
4196             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4197             or ( ( $iC >= 126 ) and ( $iC <= 130 ) )
4198             or ( $iC == 152 )
4199             ) ? 1 : 0;
4200             }
4201             elsif ( $iR == 154 ) {
4202             return (
4203 0 0 0       ( $iC == 22 )
4204             or ( $iC == 24 )
4205             or ( $iC == 26 )
4206             or ( $iC == 48 )
4207             or ( $iC == 50 )
4208             or ( $iC == 52 )
4209             or ( $iC == 74 )
4210             or ( $iC == 76 )
4211             or ( $iC == 78 )
4212             or ( $iC == 100 )
4213             or ( $iC == 102 )
4214             or ( $iC == 104 )
4215             or ( $iC == 126 )
4216             or ( $iC == 128 )
4217             or ( $iC == 130 )
4218             ) ? 1 : 0;
4219             }
4220             elsif ( $iR == 150 ) {
4221 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 1 ) ) or ( $iC == 3 ) )
4222             ? 1
4223             : 0;
4224             }
4225             elsif ( $iR == 0 ) {
4226 0 0 0       return ( ( ( $iC >= 150 ) and ( $iC <= 151 ) ) ) ? 1 : 0;
4227             }
4228             elsif ( $iR == 151 ) {
4229 0 0         return ( ( $iC == 0 ) ) ? 1 : 0;
4230             }
4231             elsif ( $iR == 1 ) {
4232 0 0         return ( ( $iC == 150 ) ) ? 1 : 0;
4233             }
4234             elsif ( $iR == 152 ) {
4235             return (
4236 0 0 0       ( ( $iC >= 2 ) and ( $iC <= 5 ) )
4237             or ( ( $iC >= 22 ) and ( $iC <= 26 ) )
4238             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
4239             or ( ( $iC >= 74 ) and ( $iC <= 78 ) )
4240             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4241             or ( ( $iC >= 126 ) and ( $iC <= 130 ) )
4242             ) ? 1 : 0;
4243             }
4244             elsif ( $iR == 3 ) {
4245 0 0 0       return ( ( $iC == 150 ) or ( $iC == 152 ) ) ? 1 : 0;
4246             }
4247             elsif ( $iR == 2 ) {
4248 0 0         return ( ( $iC == 152 ) ) ? 1 : 0;
4249             }
4250             elsif ( ( $iR == 8 ) or ( $iR == 156 ) ) {
4251             return (
4252 0 0 0       ( ( $iC >= 22 ) and ( $iC <= 26 ) )
4253             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
4254             or ( ( $iC >= 74 ) and ( $iC <= 78 ) )
4255             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4256             or ( ( $iC >= 126 ) and ( $iC <= 130 ) )
4257             ) ? 1 : 0;
4258             }
4259             elsif ( ( $iR == 7 ) or ( $iR == 153 ) or ( $iR == 155 ) ) {
4260             return (
4261 0 0 0       ( $iC == 22 )
4262             or ( $iC == 26 )
4263             or ( $iC == 48 )
4264             or ( $iC == 52 )
4265             or ( $iC == 74 )
4266             or ( $iC == 78 )
4267             or ( $iC == 100 )
4268             or ( $iC == 104 )
4269             or ( $iC == 126 )
4270             or ( $iC == 130 )
4271             ) ? 1 : 0;
4272             }
4273             elsif (( $iR == 24 )
4274             or ( $iR == 50 )
4275             or ( $iR == 76 )
4276             or ( $iR == 102 )
4277             or ( $iR == 128 ) )
4278             {
4279             return (
4280 0 0 0       ( $iC == 4 )
4281             or ( $iC == 8 )
4282             or ( $iC == 22 )
4283             or ( $iC == 24 )
4284             or ( $iC == 26 )
4285             or ( $iC == 48 )
4286             or ( $iC == 50 )
4287             or ( $iC == 52 )
4288             or ( $iC == 74 )
4289             or ( $iC == 76 )
4290             or ( $iC == 78 )
4291             or ( $iC == 100 )
4292             or ( $iC == 102 )
4293             or ( $iC == 104 )
4294             or ( $iC == 126 )
4295             or ( $iC == 128 )
4296             or ( $iC == 130 )
4297             or ( $iC == 152 )
4298             or ( $iC == 154 )
4299             or ( $iC == 156 )
4300             ) ? 1 : 0;
4301             }
4302             elsif (( $iR == 22 )
4303             or ( $iR == 26 )
4304             or ( $iR == 48 )
4305             or ( $iR == 52 )
4306             or ( $iR == 74 )
4307             or ( $iR == 78 )
4308             or ( $iR == 100 )
4309             or ( $iR == 104 )
4310             or ( $iR == 126 )
4311             or ( $iR == 130 ) )
4312             {
4313             return (
4314 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4315             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
4316             or ( ( $iC >= 22 ) and ( $iC <= 26 ) )
4317             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
4318             or ( ( $iC >= 74 ) and ( $iC <= 78 ) )
4319             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4320             or ( ( $iC >= 126 ) and ( $iC <= 130 ) )
4321             or ( ( $iC >= 152 ) and ( $iC <= 156 ) )
4322             ) ? 1 : 0;
4323             }
4324             elsif (( $iR == 23 )
4325             or ( $iR == 25 )
4326             or ( $iR == 49 )
4327             or ( $iR == 51 )
4328             or ( $iR == 75 )
4329             or ( $iR == 77 )
4330             or ( $iR == 101 )
4331             or ( $iR == 103 )
4332             or ( $iR == 127 )
4333             or ( $iR == 129 ) )
4334             {
4335             return (
4336 0 0 0       ( $iC == 4 )
4337             or ( $iC == 8 )
4338             or ( $iC == 22 )
4339             or ( $iC == 26 )
4340             or ( $iC == 48 )
4341             or ( $iC == 52 )
4342             or ( $iC == 74 )
4343             or ( $iC == 78 )
4344             or ( $iC == 100 )
4345             or ( $iC == 104 )
4346             or ( $iC == 126 )
4347             or ( $iC == 130 )
4348             or ( $iC == 152 )
4349             or ( $iC == 156 )
4350             ) ? 1 : 0;
4351             }
4352 0           return 0;
4353             }
4354             elsif ( $iV == 37 ) {
4355 0 0 0       if ( $iR == 0 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
4356 0 0 0       return ( ( ( $iC >= 155 ) and ( $iC <= 156 ) ) ) ? 1 : 0;
4357             }
4358             elsif ( $iR == 1 ) {
4359 0 0 0       return ( ( $iC == 154 ) or ( $iC == 156 ) ) ? 1 : 0;
4360             }
4361             elsif ( $iR == 155 ) {
4362 0 0 0       return ( ( $iC == 0 ) or ( $iC == 3 ) ) ? 1 : 0;
4363             }
4364             elsif ( $iR == 158 ) {
4365             return (
4366 0 0 0       ( $iC == 26 )
4367             or ( $iC == 28 )
4368             or ( $iC == 30 )
4369             or ( $iC == 52 )
4370             or ( $iC == 54 )
4371             or ( $iC == 56 )
4372             or ( $iC == 78 )
4373             or ( $iC == 80 )
4374             or ( $iC == 82 )
4375             or ( $iC == 104 )
4376             or ( $iC == 106 )
4377             or ( $iC == 108 )
4378             or ( $iC == 130 )
4379             or ( $iC == 132 )
4380             or ( $iC == 134 )
4381             ) ? 1 : 0;
4382             }
4383             elsif ( $iR == 3 ) {
4384 0 0         return ( ( $iC == 155 ) ) ? 1 : 0;
4385             }
4386             elsif ( $iR == 154 ) {
4387 0 0 0       return ( ( $iC == 1 ) or ( $iC == 4 ) ) ? 1 : 0;
4388             }
4389             elsif ( $iR == 4 ) {
4390             return (
4391 0 0 0       ( ( $iC >= 26 ) and ( $iC <= 30 ) )
4392             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4393             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
4394             or ( ( $iC >= 104 ) and ( $iC <= 108 ) )
4395             or ( ( $iC >= 130 ) and ( $iC <= 134 ) )
4396             or ( $iC == 154 )
4397             or ( $iC == 156 )
4398             ) ? 1 : 0;
4399             }
4400             elsif ( $iR == 5 ) {
4401             return (
4402 0 0 0       ( $iC == 26 )
4403             or ( $iC == 30 )
4404             or ( $iC == 52 )
4405             or ( $iC == 56 )
4406             or ( $iC == 78 )
4407             or ( $iC == 82 )
4408             or ( $iC == 104 )
4409             or ( $iC == 108 )
4410             or ( $iC == 130 )
4411             or ( $iC == 134 )
4412             or ( $iC == 156 )
4413             ) ? 1 : 0;
4414             }
4415             elsif ( $iR == 156 ) {
4416             return (
4417 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
4418             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4419             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
4420             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4421             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
4422             or ( ( $iC >= 104 ) and ( $iC <= 108 ) )
4423             or ( ( $iC >= 130 ) and ( $iC <= 134 ) )
4424             ) ? 1 : 0;
4425             }
4426             elsif ( ( $iR == 8 ) or ( $iR == 160 ) ) {
4427             return (
4428 0 0 0       ( ( $iC >= 26 ) and ( $iC <= 30 ) )
4429             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4430             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
4431             or ( ( $iC >= 104 ) and ( $iC <= 108 ) )
4432             or ( ( $iC >= 130 ) and ( $iC <= 134 ) )
4433             ) ? 1 : 0;
4434             }
4435             elsif ( ( $iR == 7 ) or ( $iR == 157 ) or ( $iR == 159 ) ) {
4436             return (
4437 0 0 0       ( $iC == 26 )
4438             or ( $iC == 30 )
4439             or ( $iC == 52 )
4440             or ( $iC == 56 )
4441             or ( $iC == 78 )
4442             or ( $iC == 82 )
4443             or ( $iC == 104 )
4444             or ( $iC == 108 )
4445             or ( $iC == 130 )
4446             or ( $iC == 134 )
4447             ) ? 1 : 0;
4448             }
4449             elsif (( $iR == 28 )
4450             or ( $iR == 54 )
4451             or ( $iR == 80 )
4452             or ( $iR == 106 )
4453             or ( $iR == 132 ) )
4454             {
4455             return (
4456 0 0 0       ( $iC == 4 )
4457             or ( $iC == 8 )
4458             or ( $iC == 26 )
4459             or ( $iC == 28 )
4460             or ( $iC == 30 )
4461             or ( $iC == 52 )
4462             or ( $iC == 54 )
4463             or ( $iC == 56 )
4464             or ( $iC == 78 )
4465             or ( $iC == 80 )
4466             or ( $iC == 82 )
4467             or ( $iC == 104 )
4468             or ( $iC == 106 )
4469             or ( $iC == 108 )
4470             or ( $iC == 130 )
4471             or ( $iC == 132 )
4472             or ( $iC == 134 )
4473             or ( $iC == 156 )
4474             or ( $iC == 158 )
4475             or ( $iC == 160 )
4476             ) ? 1 : 0;
4477             }
4478             elsif (( $iR == 27 )
4479             or ( $iR == 29 )
4480             or ( $iR == 53 )
4481             or ( $iR == 55 )
4482             or ( $iR == 79 )
4483             or ( $iR == 81 )
4484             or ( $iR == 105 )
4485             or ( $iR == 107 )
4486             or ( $iR == 131 )
4487             or ( $iR == 133 ) )
4488             {
4489             return (
4490 0 0 0       ( $iC == 4 )
4491             or ( $iC == 8 )
4492             or ( $iC == 26 )
4493             or ( $iC == 30 )
4494             or ( $iC == 52 )
4495             or ( $iC == 56 )
4496             or ( $iC == 78 )
4497             or ( $iC == 82 )
4498             or ( $iC == 104 )
4499             or ( $iC == 108 )
4500             or ( $iC == 130 )
4501             or ( $iC == 134 )
4502             or ( $iC == 156 )
4503             or ( $iC == 160 )
4504             ) ? 1 : 0;
4505             }
4506             elsif (( $iR == 26 )
4507             or ( $iR == 30 )
4508             or ( $iR == 52 )
4509             or ( $iR == 56 )
4510             or ( $iR == 78 )
4511             or ( $iR == 82 )
4512             or ( $iR == 104 )
4513             or ( $iR == 108 )
4514             or ( $iR == 130 )
4515             or ( $iR == 134 ) )
4516             {
4517             return (
4518 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4519             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
4520             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
4521             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4522             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
4523             or ( ( $iC >= 104 ) and ( $iC <= 108 ) )
4524             or ( ( $iC >= 130 ) and ( $iC <= 134 ) )
4525             or ( ( $iC >= 156 ) and ( $iC <= 160 ) )
4526             ) ? 1 : 0;
4527             }
4528 0           return 0;
4529             }
4530             elsif ( $iV == 38 ) {
4531 0 0 0       if ( $iR == 3 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
4532 0 0 0       return ( ( $iC == 158 ) or ( $iC == 160 ) ) ? 1 : 0;
4533             }
4534             elsif ( $iR == 4 ) {
4535             return (
4536 0 0 0       ( ( $iC >= 30 ) and ( $iC <= 34 ) )
4537             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4538             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
4539             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4540             or ( ( $iC >= 134 ) and ( $iC <= 138 ) )
4541             or ( ( $iC >= 159 ) and ( $iC <= 160 ) )
4542             ) ? 1 : 0;
4543             }
4544             elsif ( $iR == 160 ) {
4545             return (
4546 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
4547             or ( ( $iC >= 3 ) and ( $iC <= 5 ) )
4548             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
4549             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4550             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
4551             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4552             or ( ( $iC >= 134 ) and ( $iC <= 138 ) )
4553             ) ? 1 : 0;
4554             }
4555             elsif ( $iR == 159 ) {
4556 0 0         return ( ( $iC == 4 ) ) ? 1 : 0;
4557             }
4558             elsif ( $iR == 5 ) {
4559             return (
4560 0 0 0       ( $iC == 30 )
4561             or ( $iC == 34 )
4562             or ( $iC == 56 )
4563             or ( $iC == 60 )
4564             or ( $iC == 82 )
4565             or ( $iC == 86 )
4566             or ( $iC == 108 )
4567             or ( $iC == 112 )
4568             or ( $iC == 134 )
4569             or ( $iC == 138 )
4570             or ( $iC == 160 )
4571             ) ? 1 : 0;
4572             }
4573             elsif ( $iR == 2 ) {
4574 0 0         return ( ( $iC == 158 ) ) ? 1 : 0;
4575             }
4576             elsif ( $iR == 162 ) {
4577             return (
4578 0 0 0       ( $iC == 30 )
4579             or ( $iC == 32 )
4580             or ( $iC == 34 )
4581             or ( $iC == 56 )
4582             or ( $iC == 58 )
4583             or ( $iC == 60 )
4584             or ( $iC == 82 )
4585             or ( $iC == 84 )
4586             or ( $iC == 86 )
4587             or ( $iC == 108 )
4588             or ( $iC == 110 )
4589             or ( $iC == 112 )
4590             or ( $iC == 134 )
4591             or ( $iC == 136 )
4592             or ( $iC == 138 )
4593             ) ? 1 : 0;
4594             }
4595             elsif ( $iR == 158 ) {
4596 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 3 ) ) ) ? 1 : 0;
4597             }
4598             elsif ( ( $iR == 8 ) or ( $iR == 164 ) ) {
4599             return (
4600 0 0 0       ( ( $iC >= 30 ) and ( $iC <= 34 ) )
4601             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4602             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
4603             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4604             or ( ( $iC >= 134 ) and ( $iC <= 138 ) )
4605             ) ? 1 : 0;
4606             }
4607             elsif ( ( $iR == 0 ) or ( $iR == 1 ) ) {
4608 0 0         return ( ( $iC == 160 ) ) ? 1 : 0;
4609             }
4610             elsif ( ( $iR == 7 ) or ( $iR == 161 ) or ( $iR == 163 ) ) {
4611             return (
4612 0 0 0       ( $iC == 30 )
4613             or ( $iC == 34 )
4614             or ( $iC == 56 )
4615             or ( $iC == 60 )
4616             or ( $iC == 82 )
4617             or ( $iC == 86 )
4618             or ( $iC == 108 )
4619             or ( $iC == 112 )
4620             or ( $iC == 134 )
4621             or ( $iC == 138 )
4622             ) ? 1 : 0;
4623             }
4624             elsif (( $iR == 32 )
4625             or ( $iR == 58 )
4626             or ( $iR == 84 )
4627             or ( $iR == 110 )
4628             or ( $iR == 136 ) )
4629             {
4630             return (
4631 0 0 0       ( $iC == 4 )
4632             or ( $iC == 8 )
4633             or ( $iC == 30 )
4634             or ( $iC == 32 )
4635             or ( $iC == 34 )
4636             or ( $iC == 56 )
4637             or ( $iC == 58 )
4638             or ( $iC == 60 )
4639             or ( $iC == 82 )
4640             or ( $iC == 84 )
4641             or ( $iC == 86 )
4642             or ( $iC == 108 )
4643             or ( $iC == 110 )
4644             or ( $iC == 112 )
4645             or ( $iC == 134 )
4646             or ( $iC == 136 )
4647             or ( $iC == 138 )
4648             or ( $iC == 160 )
4649             or ( $iC == 162 )
4650             or ( $iC == 164 )
4651             ) ? 1 : 0;
4652             }
4653             elsif (( $iR == 31 )
4654             or ( $iR == 33 )
4655             or ( $iR == 57 )
4656             or ( $iR == 59 )
4657             or ( $iR == 83 )
4658             or ( $iR == 85 )
4659             or ( $iR == 109 )
4660             or ( $iR == 111 )
4661             or ( $iR == 135 )
4662             or ( $iR == 137 ) )
4663             {
4664             return (
4665 0 0 0       ( $iC == 4 )
4666             or ( $iC == 8 )
4667             or ( $iC == 30 )
4668             or ( $iC == 34 )
4669             or ( $iC == 56 )
4670             or ( $iC == 60 )
4671             or ( $iC == 82 )
4672             or ( $iC == 86 )
4673             or ( $iC == 108 )
4674             or ( $iC == 112 )
4675             or ( $iC == 134 )
4676             or ( $iC == 138 )
4677             or ( $iC == 160 )
4678             or ( $iC == 164 )
4679             ) ? 1 : 0;
4680             }
4681             elsif (( $iR == 30 )
4682             or ( $iR == 34 )
4683             or ( $iR == 56 )
4684             or ( $iR == 60 )
4685             or ( $iR == 82 )
4686             or ( $iR == 86 )
4687             or ( $iR == 108 )
4688             or ( $iR == 112 )
4689             or ( $iR == 134 )
4690             or ( $iR == 138 ) )
4691             {
4692             return (
4693 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4694             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
4695             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
4696             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4697             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
4698             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4699             or ( ( $iC >= 134 ) and ( $iC <= 138 ) )
4700             or ( ( $iC >= 160 ) and ( $iC <= 164 ) )
4701             ) ? 1 : 0;
4702             }
4703 0           return 0;
4704             }
4705             elsif ( $iV == 39 ) {
4706 0 0 0       if ( $iR == 162 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
4707 0 0 0       return ( ( $iC == 0 ) or ( $iC == 2 ) or ( $iC == 4 ) ) ? 1 : 0;
4708             }
4709             elsif ( $iR == 0 ) {
4710 0 0         return ( ( $iC == 162 ) ) ? 1 : 0;
4711             }
4712             elsif ( $iR == 163 ) {
4713 0 0 0       return ( ( ( $iC >= 3 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
4714             }
4715             elsif ( $iR == 3 ) {
4716 0 0         return ( ( $iC == 163 ) ) ? 1 : 0;
4717             }
4718             elsif ( $iR == 5 ) {
4719             return (
4720 0 0 0       ( $iC == 24 )
4721             or ( $iC == 28 )
4722             or ( $iC == 52 )
4723             or ( $iC == 56 )
4724             or ( $iC == 80 )
4725             or ( $iC == 84 )
4726             or ( $iC == 108 )
4727             or ( $iC == 112 )
4728             or ( $iC == 136 )
4729             or ( $iC == 140 )
4730             or ( $iC == 164 )
4731             ) ? 1 : 0;
4732             }
4733             elsif ( $iR == 164 ) {
4734             return (
4735 0 0 0       ( $iC == 2 )
4736             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4737             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
4738             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4739             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
4740             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4741             or ( ( $iC >= 136 ) and ( $iC <= 140 ) )
4742             ) ? 1 : 0;
4743             }
4744             elsif ( $iR == 2 ) {
4745 0 0 0       return ( ( $iC == 162 ) or ( $iC == 164 ) ) ? 1 : 0;
4746             }
4747             elsif ( $iR == 166 ) {
4748             return (
4749 0 0 0       ( $iC == 24 )
4750             or ( $iC == 26 )
4751             or ( $iC == 28 )
4752             or ( $iC == 52 )
4753             or ( $iC == 54 )
4754             or ( $iC == 56 )
4755             or ( $iC == 80 )
4756             or ( $iC == 82 )
4757             or ( $iC == 84 )
4758             or ( $iC == 108 )
4759             or ( $iC == 110 )
4760             or ( $iC == 112 )
4761             or ( $iC == 136 )
4762             or ( $iC == 138 )
4763             or ( $iC == 140 )
4764             ) ? 1 : 0;
4765             }
4766             elsif ( $iR == 4 ) {
4767             return (
4768 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
4769             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4770             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
4771             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4772             or ( ( $iC >= 136 ) and ( $iC <= 140 ) )
4773             or ( ( $iC >= 162 ) and ( $iC <= 164 ) )
4774             ) ? 1 : 0;
4775             }
4776             elsif ( ( $iR == 8 ) or ( $iR == 168 ) ) {
4777             return (
4778 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
4779             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4780             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
4781             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4782             or ( ( $iC >= 136 ) and ( $iC <= 140 ) )
4783             ) ? 1 : 0;
4784             }
4785             elsif ( ( $iR == 7 ) or ( $iR == 165 ) or ( $iR == 167 ) ) {
4786             return (
4787 0 0 0       ( $iC == 24 )
4788             or ( $iC == 28 )
4789             or ( $iC == 52 )
4790             or ( $iC == 56 )
4791             or ( $iC == 80 )
4792             or ( $iC == 84 )
4793             or ( $iC == 108 )
4794             or ( $iC == 112 )
4795             or ( $iC == 136 )
4796             or ( $iC == 140 )
4797             ) ? 1 : 0;
4798             }
4799             elsif (( $iR == 26 )
4800             or ( $iR == 54 )
4801             or ( $iR == 82 )
4802             or ( $iR == 110 )
4803             or ( $iR == 138 ) )
4804             {
4805             return (
4806 0 0 0       ( $iC == 4 )
4807             or ( $iC == 8 )
4808             or ( $iC == 24 )
4809             or ( $iC == 26 )
4810             or ( $iC == 28 )
4811             or ( $iC == 52 )
4812             or ( $iC == 54 )
4813             or ( $iC == 56 )
4814             or ( $iC == 80 )
4815             or ( $iC == 82 )
4816             or ( $iC == 84 )
4817             or ( $iC == 108 )
4818             or ( $iC == 110 )
4819             or ( $iC == 112 )
4820             or ( $iC == 136 )
4821             or ( $iC == 138 )
4822             or ( $iC == 140 )
4823             or ( $iC == 164 )
4824             or ( $iC == 166 )
4825             or ( $iC == 168 )
4826             ) ? 1 : 0;
4827             }
4828             elsif (( $iR == 25 )
4829             or ( $iR == 27 )
4830             or ( $iR == 53 )
4831             or ( $iR == 55 )
4832             or ( $iR == 81 )
4833             or ( $iR == 83 )
4834             or ( $iR == 109 )
4835             or ( $iR == 111 )
4836             or ( $iR == 137 )
4837             or ( $iR == 139 ) )
4838             {
4839             return (
4840 0 0 0       ( $iC == 4 )
4841             or ( $iC == 8 )
4842             or ( $iC == 24 )
4843             or ( $iC == 28 )
4844             or ( $iC == 52 )
4845             or ( $iC == 56 )
4846             or ( $iC == 80 )
4847             or ( $iC == 84 )
4848             or ( $iC == 108 )
4849             or ( $iC == 112 )
4850             or ( $iC == 136 )
4851             or ( $iC == 140 )
4852             or ( $iC == 164 )
4853             or ( $iC == 168 )
4854             ) ? 1 : 0;
4855             }
4856             elsif (( $iR == 24 )
4857             or ( $iR == 28 )
4858             or ( $iR == 52 )
4859             or ( $iR == 56 )
4860             or ( $iR == 80 )
4861             or ( $iR == 84 )
4862             or ( $iR == 108 )
4863             or ( $iR == 112 )
4864             or ( $iR == 136 )
4865             or ( $iR == 140 ) )
4866             {
4867             return (
4868 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4869             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
4870             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
4871             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4872             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
4873             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4874             or ( ( $iC >= 136 ) and ( $iC <= 140 ) )
4875             or ( ( $iC >= 164 ) and ( $iC <= 168 ) )
4876             ) ? 1 : 0;
4877             }
4878 0           return 0;
4879             }
4880             elsif ( $iV == 40 ) {
4881 0 0 0       if ( $iR == 1 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
4882 0 0 0       return ( ( $iC == 166 ) or ( $iC == 168 ) ) ? 1 : 0;
4883             }
4884             elsif ( $iR == 5 ) {
4885             return (
4886 0 0 0       ( $iC == 28 )
4887             or ( $iC == 32 )
4888             or ( $iC == 56 )
4889             or ( $iC == 60 )
4890             or ( $iC == 84 )
4891             or ( $iC == 88 )
4892             or ( $iC == 112 )
4893             or ( $iC == 116 )
4894             or ( $iC == 140 )
4895             or ( $iC == 144 )
4896             or ( $iC == 166 )
4897             or ( $iC == 168 )
4898             ) ? 1 : 0;
4899             }
4900             elsif ( $iR == 3 ) {
4901 0 0 0       return ( ( ( $iC >= 167 ) and ( $iC <= 168 ) ) ) ? 1 : 0;
4902             }
4903             elsif ( $iR == 168 ) {
4904             return (
4905 0 0 0       ( $iC == 1 )
4906             or ( $iC == 3 )
4907             or ( $iC == 5 )
4908             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4909             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4910             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
4911             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
4912             or ( ( $iC >= 140 ) and ( $iC <= 144 ) )
4913             ) ? 1 : 0;
4914             }
4915             elsif ( $iR == 167 ) {
4916 0 0         return ( ( $iC == 3 ) ) ? 1 : 0;
4917             }
4918             elsif ( $iR == 166 ) {
4919 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 2 ) ) or ( $iC == 5 ) )
4920             ? 1
4921             : 0;
4922             }
4923             elsif ( $iR == 170 ) {
4924             return (
4925 0 0 0       ( $iC == 28 )
4926             or ( $iC == 30 )
4927             or ( $iC == 32 )
4928             or ( $iC == 56 )
4929             or ( $iC == 58 )
4930             or ( $iC == 60 )
4931             or ( $iC == 84 )
4932             or ( $iC == 86 )
4933             or ( $iC == 88 )
4934             or ( $iC == 112 )
4935             or ( $iC == 114 )
4936             or ( $iC == 116 )
4937             or ( $iC == 140 )
4938             or ( $iC == 142 )
4939             or ( $iC == 144 )
4940             ) ? 1 : 0;
4941             }
4942             elsif ( ( $iR == 0 ) or ( $iR == 2 ) ) {
4943 0 0         return ( ( $iC == 166 ) ) ? 1 : 0;
4944             }
4945             elsif ( ( $iR == 7 ) or ( $iR == 169 ) or ( $iR == 171 ) ) {
4946             return (
4947 0 0 0       ( $iC == 28 )
4948             or ( $iC == 32 )
4949             or ( $iC == 56 )
4950             or ( $iC == 60 )
4951             or ( $iC == 84 )
4952             or ( $iC == 88 )
4953             or ( $iC == 112 )
4954             or ( $iC == 116 )
4955             or ( $iC == 140 )
4956             or ( $iC == 144 )
4957             ) ? 1 : 0;
4958             }
4959             elsif ( ( $iR == 4 ) or ( $iR == 8 ) or ( $iR == 172 ) ) {
4960             return (
4961 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4962             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4963             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
4964             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
4965             or ( ( $iC >= 140 ) and ( $iC <= 144 ) )
4966             ) ? 1 : 0;
4967             }
4968             elsif (( $iR == 30 )
4969             or ( $iR == 58 )
4970             or ( $iR == 86 )
4971             or ( $iR == 114 )
4972             or ( $iR == 142 ) )
4973             {
4974             return (
4975 0 0 0       ( $iC == 4 )
4976             or ( $iC == 8 )
4977             or ( $iC == 28 )
4978             or ( $iC == 30 )
4979             or ( $iC == 32 )
4980             or ( $iC == 56 )
4981             or ( $iC == 58 )
4982             or ( $iC == 60 )
4983             or ( $iC == 84 )
4984             or ( $iC == 86 )
4985             or ( $iC == 88 )
4986             or ( $iC == 112 )
4987             or ( $iC == 114 )
4988             or ( $iC == 116 )
4989             or ( $iC == 140 )
4990             or ( $iC == 142 )
4991             or ( $iC == 144 )
4992             or ( $iC == 168 )
4993             or ( $iC == 170 )
4994             or ( $iC == 172 )
4995             ) ? 1 : 0;
4996             }
4997             elsif (( $iR == 28 )
4998             or ( $iR == 32 )
4999             or ( $iR == 56 )
5000             or ( $iR == 60 )
5001             or ( $iR == 84 )
5002             or ( $iR == 88 )
5003             or ( $iR == 112 )
5004             or ( $iR == 116 )
5005             or ( $iR == 140 )
5006             or ( $iR == 144 ) )
5007             {
5008             return (
5009 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
5010             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
5011             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
5012             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
5013             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
5014             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
5015             or ( ( $iC >= 140 ) and ( $iC <= 144 ) )
5016             or ( ( $iC >= 168 ) and ( $iC <= 172 ) )
5017             ) ? 1 : 0;
5018             }
5019             elsif (( $iR == 29 )
5020             or ( $iR == 31 )
5021             or ( $iR == 57 )
5022             or ( $iR == 59 )
5023             or ( $iR == 85 )
5024             or ( $iR == 87 )
5025             or ( $iR == 113 )
5026             or ( $iR == 115 )
5027             or ( $iR == 141 )
5028             or ( $iR == 143 ) )
5029             {
5030             return (
5031 0 0 0       ( $iC == 4 )
5032             or ( $iC == 8 )
5033             or ( $iC == 28 )
5034             or ( $iC == 32 )
5035             or ( $iC == 56 )
5036             or ( $iC == 60 )
5037             or ( $iC == 84 )
5038             or ( $iC == 88 )
5039             or ( $iC == 112 )
5040             or ( $iC == 116 )
5041             or ( $iC == 140 )
5042             or ( $iC == 144 )
5043             or ( $iC == 168 )
5044             or ( $iC == 172 )
5045             ) ? 1 : 0;
5046             }
5047 0           return 0;
5048             }
5049             }
5050             1;
5051             __END__