home *** CD-ROM | disk | FTP | other *** search
/ NOVA - For the NeXT Workstation / NOVA - For the NeXT Workstation.iso / Apps / ArchiveUtils / nx_arc / dtimep.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-20  |  29.3 KB  |  1,550 lines

  1. # include "stdio.h"
  2. static int start_cond = 0;
  3. #define BEGIN start_cond =
  4. struct yysvf { 
  5.     struct yywork *yystoff;
  6.     struct yysvf *yyother;
  7.     int *yystops;};
  8. # define Z 2
  9. /* dtimep.lex - routines to do ``ARPA-style'' time parsing
  10.  
  11. ver  date   who remarks
  12. --- ------- --- -------------------------------------------------------------
  13. 01B 15nov86 JP  Thouroughly hacked by Jef Poskanzer.
  14. 01A ??????? MTR Original version from the MH 6.5 distribution, courtesy
  15.               of Marshall Rose.
  16.  
  17. */
  18.  
  19. #include "tws.h"
  20. #include <ctype.h>
  21. #include <sys/types.h>
  22. #include <time.h>
  23. #ifdef SYS5
  24. #include <string.h>
  25. #else SYS5
  26. #include <strings.h>
  27. #include <sys/timeb.h>
  28. #endif SYS5
  29.  
  30. #ifdef SYS5
  31. extern int  daylight;
  32. extern long timezone;
  33. extern char *tzname[];
  34. #endif SYS5
  35.  
  36. /*
  37.  * Table to convert month names to numeric month.  We use the
  38.  * fact that the low order 5 bits of the sum of the 2nd & 3rd
  39.  * characters of the name is a hash with no collisions for the 12
  40.  * valid month names.  (The mask to 5 bits maps any combination of
  41.  * upper and lower case into the same hash value).
  42.  */
  43. static int month_map[] = {
  44.     0,
  45.     6,    /* 1 - Jul */
  46.     3,    /* 2 - Apr */
  47.     5,    /* 3 - Jun */
  48.     0,
  49.     10,    /* 5 - Nov */
  50.     0,
  51.     1,    /* 7 - Feb */
  52.     11,    /* 8 - Dec */
  53.     0,
  54.     0,
  55.     0,
  56.     0,
  57.     0,
  58.     0,
  59.     0,    /*15 - Jan */
  60.     0,
  61.     0,
  62.     0,
  63.     2,    /*19 - Mar */
  64.     0,
  65.     8,    /*21 - Sep */
  66.     0,
  67.     9,    /*23 - Oct */
  68.     0,
  69.     0,
  70.     4,    /*26 - May */
  71.     0,
  72.     7 };    /*28 - Aug */
  73. /*
  74.  * Same trick for day-of-week using the hash function
  75.  *  (c1 & 7) + (c2 & 4)
  76.  */
  77. static int day_map[] = {
  78.     0,
  79.     0,
  80.     0,
  81.     6,    /* 3 - Sat */
  82.     4,    /* 4 - Thu */
  83.     0,
  84.     5,    /* 6 - Fri */
  85.     0,    /* 7 - Sun */
  86.     2,    /* 8 - Tue */
  87.     1    /* 9 - Mon */,
  88.     0,
  89.     3 };    /*11 - Wed */
  90. #define SETDAY tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)];\
  91.         tw.tw_flags |= TW_SEXP;\
  92.         cp += 2;
  93. #define SETMONTH tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; gotdate++;\
  94.          cp += 2;\
  95.          SKIPD;
  96. #define CVT1OR2 (i=(*cp++ - '0'), isdigit(*cp)? i*10 + (*cp++ - '0') : i)
  97. #define CVT2 ( (*cp++ - '0')*10 + (*cp++ - '0') )
  98. #define CVT3 ( ( (*cp++ - '0')*10 + (*cp++ - '0') )*10 + (*cp++ - '0') )
  99. #define CVT4 ( ( ( (*cp++ - '0')*10 + (*cp++ - '0') )*10 + (*cp++ - '0') )*10 + (*cp++ - '0') )
  100. #define SKIPD while ( ! isdigit( *cp++ ) ) ; --cp;
  101. #define ZONE(x) tw.tw_zone=(x);
  102. #define ZONED(x) tw.tw_zone=(x); tw.tw_flags |= TW_DST;
  103. #define LC(c) (isupper( c ) ? tolower( c ) : ( c ))
  104. struct tws *
  105. dparsetime( str )
  106. char *str;
  107.     {
  108.     register int i;
  109.     static struct tws tw;
  110.     register char *cp;
  111.     register int gotdate = 0;
  112. #ifndef SYS5
  113.     struct timeb    tb;
  114. #endif not SYS5
  115.     long clock;
  116.  
  117.     start_cond = 0;
  118.  
  119.     /* Zero out the struct. */
  120.     bzero( (char *) &tw, sizeof tw );
  121.  
  122.     /* Set default time zone. */
  123. #ifndef SYS5
  124.     ftime( &tb );
  125.     tw.tw_zone = -tb.timezone;
  126. #else SYS5
  127.     tzset( );
  128.     tw.tw_zone = -(timezone / 60);
  129. #endif SYS5
  130.  
  131.     for ( ; ; )
  132.     switch ( cp = str, lex_string( &str, start_cond ) )
  133.         {
  134.         case -1:
  135.         if ( ! gotdate )
  136.             return ( NULL );
  137.         tw.tw_flags |= TW_JUNK;
  138.         /* fall through */
  139.         case 0:
  140.         if ( tw.tw_year == 0 )
  141.             {
  142.             /* Set default year. */
  143.             time( &clock );
  144.             tw.tw_year = localtime( &clock ) -> tm_year;
  145.             }
  146.         return ( &tw );
  147.  
  148. case 1:
  149.             SETDAY;
  150. break;
  151. case 2:
  152.         cp++, SETDAY;
  153. break;
  154. case 3:
  155. {
  156. #ifdef EUROPE
  157.                     tw.tw_mday = CVT1OR2; cp++;
  158.                     tw.tw_mon  = CVT1OR2 - 1; cp++;
  159. #else EUROPE
  160.                     tw.tw_mon = CVT1OR2 - 1; cp++;
  161.                     tw.tw_mday  = CVT1OR2; cp++;
  162. #endif EUROPE
  163.                     for ( i = 0; isdigit( *cp ); )
  164.                         i = i * 10 + (*cp++ - '0');
  165.                     tw.tw_year = i;
  166.                     gotdate++;
  167.                     }
  168. break;
  169. case 4:
  170.         {
  171. #ifdef EUROPE
  172.                     tw.tw_mday = CVT1OR2; cp++;
  173.                     tw.tw_mon  = CVT1OR2 - 1;
  174. #else EUROPE
  175.                     tw.tw_mon = CVT1OR2 - 1; cp++;
  176.                     tw.tw_mday  = CVT1OR2;
  177. #endif EUROPE
  178.                     gotdate++;
  179.                     }
  180. break;
  181. case 5:
  182. {
  183.                     tw.tw_mday = CVT1OR2;
  184.                     while ( ! isalpha( *cp++ ) )
  185.                         ;
  186.                     SETMONTH;
  187.                     for ( i = 0; isdigit( *cp ); )
  188.                         i = i * 10 + (*cp++ - '0');
  189.                     tw.tw_year = i;
  190.                     gotdate++;
  191.                     }
  192. break;
  193. case 6:
  194.     {
  195.                     tw.tw_mday = CVT1OR2;
  196.                     while ( ! isalpha( *cp++ ) )
  197.                         ;
  198.                     SETMONTH;
  199.                     gotdate++;
  200.                     }
  201. break;
  202. case 7:
  203. {
  204.                     cp++;
  205.                     SETMONTH;
  206.                     tw.tw_mday = CVT1OR2;
  207.                     SKIPD;
  208.                     for ( i = 0; isdigit( *cp ); )
  209.                         i = i * 10 + (*cp++ - '0');
  210.                     tw.tw_year = i;
  211.                     gotdate++;
  212.                     }
  213. break;
  214. case 8:
  215.         {
  216.                     cp++;
  217.                     SETMONTH;
  218.                     tw.tw_mday = CVT1OR2;
  219.                     gotdate++;
  220.                     }
  221. break;
  222. case 9:
  223.         {
  224.                     tw.tw_hour = CVT1OR2; cp++;
  225.                     tw.tw_min  = CVT1OR2; cp++;
  226.                     tw.tw_sec  = CVT1OR2;
  227.                     BEGIN Z;
  228.                     }
  229. break;
  230. case 10:
  231.         {
  232.                     tw.tw_hour = CVT1OR2 + 12; cp++;
  233.                     tw.tw_min  = CVT1OR2; cp++;
  234.                     tw.tw_sec  = CVT1OR2;
  235.                     BEGIN Z;
  236.                     }
  237. break;
  238. case 11:
  239.         {
  240.                     tw.tw_hour = CVT1OR2; cp++;
  241.                     tw.tw_min  = CVT1OR2;
  242.                     BEGIN Z;
  243.                     }
  244. break;
  245. case 12:
  246.             {
  247.                     tw.tw_hour = CVT1OR2 + 12; cp++;
  248.                     tw.tw_min  = CVT1OR2;
  249.                     BEGIN Z;
  250.                     }
  251. break;
  252. case 13:
  253.         {
  254.                     tw.tw_hour = CVT1OR2;
  255.                     tw.tw_min  = CVT1OR2;
  256.                     tw.tw_sec  = CVT1OR2;
  257.                     BEGIN Z;
  258.                     }
  259. break;
  260. case 14:
  261.         {
  262.                     tw.tw_hour = CVT1OR2;
  263.                     tw.tw_min  = CVT1OR2;
  264.                     BEGIN Z;
  265.                     }
  266. break;
  267. case 15:
  268.             ZONE(0 * 60);
  269. break;
  270. case 16:
  271.             ZONE(0 * 60);
  272. break;
  273. case 17:
  274.             ZONE(2 * 60);
  275. break;
  276. case 18:
  277.             ZONED(2 * 60);
  278. break;
  279. case 19:
  280.             ZONE(-5 * 60);
  281. break;
  282. case 20:
  283.             ZONED(-5 * 60);
  284. break;
  285. case 21:
  286.             ZONE(-6 * 60);
  287. break;
  288. case 22:
  289.             ZONED(-6 * 60);
  290. break;
  291. case 23:
  292.             ZONE(-7 * 60);
  293. break;
  294. case 24:
  295.             ZONED(-7 * 60);
  296. break;
  297. case 25:
  298.             ZONE(-8 * 60);
  299. break;
  300. case 26:
  301.             ZONED(-8 * 60);
  302. break;
  303. case 27:
  304.             ZONE(-(3 * 60 + 30));
  305. break;
  306. case 28:
  307.             ZONE(-4 * 60);
  308. break;
  309. case 29:
  310.             ZONED(-4 * 60);
  311. break;
  312. case 30:
  313.             ZONE(-9 * 60);
  314. break;
  315. case 31:
  316.             ZONED(-9 * 60);
  317. break;
  318. case 32:
  319.             ZONE(-10 * 60);
  320. break;
  321. case 33:
  322.             ZONED(-10 * 60);
  323. break;
  324. case 34:
  325.             ZONED(-1 * 60);
  326. break;
  327. case 35:
  328.             tw.tw_zone = 60 * (('a'-1) - LC (*cp));
  329. break;
  330. case 36:
  331.             tw.tw_zone = 60 * ('a' - LC (*cp));
  332. break;
  333. case 37:
  334.             tw.tw_zone = 60 * (LC (*cp) - 'm');
  335. break;
  336. case 38:
  337.         {
  338.                     cp++;
  339.                     tw.tw_zone = ((cp[0] * 10 + cp[1])
  340.                              -('0' * 10   + '0'))*60
  341.                             +((cp[2] * 10 + cp[3])
  342.                              -('0' * 10   + '0'));
  343. #ifdef DSTXXX
  344.                     zonehack (&tw);
  345. #endif DSTXXX
  346.                     cp += 4;
  347.                     }
  348. break;
  349. case 39:
  350.         {
  351.                     cp++;
  352.                     tw.tw_zone = (('0' * 10   + '0')
  353.                              -(cp[0] * 10 + cp[1]))*60
  354.                             +(('0' * 10   + '0')
  355.                              -(cp[2] * 10 + cp[3]));
  356. #ifdef DSTXXX
  357.                     zonehack (&tw);
  358. #endif DSTXXX
  359.                     cp += 4;
  360.                     }
  361. break;
  362. case 40:
  363.         {
  364.                     SKIPD;
  365.                     tw.tw_year = CVT4;
  366.                     }
  367. break;
  368. case 41:
  369. case 42:
  370. ;
  371. break;
  372. default: return(0);
  373. } return(0); }
  374. /* end of yylex */
  375.  
  376. #ifdef DSTXXX
  377. static
  378. zonehack( tw )
  379. register struct tws *tw;
  380.     {
  381.     register struct tm *tm;
  382.  
  383.     if ( twclock( tw ) == -1L )
  384.     return;
  385.  
  386.     tm = localtime( &tw -> tw_clock );
  387.     if ( tm -> tm_isdst )
  388.     {
  389.     tw -> tw_flags |= TW_DST;
  390.     tw -> tw_zone -= 60;
  391.     }
  392.     }
  393. #endif DSTXXX
  394.  
  395.  
  396. #ifdef SYS5
  397. /* Not all SYS5's have bzero( ). */
  398.  
  399. bzero( b, length )
  400. char *b;
  401. int length;
  402.     {
  403.     while ( length-- > 0 )
  404.     *b++ = 0;
  405.     }
  406. #endif
  407. int yyvstop[] ={
  408. 0,
  409.  
  410. 42,
  411. 0,
  412.  
  413. 41,
  414. 0,
  415.  
  416. 42,
  417. 0,
  418.  
  419. 35,
  420. 0,
  421.  
  422. 35,
  423. 0,
  424.  
  425. 35,
  426. 0,
  427.  
  428. 35,
  429. 0,
  430.  
  431. 35,
  432. 0,
  433.  
  434. 35,
  435. 0,
  436.  
  437. 35,
  438. 0,
  439.  
  440. 35,
  441. 0,
  442.  
  443. 35,
  444. 0,
  445.  
  446. 36,
  447. 0,
  448.  
  449. 36,
  450. 0,
  451.  
  452. 37,
  453. 0,
  454.  
  455. 37,
  456. 0,
  457.  
  458. 37,
  459. 0,
  460.  
  461. 37,
  462. 0,
  463.  
  464. 37,
  465. 0,
  466.  
  467. 37,
  468. 0,
  469.  
  470. 37,
  471. 0,
  472.  
  473. 37,
  474. 0,
  475.  
  476. 37,
  477. 0,
  478.  
  479. 15,
  480. 0,
  481.  
  482. 4,
  483. 0,
  484.  
  485. 4,
  486. 0,
  487.  
  488. 11,
  489. 0,
  490.  
  491. 1,
  492. 0,
  493.  
  494. 1,
  495. 0,
  496.  
  497. 1,
  498. 0,
  499.  
  500. 1,
  501. 0,
  502.  
  503. 1,
  504. 0,
  505.  
  506. 1,
  507. 0,
  508.  
  509. 1,
  510. 0,
  511.  
  512. 29,
  513. 0,
  514.  
  515. 28,
  516. 0,
  517.  
  518. 34,
  519. 0,
  520.  
  521. 22,
  522. 0,
  523.  
  524. 21,
  525. 0,
  526.  
  527. 20,
  528. 0,
  529.  
  530. 19,
  531. 0,
  532.  
  533. 16,
  534. 0,
  535.  
  536. 33,
  537. 0,
  538.  
  539. 32,
  540. 0,
  541.  
  542. 18,
  543. 0,
  544.  
  545. 17,
  546. 0,
  547.  
  548. 24,
  549. 0,
  550.  
  551. 23,
  552. 0,
  553.  
  554. 27,
  555. 0,
  556.  
  557. 26,
  558. 0,
  559.  
  560. 25,
  561. 0,
  562.  
  563. 31,
  564. 0,
  565.  
  566. 30,
  567. 0,
  568.  
  569. 4,
  570. 0,
  571.  
  572. 4,
  573. 0,
  574.  
  575. 4,
  576. 0,
  577.  
  578. 14,
  579. 0,
  580.  
  581. 11,
  582. 0,
  583.  
  584. 11,
  585. 0,
  586.  
  587. 6,
  588. 0,
  589.  
  590. 6,
  591. 0,
  592.  
  593. 6,
  594. 0,
  595.  
  596. 6,
  597. 0,
  598.  
  599. 6,
  600. 0,
  601.  
  602. 6,
  603. 0,
  604.  
  605. 6,
  606. 0,
  607.  
  608. 6,
  609. 0,
  610.  
  611. 6,
  612. 0,
  613.  
  614. 6,
  615. 0,
  616.  
  617. 6,
  618. 0,
  619.  
  620. 6,
  621. 0,
  622.  
  623. 1,
  624. 0,
  625.  
  626. 2,
  627. 0,
  628.  
  629. 6,
  630. 0,
  631.  
  632. 6,
  633. 0,
  634.  
  635. 6,
  636. 0,
  637.  
  638. 6,
  639. 0,
  640.  
  641. 6,
  642. 0,
  643.  
  644. 6,
  645. 0,
  646.  
  647. 6,
  648. 0,
  649.  
  650. 6,
  651. 0,
  652.  
  653. 6,
  654. 0,
  655.  
  656. 6,
  657. 0,
  658.  
  659. 6,
  660. 0,
  661.  
  662. 6,
  663. 0,
  664.  
  665. 14,
  666. 0,
  667.  
  668. 9,
  669. 0,
  670.  
  671. 11,
  672. 0,
  673.  
  674. 12,
  675. 0,
  676.  
  677. 6,
  678. 0,
  679.  
  680. 8,
  681. 0,
  682.  
  683. 40,
  684. 0,
  685.  
  686. 38,
  687. 0,
  688.  
  689. 39,
  690. 0,
  691.  
  692. 2,
  693. 0,
  694.  
  695. 3,
  696. 0,
  697.  
  698. 13,
  699. 0,
  700.  
  701. 9,
  702. 0,
  703.  
  704. 5,
  705. 0,
  706.  
  707. 8,
  708. 0,
  709.  
  710. 8,
  711. 0,
  712.  
  713. 1,
  714. 0,
  715.  
  716. 3,
  717. 0,
  718.  
  719. 3,
  720. 0,
  721.  
  722. 9,
  723. 0,
  724.  
  725. 10,
  726. 0,
  727.  
  728. 6,
  729. 0,
  730.  
  731. 5,
  732. 0,
  733.  
  734. 5,
  735. 0,
  736.  
  737. 5,
  738. 0,
  739.  
  740. 5,
  741. 0,
  742.  
  743. 7,
  744. 0,
  745.  
  746. 7,
  747. 0,
  748.  
  749. 7,
  750. 0,
  751. 0};
  752. # define YYTYPE int
  753. struct yywork { YYTYPE verify, advance; } yycrank[] ={
  754. 0,0,    0,0,    0,0,    0,0,    
  755. 0,0,    0,0,    0,0,    0,0,    
  756. 0,0,    0,0,    1,5,    1,6,    
  757. 0,0,    0,0,    0,0,    0,0,    
  758. 0,0,    0,0,    0,0,    0,0,    
  759. 0,0,    0,0,    0,0,    0,0,    
  760. 0,0,    0,0,    0,0,    0,0,    
  761. 0,0,    0,0,    0,0,    0,0,    
  762. 0,0,    1,5,    0,0,    0,0,    
  763. 3,20,    3,6,    5,5,    0,0,    
  764. 0,0,    1,7,    0,0,    0,0,    
  765. 0,0,    0,0,    0,0,    0,0,    
  766. 0,0,    1,8,    1,8,    1,8,    
  767. 1,9,    1,9,    1,9,    1,9,    
  768. 1,9,    1,9,    1,9,    3,20,    
  769. 0,0,    5,5,    0,0,    0,0,    
  770. 0,0,    0,0,    0,0,    3,7,    
  771. 0,0,    0,0,    3,21,    0,0,    
  772. 3,22,    0,0,    0,0,    3,8,    
  773. 3,8,    3,8,    3,9,    3,9,    
  774. 3,9,    3,9,    3,9,    3,9,    
  775. 3,9,    9,62,    9,62,    9,62,    
  776. 9,62,    9,62,    9,62,    9,62,    
  777. 9,62,    9,62,    9,62,    21,81,    
  778. 21,81,    0,0,    1,10,    0,0,    
  779. 0,0,    1,11,    0,0,    1,12,    
  780. 0,0,    0,0,    0,0,    1,13,    
  781. 0,0,    0,0,    1,14,    1,15,    
  782. 1,16,    0,0,    0,0,    0,0,    
  783. 1,17,    1,18,    0,0,    0,0,    
  784. 1,19,    0,0,    0,0,    0,0,    
  785. 3,23,    3,24,    3,25,    3,26,    
  786. 3,27,    3,28,    3,29,    3,30,    
  787. 3,31,    3,32,    3,33,    3,33,    
  788. 3,34,    3,35,    3,36,    3,37,    
  789. 3,38,    3,38,    3,39,    3,40,    
  790. 3,41,    3,38,    3,42,    3,38,    
  791. 3,43,    7,44,    10,63,    11,65,    
  792. 8,49,    15,72,    16,73,    10,64,    
  793. 7,45,    19,79,    24,97,    29,102,    
  794. 13,68,    41,112,    7,46,    7,47,    
  795. 20,20,    8,50,    7,48,    8,51,    
  796. 8,52,    8,52,    8,52,    8,52,    
  797. 8,52,    8,52,    8,52,    8,52,    
  798. 8,52,    8,52,    8,53,    12,66,    
  799. 13,69,    14,70,    17,74,    18,77,    
  800. 25,98,    27,100,    17,75,    20,20,    
  801. 22,82,    22,82,    35,72,    44,115,    
  802. 12,67,    45,116,    35,109,    14,71,    
  803. 18,78,    48,121,    55,144,    25,99,    
  804. 27,101,    23,95,    17,76,    20,80,    
  805. 20,80,    20,80,    20,80,    20,80,    
  806. 20,80,    20,80,    20,80,    20,80,    
  807. 20,80,    23,63,    47,119,    56,145,    
  808. 23,96,    8,54,    23,64,    30,103,    
  809. 8,55,    58,148,    8,56,    59,149,    
  810. 60,150,    37,110,    8,57,    47,120,    
  811. 46,117,    8,58,    8,59,    8,60,    
  812. 43,113,    32,68,    30,104,    8,61,    
  813. 32,105,    22,83,    22,84,    22,85,    
  814. 37,111,    22,86,    34,70,    22,87,    
  815. 22,88,    34,107,    22,89,    43,114,    
  816. 46,118,    22,90,    22,91,    32,106,    
  817. 22,92,    32,69,    57,146,    61,151,    
  818. 34,71,    22,93,    54,142,    49,122,    
  819. 34,108,    22,94,    49,123,    54,143,    
  820. 49,124,    63,152,    64,153,    65,154,    
  821. 49,125,    66,155,    67,156,    49,126,    
  822. 49,127,    49,128,    57,147,    68,157,    
  823. 71,162,    49,129,    50,130,    50,130,    
  824. 50,130,    50,130,    50,130,    50,130,    
  825. 50,130,    50,130,    50,130,    50,130,    
  826. 51,139,    51,139,    51,139,    51,139,    
  827. 51,139,    51,139,    51,139,    51,139,    
  828. 51,139,    51,139,    52,140,    52,140,    
  829. 52,140,    52,140,    52,140,    52,140,    
  830. 52,140,    52,140,    52,140,    52,140,    
  831. 53,141,    53,141,    53,141,    53,141,    
  832. 53,141,    53,141,    53,141,    53,141,    
  833. 53,141,    53,141,    62,49,    69,158,    
  834. 72,163,    69,159,    70,160,    73,164,    
  835. 74,165,    75,166,    76,167,    50,131,    
  836. 77,168,    70,161,    50,132,    62,50,    
  837. 50,133,    62,51,    78,169,    79,170,    
  838. 50,134,    91,109,    95,174,    50,135,    
  839. 50,136,    50,137,    96,175,    97,176,    
  840. 62,53,    50,138,    80,171,    80,171,    
  841. 80,171,    80,171,    80,171,    80,171,    
  842. 80,171,    80,171,    80,171,    80,171,    
  843. 81,172,    81,172,    81,172,    81,172,    
  844. 81,172,    81,172,    81,172,    81,172,    
  845. 81,172,    81,172,    82,173,    82,173,    
  846. 82,173,    82,173,    82,173,    82,173,    
  847. 82,173,    82,173,    82,173,    82,173,    
  848. 83,95,    98,177,    89,105,    90,107,    
  849. 99,178,    100,179,    101,180,    62,54,    
  850. 102,181,    103,182,    62,55,    104,183,    
  851. 62,56,    105,184,    106,185,    83,96,    
  852. 62,57,    89,106,    90,108,    62,58,    
  853. 62,59,    62,60,    107,186,    108,187,    
  854. 109,188,    62,61,    110,189,    111,190,    
  855. 113,191,    114,192,    115,193,    116,194,    
  856. 117,195,    118,196,    119,197,    120,198,    
  857. 121,199,    122,200,    123,202,    124,203,    
  858. 125,204,    126,206,    122,201,    127,207,    
  859. 128,208,    129,209,    130,210,    131,213,    
  860. 132,215,    133,216,    134,217,    135,219,    
  861. 131,214,    136,220,    137,221,    138,222,    
  862. 142,230,    139,210,    143,231,    144,232,    
  863. 125,205,    145,233,    146,234,    147,235,    
  864. 148,237,    147,236,    149,239,    150,240,    
  865. 151,241,    130,210,    134,218,    148,238,    
  866. 157,249,    159,161,    162,251,    163,252,    
  867. 164,253,    166,255,    167,256,    193,263,    
  868. 139,210,    194,265,    130,211,    196,267,    
  869. 199,263,    130,212,    130,212,    130,212,    
  870. 130,212,    130,212,    130,212,    130,212,    
  871. 130,212,    130,212,    130,212,    139,211,    
  872. 139,223,    139,223,    139,223,    139,223,    
  873. 139,223,    139,223,    139,223,    139,223,    
  874. 139,223,    139,223,    140,224,    140,224,    
  875. 140,224,    140,224,    140,224,    140,224,    
  876. 140,224,    140,224,    140,224,    140,224,    
  877. 141,225,    152,242,    153,242,    154,242,    
  878. 155,242,    158,242,    160,242,    161,242,    
  879. 195,263,    197,263,    200,271,    198,263,    
  880. 201,272,    202,273,    203,274,    156,247,    
  881. 204,275,    205,276,    207,280,    205,277,    
  882. 208,281,    209,282,    193,264,    141,225,    
  883. 152,242,    153,242,    154,242,    155,242,    
  884. 158,242,    160,242,    161,242,    165,247,    
  885. 168,247,    170,247,    169,247,    212,211,    
  886. 210,210,    199,270,    156,247,    141,226,    
  887. 141,226,    141,226,    141,226,    141,226,    
  888. 141,226,    141,226,    141,226,    141,226,    
  889. 141,226,    141,227,    156,247,    206,278,    
  890. 213,284,    214,285,    165,247,    168,247,    
  891. 170,247,    169,247,    206,279,    210,210,    
  892. 215,286,    216,287,    217,288,    218,289,    
  893. 220,293,    218,290,    165,247,    168,247,    
  894. 170,247,    169,247,    171,260,    171,260,    
  895. 171,260,    171,260,    171,260,    171,260,    
  896. 171,260,    171,260,    171,260,    171,260,    
  897. 219,291,    221,294,    197,268,    222,295,    
  898. 195,266,    198,269,    223,211,    219,292,    
  899. 141,228,    226,227,    228,299,    229,300,    
  900. 234,307,    236,238,    239,309,    154,245,    
  901. 160,250,    152,243,    240,310,    241,311,    
  902. 243,161,    244,313,    245,314,    141,229,    
  903. 246,315,    225,225,    156,248,    247,247,    
  904. 248,316,    155,246,    153,244,    249,317,    
  905. 250,161,    251,318,    252,319,    253,320,    
  906. 254,321,    158,161,    172,261,    172,261,    
  907. 172,261,    172,261,    172,261,    172,261,    
  908. 172,261,    172,261,    172,261,    172,261,    
  909. 225,225,    255,322,    247,247,    256,323,    
  910. 257,324,    258,325,    170,259,    259,326,    
  911. 263,330,    168,257,    224,296,    165,254,    
  912. 169,258,    173,262,    173,262,    173,262,    
  913. 173,262,    173,262,    173,262,    173,262,    
  914. 173,262,    173,262,    173,262,    211,283,    
  915. 211,283,    211,283,    211,283,    211,283,    
  916. 211,283,    211,283,    211,283,    211,283,    
  917. 211,283,    224,296,    227,298,    227,298,    
  918. 227,298,    227,298,    227,298,    227,298,    
  919. 227,298,    227,298,    227,298,    227,298,    
  920. 230,301,    264,331,    265,332,    266,333,    
  921. 267,334,    224,297,    224,297,    224,297,    
  922. 224,297,    224,297,    224,297,    224,297,    
  923. 224,297,    224,297,    224,297,    231,301,    
  924. 268,335,    269,336,    270,337,    271,338,    
  925. 273,338,    225,228,    275,343,    230,301,    
  926. 277,279,    279,338,    232,301,    278,338,    
  927. 276,338,    272,338,    280,345,    288,353,    
  928. 290,292,    274,338,    293,355,    282,338,    
  929. 225,229,    294,356,    231,301,    230,302,    
  930. 230,302,    230,302,    230,302,    230,302,    
  931. 230,302,    230,302,    230,302,    230,302,    
  932. 230,302,    232,301,    295,357,    303,238,    
  933. 304,364,    305,365,    231,302,    231,302,    
  934. 231,302,    231,302,    231,302,    231,302,    
  935. 231,302,    231,302,    231,302,    231,302,    
  936. 233,301,    232,302,    232,302,    232,302,    
  937. 232,302,    232,302,    232,302,    232,302,    
  938. 232,302,    232,302,    232,302,    260,327,    
  939. 260,327,    260,327,    260,327,    260,327,    
  940. 260,327,    260,327,    260,327,    260,327,    
  941. 260,327,    306,366,    281,338,    233,301,    
  942. 307,367,    273,341,    235,301,    308,238,    
  943. 271,339,    309,368,    278,344,    310,369,    
  944. 230,303,    296,296,    299,299,    300,300,    
  945. 311,370,    237,301,    301,301,    233,302,    
  946. 233,302,    233,302,    233,302,    233,302,    
  947. 233,302,    233,302,    233,302,    233,302,    
  948. 233,302,    235,301,    272,340,    274,342,    
  949. 238,301,    276,279,    232,305,    282,347,    
  950. 296,296,    299,299,    300,300,    231,304,    
  951. 237,301,    301,301,    313,161,    314,374,    
  952. 315,375,    235,302,    235,302,    235,302,    
  953. 235,302,    235,302,    235,302,    235,302,    
  954. 235,302,    235,302,    235,302,    238,301,    
  955. 237,302,    237,302,    237,302,    237,302,    
  956. 237,302,    237,302,    237,302,    237,302,    
  957. 237,302,    237,302,    316,376,    284,301,    
  958. 285,301,    242,242,    317,377,    238,302,    
  959. 238,302,    238,302,    238,302,    238,302,    
  960. 238,302,    238,302,    238,302,    238,302,    
  961. 238,302,    281,346,    319,378,    320,379,    
  962. 321,380,    233,306,    322,381,    324,382,    
  963. 325,383,    326,384,    284,301,    285,301,    
  964. 242,242,    261,328,    261,328,    261,328,    
  965. 261,328,    261,328,    261,328,    261,328,    
  966. 261,328,    261,328,    261,328,    284,338,    
  967. 285,338,    331,385,    301,362,    237,308,    
  968. 242,312,    242,312,    242,312,    242,312,    
  969. 242,312,    242,312,    242,312,    242,312,    
  970. 242,312,    242,312,    235,238,    262,329,    
  971. 262,329,    262,329,    262,329,    262,329,    
  972. 262,329,    262,329,    262,329,    262,329,    
  973. 262,329,    283,348,    283,348,    283,348,    
  974. 283,348,    283,348,    283,348,    283,348,    
  975. 283,348,    283,348,    283,348,    286,301,    
  976. 333,386,    287,301,    289,301,    291,301,    
  977. 292,301,    297,358,    297,358,    297,358,    
  978. 297,358,    297,358,    297,358,    297,358,    
  979. 297,358,    297,358,    297,358,    335,387,    
  980. 336,388,    337,389,    339,279,    298,359,    
  981. 340,390,    341,391,    286,301,    284,349,    
  982. 287,301,    289,301,    291,301,    292,301,    
  983. 342,392,    343,393,    344,279,    345,394,    
  984. 346,395,    312,371,    347,396,    286,338,    
  985. 285,350,    287,338,    289,338,    291,338,    
  986. 292,338,    349,292,    298,359,    302,363,    
  987. 302,363,    302,363,    302,363,    302,363,    
  988. 302,363,    302,363,    302,363,    302,363,    
  989. 302,363,    350,399,    351,400,    352,401,    
  990. 312,371,    353,402,    298,359,    298,359,    
  991. 298,359,    298,359,    298,359,    298,359,    
  992. 298,359,    298,359,    298,359,    298,359,    
  993. 312,372,    354,292,    355,403,    356,404,    
  994. 312,373,    312,373,    312,373,    312,373,    
  995. 312,373,    312,373,    312,373,    312,373,    
  996. 312,373,    312,373,    357,405,    360,406,    
  997. 361,407,    348,397,    358,358,    359,359,    
  998. 362,408,    364,238,    365,411,    286,351,    
  999. 366,412,    291,354,    338,302,    338,302,    
  1000. 338,302,    338,302,    338,302,    338,302,    
  1001. 338,302,    338,302,    338,302,    338,302,    
  1002. 367,413,    368,414,    287,352,    298,360,    
  1003. 348,397,    358,358,    359,359,    363,409,    
  1004. 369,415,    370,416,    289,292,    371,371,    
  1005. 372,417,    373,372,    374,418,    375,419,    
  1006. 376,247,    377,161,    298,361,    378,420,    
  1007. 348,398,    348,398,    348,398,    348,398,    
  1008. 348,398,    348,398,    348,398,    348,398,    
  1009. 348,398,    348,398,    363,409,    379,161,    
  1010. 380,421,    381,422,    371,371,    372,417,    
  1011. 382,423,    384,424,    385,263,    386,425,    
  1012. 387,426,    389,427,    390,279,    391,428,    
  1013. 392,429,    393,430,    363,410,    363,410,    
  1014. 363,410,    363,410,    363,410,    363,410,    
  1015. 363,410,    363,410,    363,410,    363,410,    
  1016. 394,431,    395,432,    396,433,    397,397,    
  1017. 398,397,    398,397,    398,397,    398,397,    
  1018. 398,397,    398,397,    398,397,    398,397,    
  1019. 398,397,    398,397,    399,292,    359,360,    
  1020. 400,434,    401,435,    402,436,    403,437,    
  1021. 404,438,    405,439,    406,406,    407,407,    
  1022. 408,408,    409,409,    397,397,    411,442,    
  1023. 412,443,    413,238,    359,361,    410,441,    
  1024. 410,441,    410,441,    410,441,    410,441,    
  1025. 410,441,    410,441,    410,441,    410,441,    
  1026. 410,441,    414,444,    415,238,    416,445,    
  1027. 417,417,    406,406,    407,407,    408,408,    
  1028. 409,409,    422,447,    424,448,    427,449,    
  1029. 428,450,    429,451,    430,279,    431,452,    
  1030. 432,279,    433,453,    434,454,    435,455,    
  1031. 436,292,    437,456,    438,292,    439,457,    
  1032. 440,458,    445,459,    453,461,    417,417,    
  1033. 457,462,    0,0,    441,409,    446,460,    
  1034. 446,460,    446,460,    446,460,    446,460,    
  1035. 446,460,    446,460,    446,460,    446,460,    
  1036. 446,460,    458,458,    460,463,    417,446,    
  1037. 417,446,    417,446,    417,446,    417,446,    
  1038. 417,446,    417,446,    417,446,    417,446,    
  1039. 417,446,    441,409,    463,463,    0,0,    
  1040. 0,0,    0,0,    0,0,    0,0,    
  1041. 0,0,    0,0,    0,0,    0,0,    
  1042. 458,458,    460,463,    0,0,    0,0,    
  1043. 0,0,    0,0,    0,0,    0,0,    
  1044. 0,0,    409,440,    0,0,    0,0,    
  1045. 0,0,    463,463,    0,0,    0,0,    
  1046. 0,0,    460,464,    460,464,    460,464,    
  1047. 460,464,    460,464,    460,464,    460,464,    
  1048. 460,464,    460,464,    460,464,    464,463,    
  1049. 464,463,    464,463,    464,463,    464,463,    
  1050. 464,463,    464,463,    464,463,    464,463,    
  1051. 464,463,    0,0,    0,0,    0,0,    
  1052. 0,0};
  1053. struct yysvf yysvec[] ={
  1054. 0,    0,    0,
  1055. yycrank+1,    0,        0,    
  1056. yycrank+0,    yysvec+1,    0,    
  1057. yycrank+27,    0,        0,    
  1058. yycrank+0,    yysvec+3,    0,    
  1059. yycrank+29,    0,        yyvstop+1,
  1060. yycrank+0,    0,        yyvstop+3,
  1061. yycrank+47,    0,        0,    
  1062. yycrank+120,    0,        0,    
  1063. yycrank+37,    yysvec+8,    0,    
  1064. yycrank+38,    0,        0,    
  1065. yycrank+50,    0,        0,    
  1066. yycrank+78,    0,        0,    
  1067. yycrank+63,    0,        0,    
  1068. yycrank+84,    0,        0,    
  1069. yycrank+42,    0,        0,    
  1070. yycrank+55,    0,        0,    
  1071. yycrank+85,    0,        0,    
  1072. yycrank+79,    0,        0,    
  1073. yycrank+56,    0,        0,    
  1074. yycrank+155,    0,        yyvstop+5,
  1075. yycrank+47,    0,        0,    
  1076. yycrank+140,    0,        0,    
  1077. yycrank+101,    0,        yyvstop+7,
  1078. yycrank+43,    0,        yyvstop+9,
  1079. yycrank+84,    0,        yyvstop+11,
  1080. yycrank+0,    yysvec+11,    yyvstop+13,
  1081. yycrank+85,    0,        yyvstop+15,
  1082. yycrank+0,    yysvec+12,    yyvstop+17,
  1083. yycrank+50,    0,        yyvstop+19,
  1084. yycrank+119,    0,        yyvstop+21,
  1085. yycrank+0,    0,        yyvstop+23,
  1086. yycrank+136,    0,        0,    
  1087. yycrank+0,    0,        yyvstop+25,
  1088. yycrank+145,    0,        yyvstop+27,
  1089. yycrank+79,    0,        yyvstop+29,
  1090. yycrank+0,    yysvec+16,    yyvstop+31,
  1091. yycrank+125,    0,        yyvstop+33,
  1092. yycrank+0,    0,        yyvstop+35,
  1093. yycrank+0,    yysvec+17,    yyvstop+37,
  1094. yycrank+0,    yysvec+18,    yyvstop+39,
  1095. yycrank+45,    0,        yyvstop+41,
  1096. yycrank+0,    yysvec+19,    yyvstop+43,
  1097. yycrank+132,    0,        yyvstop+45,
  1098. yycrank+77,    0,        0,    
  1099. yycrank+82,    0,        0,    
  1100. yycrank+131,    0,        0,    
  1101. yycrank+110,    0,        0,    
  1102. yycrank+96,    0,        0,    
  1103. yycrank+162,    0,        0,    
  1104. yycrank+230,    0,        0,    
  1105. yycrank+240,    0,        0,    
  1106. yycrank+250,    yysvec+8,    0,    
  1107. yycrank+260,    0,        0,    
  1108. yycrank+146,    0,        0,    
  1109. yycrank+97,    0,        0,    
  1110. yycrank+114,    0,        0,    
  1111. yycrank+157,    0,        0,    
  1112. yycrank+124,    0,        0,    
  1113. yycrank+112,    0,        0,    
  1114. yycrank+125,    0,        0,    
  1115. yycrank+154,    0,        0,    
  1116. yycrank+286,    0,        0,    
  1117. yycrank+151,    0,        0,    
  1118. yycrank+163,    0,        0,    
  1119. yycrank+168,    0,        0,    
  1120. yycrank+171,    0,        0,    
  1121. yycrank+165,    0,        0,    
  1122. yycrank+165,    0,        0,    
  1123. yycrank+211,    0,        0,    
  1124. yycrank+208,    0,        0,    
  1125. yycrank+166,    0,        0,    
  1126. yycrank+202,    0,        0,    
  1127. yycrank+207,    0,        0,    
  1128. yycrank+208,    0,        0,    
  1129. yycrank+213,    0,        0,    
  1130. yycrank+216,    0,        0,    
  1131. yycrank+211,    0,        0,    
  1132. yycrank+233,    0,        0,    
  1133. yycrank+235,    0,        0,    
  1134. yycrank+298,    0,        0,    
  1135. yycrank+308,    0,        0,    
  1136. yycrank+318,    0,        0,    
  1137. yycrank+276,    0,        0,    
  1138. yycrank+0,    yysvec+24,    0,    
  1139. yycrank+0,    yysvec+25,    0,    
  1140. yycrank+0,    yysvec+27,    0,    
  1141. yycrank+0,    yysvec+29,    0,    
  1142. yycrank+0,    yysvec+30,    0,    
  1143. yycrank+278,    0,        0,    
  1144. yycrank+279,    0,        0,    
  1145. yycrank+222,    0,        0,    
  1146. yycrank+0,    yysvec+37,    0,    
  1147. yycrank+0,    yysvec+41,    0,    
  1148. yycrank+0,    yysvec+43,    0,    
  1149. yycrank+222,    0,        0,    
  1150. yycrank+226,    0,        0,    
  1151. yycrank+227,    0,        0,    
  1152. yycrank+261,    0,        0,    
  1153. yycrank+264,    0,        0,    
  1154. yycrank+265,    0,        0,    
  1155. yycrank+266,    0,        0,    
  1156. yycrank+268,    0,        0,    
  1157. yycrank+269,    0,        0,    
  1158. yycrank+271,    0,        0,    
  1159. yycrank+273,    0,        0,    
  1160. yycrank+274,    0,        0,    
  1161. yycrank+282,    0,        0,    
  1162. yycrank+283,    0,        0,    
  1163. yycrank+284,    0,        0,    
  1164. yycrank+286,    0,        0,    
  1165. yycrank+287,    0,        0,    
  1166. yycrank+0,    0,        yyvstop+47,
  1167. yycrank+288,    0,        0,    
  1168. yycrank+289,    0,        0,    
  1169. yycrank+301,    0,        0,    
  1170. yycrank+297,    0,        0,    
  1171. yycrank+292,    0,        0,    
  1172. yycrank+299,    0,        0,    
  1173. yycrank+293,    0,        0,    
  1174. yycrank+310,    0,        0,    
  1175. yycrank+312,    0,        0,    
  1176. yycrank+301,    0,        0,    
  1177. yycrank+313,    0,        0,    
  1178. yycrank+314,    0,        0,    
  1179. yycrank+319,    0,        0,    
  1180. yycrank+320,    0,        0,    
  1181. yycrank+308,    0,        0,    
  1182. yycrank+321,    0,        0,    
  1183. yycrank+320,    0,        0,    
  1184. yycrank+413,    0,        yyvstop+49,
  1185. yycrank+311,    0,        0,    
  1186. yycrank+323,    0,        0,    
  1187. yycrank+324,    0,        0,    
  1188. yycrank+329,    0,        0,    
  1189. yycrank+330,    0,        0,    
  1190. yycrank+318,    0,        0,    
  1191. yycrank+331,    0,        0,    
  1192. yycrank+330,    0,        0,    
  1193. yycrank+424,    0,        yyvstop+51,
  1194. yycrank+434,    0,        0,    
  1195. yycrank+483,    0,        yyvstop+53,
  1196. yycrank+318,    0,        0,    
  1197. yycrank+331,    0,        0,    
  1198. yycrank+336,    0,        0,    
  1199. yycrank+339,    0,        0,    
  1200. yycrank+328,    0,        0,    
  1201. yycrank+331,    0,        0,    
  1202. yycrank+326,    0,        0,    
  1203. yycrank+324,    0,        0,    
  1204. yycrank+327,    0,        0,    
  1205. yycrank+332,    0,        0,    
  1206. yycrank+484,    0,        0,    
  1207. yycrank+485,    0,        0,    
  1208. yycrank+486,    0,        0,    
  1209. yycrank+487,    0,        0,    
  1210. yycrank+498,    0,        yyvstop+55,
  1211. yycrank+331,    yysvec+153,    0,    
  1212. yycrank+488,    0,        0,    
  1213. yycrank+348,    yysvec+154,    0,    
  1214. yycrank+489,    0,        0,    
  1215. yycrank+490,    0,        0,    
  1216. yycrank+350,    yysvec+156,    yyvstop+57,
  1217. yycrank+350,    yysvec+154,    0,    
  1218. yycrank+341,    yysvec+161,    0,    
  1219. yycrank+514,    0,        yyvstop+59,
  1220. yycrank+337,    yysvec+161,    0,    
  1221. yycrank+354,    yysvec+156,    yyvstop+61,
  1222. yycrank+515,    0,        yyvstop+63,
  1223. yycrank+517,    0,        yyvstop+65,
  1224. yycrank+516,    0,        yyvstop+67,
  1225. yycrank+514,    0,        0,    
  1226. yycrank+562,    0,        0,    
  1227. yycrank+585,    0,        0,    
  1228. yycrank+0,    0,        yyvstop+69,
  1229. yycrank+0,    0,        yyvstop+71,
  1230. yycrank+0,    0,        yyvstop+73,
  1231. yycrank+0,    0,        yyvstop+75,
  1232. yycrank+0,    0,        yyvstop+77,
  1233. yycrank+0,    0,        yyvstop+79,
  1234. yycrank+0,    0,        yyvstop+81,
  1235. yycrank+0,    0,        yyvstop+83,
  1236. yycrank+0,    0,        yyvstop+85,
  1237. yycrank+0,    0,        yyvstop+87,
  1238. yycrank+0,    0,        yyvstop+89,
  1239. yycrank+0,    0,        yyvstop+91,
  1240. yycrank+0,    0,        yyvstop+93,
  1241. yycrank+0,    0,        yyvstop+95,
  1242. yycrank+0,    0,        yyvstop+97,
  1243. yycrank+0,    0,        yyvstop+99,
  1244. yycrank+0,    0,        yyvstop+101,
  1245. yycrank+0,    0,        yyvstop+103,
  1246. yycrank+0,    0,        yyvstop+105,
  1247. yycrank+414,    0,        0,    
  1248. yycrank+357,    yysvec+193,    0,    
  1249. yycrank+459,    0,        0,    
  1250. yycrank+359,    yysvec+193,    0,    
  1251. yycrank+460,    0,        0,    
  1252. yycrank+462,    0,        0,    
  1253. yycrank+419,    0,        0,    
  1254. yycrank+388,    0,        0,    
  1255. yycrank+401,    0,        0,    
  1256. yycrank+406,    0,        0,    
  1257. yycrank+408,    0,        0,    
  1258. yycrank+398,    0,        0,    
  1259. yycrank+401,    0,        0,    
  1260. yycrank+429,    0,        0,    
  1261. yycrank+392,    0,        0,    
  1262. yycrank+396,    0,        0,    
  1263. yycrank+401,    0,        0,    
  1264. yycrank+519,    0,        yyvstop+107,
  1265. yycrank+595,    0,        0,    
  1266. yycrank+482,    yysvec+210,    yyvstop+109,
  1267. yycrank+430,    0,        0,    
  1268. yycrank+442,    0,        0,    
  1269. yycrank+453,    0,        0,    
  1270. yycrank+455,    0,        0,    
  1271. yycrank+444,    0,        0,    
  1272. yycrank+447,    0,        0,    
  1273. yycrank+458,    0,        0,    
  1274. yycrank+438,    0,        0,    
  1275. yycrank+457,    0,        0,    
  1276. yycrank+463,    0,        0,    
  1277. yycrank+531,    yysvec+210,    yyvstop+111,
  1278. yycrank+621,    0,        yyvstop+113,
  1279. yycrank+588,    0,        yyvstop+115,
  1280. yycrank+523,    yysvec+225,    yyvstop+117,
  1281. yycrank+606,    0,        0,    
  1282. yycrank+473,    0,        0,    
  1283. yycrank+474,    0,        0,    
  1284. yycrank+655,    0,        yyvstop+119,
  1285. yycrank+670,    0,        yyvstop+121,
  1286. yycrank+681,    0,        yyvstop+123,
  1287. yycrank+719,    0,        yyvstop+125,
  1288. yycrank+467,    yysvec+231,    yyvstop+127,
  1289. yycrank+745,    0,        yyvstop+129,
  1290. yycrank+484,    yysvec+232,    yyvstop+131,
  1291. yycrank+756,    0,        yyvstop+133,
  1292. yycrank+771,    0,        yyvstop+135,
  1293. yycrank+485,    yysvec+232,    yyvstop+137,
  1294. yycrank+479,    yysvec+238,    yyvstop+139,
  1295. yycrank+475,    yysvec+238,    yyvstop+141,
  1296. yycrank+808,    0,        0,    
  1297. yycrank+484,    0,        0,    
  1298. yycrank+478,    0,        0,    
  1299. yycrank+485,    0,        0,    
  1300. yycrank+479,    0,        0,    
  1301. yycrank+590,    0,        yyvstop+143,
  1302. yycrank+503,    0,        0,    
  1303. yycrank+506,    0,        0,    
  1304. yycrank+500,    0,        0,    
  1305. yycrank+508,    0,        0,    
  1306. yycrank+497,    0,        0,    
  1307. yycrank+509,    0,        0,    
  1308. yycrank+494,    0,        0,    
  1309. yycrank+520,    0,        0,    
  1310. yycrank+526,    0,        0,    
  1311. yycrank+509,    0,        0,    
  1312. yycrank+525,    0,        0,    
  1313. yycrank+526,    0,        0,    
  1314. yycrank+691,    0,        0,    
  1315. yycrank+793,    0,        0,    
  1316. yycrank+819,    0,        0,    
  1317. yycrank+584,    0,        yyvstop+145,
  1318. yycrank+568,    0,        0,    
  1319. yycrank+569,    0,        0,    
  1320. yycrank+553,    0,        0,    
  1321. yycrank+571,    0,        0,    
  1322. yycrank+565,    0,        0,    
  1323. yycrank+581,    0,        0,    
  1324. yycrank+581,    0,        0,    
  1325. yycrank+651,    0,        0,    
  1326. yycrank+661,    0,        0,    
  1327. yycrank+652,    0,        0,    
  1328. yycrank+665,    0,        0,    
  1329. yycrank+569,    yysvec+272,    0,    
  1330. yycrank+660,    0,        0,    
  1331. yycrank+587,    yysvec+273,    0,    
  1332. yycrank+659,    0,        0,    
  1333. yycrank+657,    0,        0,    
  1334. yycrank+593,    yysvec+273,    0,    
  1335. yycrank+718,    0,        0,    
  1336. yycrank+667,    0,        0,    
  1337. yycrank+829,    0,        0,    
  1338. yycrank+806,    0,        yyvstop+147,
  1339. yycrank+807,    0,        yyvstop+149,
  1340. yycrank+878,    0,        yyvstop+151,
  1341. yycrank+880,    0,        yyvstop+153,
  1342. yycrank+578,    yysvec+285,    yyvstop+155,
  1343. yycrank+881,    0,        yyvstop+157,
  1344. yycrank+595,    yysvec+286,    yyvstop+159,
  1345. yycrank+882,    0,        yyvstop+161,
  1346. yycrank+883,    0,        yyvstop+163,
  1347. yycrank+597,    yysvec+286,    yyvstop+165,
  1348. yycrank+590,    yysvec+292,    yyvstop+167,
  1349. yycrank+598,    yysvec+292,    yyvstop+169,
  1350. yycrank+752,    0,        yyvstop+171,
  1351. yycrank+845,    0,        0,    
  1352. yycrank+898,    0,        yyvstop+173,
  1353. yycrank+753,    0,        yyvstop+175,
  1354. yycrank+754,    0,        yyvstop+177,
  1355. yycrank+757,    0,        yyvstop+179,
  1356. yycrank+883,    0,        0,    
  1357. yycrank+607,    0,        0,    
  1358. yycrank+601,    0,        0,    
  1359. yycrank+608,    0,        0,    
  1360. yycrank+632,    0,        0,    
  1361. yycrank+655,    0,        0,    
  1362. yycrank+651,    0,        0,    
  1363. yycrank+648,    0,        0,    
  1364. yycrank+661,    0,        0,    
  1365. yycrank+663,    0,        0,    
  1366. yycrank+912,    0,        yyvstop+181,
  1367. yycrank+674,    0,        0,    
  1368. yycrank+693,    0,        0,    
  1369. yycrank+695,    0,        0,    
  1370. yycrank+693,    0,        0,    
  1371. yycrank+704,    0,        0,    
  1372. yycrank+0,    yysvec+316,    0,    
  1373. yycrank+732,    0,        0,    
  1374. yycrank+730,    0,        0,    
  1375. yycrank+732,    0,        0,    
  1376. yycrank+725,    0,        0,    
  1377. yycrank+0,    yysvec+316,    0,    
  1378. yycrank+735,    0,        0,    
  1379. yycrank+739,    0,        0,    
  1380. yycrank+722,    0,        0,    
  1381. yycrank+0,    0,        yyvstop+183,
  1382. yycrank+0,    0,        yyvstop+185,
  1383. yycrank+0,    0,        yyvstop+187,
  1384. yycrank+0,    0,        yyvstop+189,
  1385. yycrank+732,    0,        0,    
  1386. yycrank+0,    yysvec+331,    0,    
  1387. yycrank+788,    0,        0,    
  1388. yycrank+0,    yysvec+331,    0,    
  1389. yycrank+803,    0,        0,    
  1390. yycrank+807,    0,        0,    
  1391. yycrank+790,    0,        0,    
  1392. yycrank+934,    0,        0,    
  1393. yycrank+798,    0,        0,    
  1394. yycrank+793,    0,        0,    
  1395. yycrank+800,    0,        0,    
  1396. yycrank+799,    0,        0,    
  1397. yycrank+820,    0,        0,    
  1398. yycrank+814,    0,        0,    
  1399. yycrank+810,    0,        0,    
  1400. yycrank+822,    0,        0,    
  1401. yycrank+821,    0,        0,    
  1402. yycrank+964,    0,        yyvstop+191,
  1403. yycrank+821,    0,        0,    
  1404. yycrank+826,    0,        0,    
  1405. yycrank+833,    0,        0,    
  1406. yycrank+826,    0,        0,    
  1407. yycrank+848,    0,        0,    
  1408. yycrank+853,    0,        0,    
  1409. yycrank+849,    0,        0,    
  1410. yycrank+861,    0,        0,    
  1411. yycrank+869,    0,        0,    
  1412. yycrank+965,    0,        yyvstop+193,
  1413. yycrank+966,    0,        yyvstop+195,
  1414. yycrank+862,    0,        0,    
  1415. yycrank+863,    0,        0,    
  1416. yycrank+860,    0,        0,    
  1417. yycrank+990,    0,        yyvstop+197,
  1418. yycrank+861,    0,        0,    
  1419. yycrank+880,    0,        0,    
  1420. yycrank+883,    0,        0,    
  1421. yycrank+878,    0,        0,    
  1422. yycrank+895,    0,        0,    
  1423. yycrank+899,    0,        0,    
  1424. yycrank+892,    0,        0,    
  1425. yycrank+994,    0,        yyvstop+199,
  1426. yycrank+995,    0,        0,    
  1427. yycrank+961,    yysvec+371,    yyvstop+201,
  1428. yycrank+905,    0,        0,    
  1429. yycrank+893,    0,        0,    
  1430. yycrank+964,    yysvec+247,    yyvstop+203,
  1431. yycrank+888,    0,        0,    
  1432. yycrank+910,    0,        0,    
  1433. yycrank+909,    0,        0,    
  1434. yycrank+927,    0,        0,    
  1435. yycrank+927,    0,        0,    
  1436. yycrank+931,    0,        0,    
  1437. yycrank+0,    yysvec+316,    0,    
  1438. yycrank+929,    0,        0,    
  1439. yycrank+989,    0,        0,    
  1440. yycrank+934,    0,        0,    
  1441. yycrank+935,    0,        0,    
  1442. yycrank+0,    yysvec+331,    0,    
  1443. yycrank+933,    0,        0,    
  1444. yycrank+918,    0,        0,    
  1445. yycrank+937,    0,        0,    
  1446. yycrank+939,    0,        0,    
  1447. yycrank+923,    0,        0,    
  1448. yycrank+950,    0,        0,    
  1449. yycrank+948,    0,        0,    
  1450. yycrank+941,    0,        0,    
  1451. yycrank+1042,    0,        yyvstop+205,
  1452. yycrank+1004,    yysvec+348,    yyvstop+207,
  1453. yycrank+946,    0,        0,    
  1454. yycrank+966,    0,        0,    
  1455. yycrank+968,    0,        0,    
  1456. yycrank+952,    0,        0,    
  1457. yycrank+969,    0,        0,    
  1458. yycrank+967,    0,        0,    
  1459. yycrank+960,    0,        0,    
  1460. yycrank+1061,    0,        yyvstop+209,
  1461. yycrank+1062,    0,        yyvstop+211,
  1462. yycrank+1063,    0,        yyvstop+213,
  1463. yycrank+1064,    0,        yyvstop+215,
  1464. yycrank+1031,    yysvec+363,    yyvstop+217,
  1465. yycrank+974,    0,        0,    
  1466. yycrank+962,    0,        0,    
  1467. yycrank+956,    0,        0,    
  1468. yycrank+988,    0,        0,    
  1469. yycrank+976,    0,        0,    
  1470. yycrank+993,    0,        0,    
  1471. yycrank+1083,    0,        0,    
  1472. yycrank+0,    yysvec+379,    0,    
  1473. yycrank+0,    yysvec+377,    0,    
  1474. yycrank+0,    yysvec+379,    0,    
  1475. yycrank+0,    yysvec+316,    0,    
  1476. yycrank+996,    0,        0,    
  1477. yycrank+0,    yysvec+316,    0,    
  1478. yycrank+1001,    0,        0,    
  1479. yycrank+0,    yysvec+331,    0,    
  1480. yycrank+0,    yysvec+331,    0,    
  1481. yycrank+1002,    0,        0,    
  1482. yycrank+999,    0,        0,    
  1483. yycrank+987,    0,        0,    
  1484. yycrank+981,    0,        0,    
  1485. yycrank+1002,    0,        0,    
  1486. yycrank+990,    0,        0,    
  1487. yycrank+1007,    0,        0,    
  1488. yycrank+1005,    0,        0,    
  1489. yycrank+993,    0,        0,    
  1490. yycrank+987,    0,        0,    
  1491. yycrank+1008,    0,        0,    
  1492. yycrank+996,    0,        0,    
  1493. yycrank+1013,    0,        0,    
  1494. yycrank+996,    0,        0,    
  1495. yycrank+1109,    0,        yyvstop+219,
  1496. yycrank+0,    yysvec+415,    0,    
  1497. yycrank+0,    yysvec+413,    0,    
  1498. yycrank+0,    yysvec+415,    0,    
  1499. yycrank+1012,    0,        0,    
  1500. yycrank+1071,    0,        0,    
  1501. yycrank+0,    yysvec+379,    0,    
  1502. yycrank+0,    yysvec+316,    0,    
  1503. yycrank+0,    yysvec+331,    0,    
  1504. yycrank+0,    yysvec+432,    0,    
  1505. yycrank+0,    yysvec+430,    0,    
  1506. yycrank+0,    yysvec+432,    0,    
  1507. yycrank+1013,    0,        0,    
  1508. yycrank+0,    yysvec+438,    0,    
  1509. yycrank+0,    yysvec+436,    0,    
  1510. yycrank+0,    yysvec+438,    0,    
  1511. yycrank+1015,    0,        0,    
  1512. yycrank+1120,    0,        yyvstop+221,
  1513. yycrank+0,    yysvec+415,    0,    
  1514. yycrank+1121,    0,        yyvstop+223,
  1515. yycrank+0,    yysvec+432,    0,    
  1516. yycrank+0,    yysvec+438,    0,    
  1517. yycrank+1133,    0,        yyvstop+225,
  1518. yycrank+1131,    yysvec+460,    yyvstop+227,
  1519. 0,    0,    0};
  1520. struct yywork *yytop = yycrank+1188;
  1521. struct yysvf *yybgin = yysvec+1;
  1522. char yymatch[] ={
  1523. 00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  1524. 01  ,011 ,01  ,01  ,01  ,01  ,01  ,01  ,
  1525. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  1526. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  1527. 011 ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  1528. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  1529. '0' ,'0' ,'2' ,'3' ,'3' ,'3' ,'3' ,'3' ,
  1530. '3' ,'3' ,01  ,01  ,01  ,01  ,01  ,01  ,
  1531. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  1532. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  1533. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  1534. 01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
  1535. 01  ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,'a' ,
  1536. 'a' ,'a' ,01  ,'k' ,'k' ,'k' ,'n' ,'n' ,
  1537. 'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,'n' ,
  1538. 'n' ,'n' ,01  ,01  ,01  ,01  ,01  ,01  ,
  1539. 0};
  1540. char yyextra[] ={
  1541. 0,0,0,0,0,0,0,0,
  1542. 0,0,0,0,0,0,0,0,
  1543. 0,0,0,0,0,0,0,0,
  1544. 0,0,0,0,0,0,0,0,
  1545. 0,0,0,0,0,0,0,0,
  1546. 0,0,0,0,0,0,0,0,
  1547. 0};
  1548. /*    ncform    4.1    83/08/11    */
  1549.  
  1550.