92cd41bea9445964fdf0d434f2ef0f542da73d7e
[dragonfly.git] / sys / net / i4b / driver / i4b_tel.c
1 /*
2  * Copyright (c) 1997, 2001 Hellmuth Michaelis. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23  * SUCH DAMAGE.
24  *
25  *---------------------------------------------------------------------------
26  *
27  *      i4b_tel.c - device driver for ISDN telephony
28  *      --------------------------------------------
29  *
30  * $FreeBSD: src/sys/i4b/driver/i4b_tel.c,v 1.10.2.4 2001/12/16 15:12:57 hm Exp $
31  * $DragonFly: src/sys/net/i4b/driver/i4b_tel.c,v 1.11 2005/06/14 21:19:18 joerg Exp $
32  *
33  *      last edit-date: [Sat Aug 11 18:07:05 2001]
34  *
35  *---------------------------------------------------------------------------*/
36
37 #include "use_i4btel.h"
38
39 #if NI4BTEL > 0
40
41 #undef I4BTELDEBUG
42
43 #include <sys/param.h>
44 #include <sys/systm.h>
45
46 #include <sys/ioccom.h>
47 #include <sys/poll.h>
48
49 #include <sys/conf.h>
50 #include <sys/uio.h>
51 #include <sys/kernel.h>
52 #include <sys/mbuf.h>
53 #include <sys/socket.h>
54 #include <net/if.h>
55 #include <sys/tty.h>
56
57 #ifdef DEVFS
58 #include <sys/devfsext.h>
59 #endif
60
61 #include <net/i4b/include/machine/i4b_ioctl.h>
62 #include <net/i4b/include/machine/i4b_tel_ioctl.h>
63 #include <net/i4b/include/machine/i4b_debug.h>
64
65 #include "../include/i4b_global.h"
66 #include "../include/i4b_mbuf.h"
67 #include "../include/i4b_l3l4.h"
68 #include "../layer4/i4b_l4.h"
69
70 /* minor number: lower 6 bits = unit number */
71
72 #define UNITBITS        6
73 #define UNITMASK        0x3f
74 #define UNIT(n)         (minor(n) & UNITMASK)
75
76 /* minor number: upper 2 bits = function number */
77
78 #define FUNCMASK        0x03
79 #define FUNC(n)         (((minor(n)) >> UNITBITS) & FUNCMASK)
80
81 #define FUNCTEL         0       /* 0 = normal i4btel device     */
82 #define FUNCDIAL        1       /* 1 = i4bteld dialout device   */
83
84 #define NOFUNCS         2       /* number of device classes     */
85
86 typedef struct {
87
88         /* used only in func = FUNCTEL */
89
90         drvr_link_t             drvr_linktab;   /* driver linktab */
91         isdn_link_t             *isdn_linktab;  /* isdn linktab */
92         int                     audiofmt;       /* audio format conversion */
93         u_char                  *rcvttab;       /* conversion table on read */
94         u_char                  *wcvttab;       /* conversion table on write */
95         call_desc_t             *cdp;           /* call descriptor pointer */
96
97         /* used only in func = FUNCDIAL */
98
99         char                    result;         /* result code for dial dev */  
100
101         /* used in func = FUNCDIAL and func = FUNCTEL*/
102         
103         int                     devstate;       /* state of this unit   */
104 #define ST_IDLE         0x00            /* idle */
105 #define ST_CONNECTED    0x01            /* isdn connected state */
106 #define ST_ISOPEN       0x02            /* userland opened */
107 #define ST_RDWAITDATA   0x04            /* userland read waiting */
108 #define ST_WRWAITEMPTY  0x08            /* userland write waiting */
109 #define ST_TONE         0x10            /* tone generator */
110
111         struct selinfo          selp;           /* select / poll */
112
113         struct i4b_tel_tones    tones;
114         int                     toneidx;
115         int                     toneomega;
116         int                     tonefreq;
117
118 } tel_sc_t;
119
120 static tel_sc_t tel_sc[NI4BTEL][NOFUNCS];
121         
122 /* forward decl */
123
124 static void tel_rx_data_rdy(int unit);
125 static void tel_tx_queue_empty(int unit);
126 static void tel_init_linktab(int unit);
127 static void tel_connect(int unit, void *cdp);
128 static void tel_disconnect(int unit, void *cdp);
129 static void tel_tone(tel_sc_t *sc);
130
131 /* audio format conversion tables */
132 static unsigned char a2u_tab[];
133 static unsigned char u2a_tab[];
134 static unsigned char bitreverse[];
135 static u_char sinetab[];
136
137 #define PDEVSTATIC      static
138
139 PDEVSTATIC d_open_t     i4btelopen;
140 PDEVSTATIC d_close_t    i4btelclose;
141 PDEVSTATIC d_read_t     i4btelread;
142 PDEVSTATIC d_read_t     i4btelwrite;
143 PDEVSTATIC d_ioctl_t    i4btelioctl;
144
145 PDEVSTATIC d_poll_t i4btelpoll;
146 #define POLLFIELD i4btelpoll
147
148 #define CDEV_MAJOR 56
149
150 static struct cdevsw i4btel_cdevsw = {
151         /* name */      "i4btel",
152         /* maj */       CDEV_MAJOR,
153         /* flags */     0,
154         /* port */      NULL,
155         /* clone */     NULL,
156
157         /* open */      i4btelopen,
158         /* close */     i4btelclose,
159         /* read */      i4btelread,
160         /* write */     i4btelwrite,
161         /* ioctl */     i4btelioctl,
162         /* poll */      POLLFIELD,
163         /* mmap */      nommap,
164         /* strategy */  nostrategy,
165         /* dump */      nodump,
166         /* psize */     nopsize
167 };
168
169 PDEVSTATIC void i4btelinit(void *unused);
170 PDEVSTATIC void i4btelattach(void *);
171
172 PSEUDO_SET(i4btelattach, i4b_tel);
173
174 /*===========================================================================*
175  *                      DEVICE DRIVER ROUTINES
176  *===========================================================================*/
177
178 /*---------------------------------------------------------------------------*
179  *      initialization at kernel load time
180  *---------------------------------------------------------------------------*/
181 PDEVSTATIC void
182 i4btelinit(void *unused)
183 {
184         cdevsw_add(&i4btel_cdevsw, 0, 0);
185 }
186
187 SYSINIT(i4bteldev, SI_SUB_DRIVERS,
188         SI_ORDER_MIDDLE+CDEV_MAJOR, &i4btelinit, NULL);
189
190 /*---------------------------------------------------------------------------*
191  *      interface attach routine
192  *---------------------------------------------------------------------------*/
193 PDEVSTATIC void
194 i4btelattach(void *dummy)
195 {
196         int i, j;
197
198         printf("i4btel: %d ISDN telephony interface device(s) attached\n", NI4BTEL);
199         
200         for(i=0; i < NI4BTEL; i++)
201         {
202                 for(j=0; j < NOFUNCS; j++)
203                 {
204                         tel_sc[i][j].devstate = ST_IDLE;
205                         tel_sc[i][j].audiofmt = CVT_NONE;
206                         tel_sc[i][j].rcvttab = 0;
207                         tel_sc[i][j].wcvttab = 0;
208                         tel_sc[i][j].result = 0;
209
210                         switch(j)
211                         {
212                                 case FUNCTEL:   /* normal i4btel device */
213                                         make_dev(&i4btel_cdevsw, i,
214                                                 UID_ROOT, GID_WHEEL,
215                                                 0600, "i4btel%d", i);
216                                         break;
217                                 
218                                 case FUNCDIAL:  /* i4bteld dialout device */
219                                         make_dev(&i4btel_cdevsw, i+(1<<UNITBITS),
220                                                 UID_ROOT, GID_WHEEL,
221                                                 0600, "i4bteld%d", i);
222                                         break;
223                         }
224                 }
225                 tel_init_linktab(i);            
226         }
227 }
228
229 /*---------------------------------------------------------------------------*
230  *      open tel device
231  *---------------------------------------------------------------------------*/
232 PDEVSTATIC int
233 i4btelopen(dev_t dev, int flag, int fmt, struct thread *td)
234 {
235         int unit = UNIT(dev);
236         int func = FUNC(dev);
237         
238         tel_sc_t *sc;
239         
240         if(unit >= NI4BTEL)
241                 return(ENXIO);
242
243         sc = &tel_sc[unit][func];               
244
245         if(sc->devstate & ST_ISOPEN)
246                 return(EBUSY);
247
248         sc->devstate |= ST_ISOPEN;              
249
250         if(func == FUNCDIAL)
251         {
252                 sc->result = 0;
253         }
254         
255         return(0);
256 }
257
258 /*---------------------------------------------------------------------------*
259  *      close tel device
260  *---------------------------------------------------------------------------*/
261 PDEVSTATIC int
262 i4btelclose(dev_t dev, int flag, int fmt, struct thread *td)
263 {
264         int unit = UNIT(dev);
265         int func = FUNC(dev);
266         tel_sc_t *sc;
267         int error = 0;
268         int x;
269         
270         if(unit > NI4BTEL)
271                 return(ENXIO);
272
273         sc = &tel_sc[unit][func];               
274
275         x = splimp();
276         sc->devstate &= ~ST_TONE;               
277
278         if((func == FUNCTEL) &&
279            (sc->isdn_linktab != NULL && sc->isdn_linktab->tx_queue != NULL))
280         {
281                 while(!(IF_QEMPTY(sc->isdn_linktab->tx_queue)))
282                 {
283                         sc->devstate |= ST_WRWAITEMPTY;
284         
285                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
286                                         PCATCH, "wtcl", 0)) != 0)
287                         {
288                                 break;
289                         }
290                 }
291                 sc->devstate &= ~ST_WRWAITEMPTY;                
292         }
293
294         sc->devstate &= ~ST_ISOPEN;             
295         splx(x);
296         wakeup((caddr_t) &sc->tones);
297
298         return(error);
299 }
300
301 /*---------------------------------------------------------------------------*
302  *      i4btelioctl - device driver ioctl routine
303  *---------------------------------------------------------------------------*/
304 PDEVSTATIC int
305 i4btelioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct thread *td)
306 {
307         int unit = UNIT(dev);
308         int func = FUNC(dev);
309         int error = 0;
310         struct mbuf *m;
311         int s;
312
313         tel_sc_t *sc = &tel_sc[unit][func];
314
315         if(func == FUNCTEL)
316         {
317                 switch(cmd)
318                 {
319                         case I4B_TEL_GETAUDIOFMT:
320                                 *(int *)data = sc->audiofmt;
321                                 break;
322                         
323                         case I4B_TEL_SETAUDIOFMT:
324                                 switch (*(int *)data)
325                                 {
326                                         case CVT_NONE:
327                                                 sc->rcvttab = 0;
328                                                 sc->wcvttab = 0;
329                                                 break;
330                                         case CVT_ALAW2ULAW:
331                                                 /* ISDN: a-law */
332                                                 /* user: u-law */ 
333                                                 sc->rcvttab = a2u_tab;
334                                                 sc->wcvttab = u2a_tab;
335                                                 break;
336                                         case CVT_ULAW2ALAW:
337                                                 /* ISDN: u-law */
338                                                 /* user: a-law */ 
339                                                 sc->rcvttab = u2a_tab;
340                                                 sc->wcvttab = a2u_tab;
341                                                 break;
342                                         default:
343                                                 error = ENODEV;
344                                                 break;
345                                 }
346                                 if(error == 0)
347                                         sc->audiofmt = *(int *)data;
348                                 break;
349         
350                         case I4B_TEL_EMPTYINPUTQUEUE:
351                                 s = splimp();
352                                 while((sc->devstate & ST_CONNECTED)     &&
353                                         (sc->devstate & ST_ISOPEN)      &&
354                                         !IF_QEMPTY(sc->isdn_linktab->rx_queue))
355                                 {
356                                         IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
357                                         if(m)
358                                                 i4b_Bfreembuf(m);
359                                 }
360                                 splx(s);
361                                 break;
362
363                         case I4B_TEL_VR_REQ:
364                         {
365                                 msg_vr_req_t *mvr;
366
367                                 mvr = (msg_vr_req_t *)data;
368
369                                 mvr->version = VERSION;
370                                 mvr->release = REL;
371                                 mvr->step = STEP;                       
372                                 break;
373                         }
374                         case I4B_TEL_TONES:
375                         {
376                                 struct i4b_tel_tones *tt;
377
378                                 tt = (struct i4b_tel_tones *)data;
379                                 s = splimp();
380                                 while ((sc->devstate & ST_TONE) && 
381                                     sc->tones.duration[sc->toneidx] != 0) {
382                                         if((error = tsleep((caddr_t) &sc->tones,
383                                             PCATCH, "rtone", 0 )) != 0) {
384                                                 splx(s);
385                                                 return(error);
386                                         }
387                                 } 
388                                 if(!(sc->devstate & ST_ISOPEN)) {
389                                         splx(s);
390                                         return (EIO);
391                                 }
392                                 if(!(sc->devstate & ST_CONNECTED)) {
393                                         splx(s);
394                                         return (EIO);
395                                 }
396
397                                 sc->tones = *tt;
398                                 sc->toneidx = 0;
399                                 sc->tonefreq = tt->frequency[0];
400                                 sc->devstate |= ST_TONE;
401                                 splx(s);
402                                 tel_tone(sc);
403                                 break;
404                         }
405         
406                         default:
407                                 error = ENOTTY;
408                                 break;
409                 }
410         }
411         else if(func == FUNCDIAL)
412         {
413                 switch(cmd)
414                 {
415                         default:
416                                 error = ENOTTY;
417                                 break;
418                 }
419         }               
420         return(error);
421 }
422
423 /*---------------------------------------------------------------------------*
424  *      read from tel device
425  *---------------------------------------------------------------------------*/
426 PDEVSTATIC int
427 i4btelread(dev_t dev, struct uio *uio, int ioflag)
428 {
429         int unit = UNIT(dev);
430         int func = FUNC(dev);
431
432         struct mbuf *m;
433         int s;
434         int error = 0;
435
436         tel_sc_t *sc = &tel_sc[unit][func];
437         
438         if(!(sc->devstate & ST_ISOPEN))
439                 return(EIO);
440
441         if(func == FUNCTEL)
442         {
443                 s = splimp();
444
445                 while((sc->devstate & ST_ISOPEN)        &&
446                       (sc->devstate & ST_CONNECTED)     &&
447                       IF_QEMPTY(sc->isdn_linktab->rx_queue))            
448                 {
449                         sc->devstate |= ST_RDWAITDATA;
450
451                         NDBGL4(L4_TELDBG, "i4btel%d, queue empty!", unit);
452
453                         if((error = tsleep((caddr_t) &sc->isdn_linktab->rx_queue,
454                                                 PCATCH, "rtel", 0 )) != 0)
455                         {
456                                 sc->devstate &= ~ST_RDWAITDATA;
457                                 splx(s);
458                                 return(error);
459                         }
460                 }
461         
462                 if(!(sc->devstate & ST_ISOPEN))
463                 {
464                         splx(s);
465                         return(EIO);
466                 }
467         
468                 if(!(sc->devstate & ST_CONNECTED))
469                 {
470                         splx(s);
471                         return(EIO);
472                 }
473                 
474         
475                 IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
476                 
477                 if(m && m->m_len > 0)
478                 {
479                         int i;
480
481                         for(i = 0; i < m->m_len; i++)
482                         {
483                                 /* always reverse bit order from line */
484                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
485
486                                 /* convert if necessary */
487                                 if(sc->rcvttab)
488                                         mtod(m,u_char *)[i] = sc->rcvttab[mtod(m,u_char *)[i]];
489                         }
490                         error = uiomove(m->m_data, m->m_len, uio);
491
492                         NDBGL4(L4_TELDBG, "i4btel%d, mbuf (%d bytes), uiomove %d!", unit, m->m_len, error);
493                 }
494                 else
495                 {
496                         NDBGL4(L4_TELDBG, "i4btel%d, empty mbuf from queue!", unit);
497                         error = EIO;
498                 }
499                         
500                 if(m)
501                         i4b_Bfreembuf(m);
502         
503                 splx(s);
504         }
505         else if(func == FUNCDIAL)
506         {
507                 s = splimp();
508                 while((sc->result == 0) && (sc->devstate & ST_ISOPEN))
509                 {
510                         sc->devstate |= ST_RDWAITDATA;
511         
512                         if((error = tsleep((caddr_t) &sc->result,
513                                                 PCATCH, "rtel1", 0 )) != 0)
514                         {
515                                 sc->devstate &= ~ST_RDWAITDATA;
516                                 splx(s);
517                                 return(error);
518                         }
519                 }
520         
521                 if(!(sc->devstate & ST_ISOPEN))
522                 {
523                         splx(s);
524                         return(EIO);
525                 }
526         
527                 if(sc->result != 0)
528                 {
529                         error = uiomove(&sc->result, 1, uio);
530                         sc->result = 0;
531                 }
532                 else
533                 {
534                         error = EIO;
535                 }
536
537                 splx(s);                        
538         }
539         return(error);
540 }
541
542 /*---------------------------------------------------------------------------*
543  *      write to tel device
544  *---------------------------------------------------------------------------*/
545 PDEVSTATIC int
546 i4btelwrite(dev_t dev, struct uio * uio, int ioflag)
547 {
548         int unit = UNIT(dev);
549         int func = FUNC(dev);
550         struct mbuf *m;
551         int s;
552         int error = 0;
553         tel_sc_t *sc = &tel_sc[unit][func];
554         
555         if(!(sc->devstate & ST_ISOPEN))
556         {
557                 return(EIO);
558         }
559
560         if(func == FUNCTEL)
561         {
562                 s = splimp();
563                 
564                 if(!(sc->devstate & ST_CONNECTED)) {
565                         splx(s);
566                         return(EIO);
567                 }
568                         
569                 sc->devstate &= ~ST_TONE;               
570                 while((IF_QFULL(sc->isdn_linktab->tx_queue)) &&
571                       (sc->devstate & ST_ISOPEN))
572                 {
573                         sc->devstate |= ST_WRWAITEMPTY;
574
575                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
576                                         PCATCH, "wtel", 0)) != 0)
577                         {
578                                 sc->devstate &= ~ST_WRWAITEMPTY;
579                                 splx(s);
580                                 return(error);
581                         }
582                 }
583         
584                 if(!(sc->devstate & ST_ISOPEN))
585                 {
586                         splx(s);
587                         return(EIO);
588                 }
589         
590                 if(!(sc->devstate & ST_CONNECTED))
591                 {
592                         splx(s);
593                         return(EIO);
594                 }
595
596                 if((m = i4b_Bgetmbuf(BCH_MAX_DATALEN)) != NULL)
597                 {
598                         int i;
599                         
600                         m->m_len = min(BCH_MAX_DATALEN, uio->uio_resid);
601         
602                         error = uiomove(m->m_data, m->m_len, uio);
603         
604                         for(i = 0; i < m->m_len; i++)
605                         {
606                                 /* convert if necessary */
607                                 if(sc->wcvttab)
608                                         mtod(m,u_char *)[i] = sc->wcvttab[mtod(m,u_char *)[i]];
609
610                                 /* always reverse bitorder to line */
611                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
612                         }
613
614                         if(IF_QFULL(sc->isdn_linktab->tx_queue))
615                                 m_freem(m);
616                         else
617                                 IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
618                         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
619                 }
620         
621                 splx(s);
622         }
623         else if(func == FUNCDIAL)
624         {
625 #define CMDBUFSIZ 80 
626                 char cmdbuf[CMDBUFSIZ];
627                 int len = min(CMDBUFSIZ-1, uio->uio_resid);
628         
629                 error = uiomove(cmdbuf, len, uio);
630
631                 if(cmdbuf[0] == CMD_DIAL)
632                 {
633                         i4b_l4_dialoutnumber(BDRV_TEL, unit, len-1, &cmdbuf[1]);
634                 }
635                 else if(cmdbuf[0] == CMD_HUP)
636                 {
637                         i4b_l4_drvrdisc(BDRV_TEL, unit);
638                 }
639                 else if(cmdbuf[0] == CMD_KEYP)
640                 {
641                         i4b_l4_keypad(BDRV_TEL, unit, len-1, &cmdbuf[1]);
642                 }
643         }
644         else
645         {
646                 error = EIO;
647         }               
648         
649         return(error);
650 }
651
652 /*---------------------------------------------------------------------------*
653  *      
654  *---------------------------------------------------------------------------*/
655 #define NTONESAMP 32
656 static void
657 tel_tone(tel_sc_t *sc)
658 {
659         struct mbuf *m;
660         u_char *p;
661         int i;
662
663         if((m = i4b_Bgetmbuf(NTONESAMP)) == NULL) {
664                 printf("no mbuf in tel_tone\n");
665                 return;
666         }
667         p = m->m_data;
668         m->m_len = 0;
669         for (i = 0; i < NTONESAMP && (sc->devstate & ST_TONE); i++) {
670
671                 if (sc->tones.duration[sc->toneidx] > 0) {
672                         if (--sc->tones.duration[sc->toneidx] == 0) {
673                                 sc->toneidx++;
674                                 if (sc->toneidx == I4B_TEL_MAXTONES) {
675                                         sc->devstate &= ~ST_TONE;
676                                         sc->toneomega = 0;
677                                         sc->tonefreq = 0;
678                                 } else if (sc->tones.frequency[sc->toneidx] == 0 &&
679                                            sc->tones.duration[sc->toneidx] == 0) {
680                                         sc->devstate &= ~ST_TONE;
681                                         sc->toneomega = 0;
682                                         sc->tonefreq = 0;
683                                 } else {
684                                         sc->tonefreq = sc->tones.frequency[sc->toneidx];
685                                 }
686                                 if (sc->tones.duration[sc->toneidx] == 0) {
687                                         wakeup((caddr_t) &sc->tones);
688                                 }
689                         }
690                 }
691
692                 sc->toneomega += sc->tonefreq;
693                 if (sc->toneomega >= 8000)
694                         sc->toneomega -= 8000;
695                 *p++ = bitreverse[sinetab[sc->toneomega]];
696                 m->m_len++;
697         }
698         IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
699         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
700 }
701
702 /*---------------------------------------------------------------------------*
703  *      device driver poll
704  *---------------------------------------------------------------------------*/
705 PDEVSTATIC int
706 i4btelpoll(dev_t dev, int events, struct thread *td)
707 {
708         int revents = 0;        /* Events we found */
709         int s;
710         int unit = UNIT(dev);
711         int func = FUNC(dev);   
712
713         tel_sc_t *sc = &tel_sc[unit][func];
714         
715         s = splhigh();
716
717         if(!(sc->devstate & ST_ISOPEN))
718         {
719                 NDBGL4(L4_TELDBG, "i4btel%d, !ST_ISOPEN", unit);
720                 splx(s);
721                 return(0);
722         }
723
724         if(func == FUNCTEL)
725         {
726                 /*
727                  * Writes are OK if we are connected and the
728                  * transmit queue can take them
729                  */
730                  
731                 if((events & (POLLOUT|POLLWRNORM))      &&
732                         (sc->devstate & ST_CONNECTED)   &&
733                         (sc->isdn_linktab != NULL)      &&
734                         (!IF_QFULL(sc->isdn_linktab->tx_queue)))
735                 {
736                         NDBGL4(L4_TELDBG, "i4btel%d, POLLOUT", unit);
737                         revents |= (events & (POLLOUT|POLLWRNORM));
738                 }
739                 
740                 /* ... while reads are OK if we have any data */
741         
742                 if((events & (POLLIN|POLLRDNORM))       &&
743                         (sc->devstate & ST_CONNECTED)   &&
744                         (sc->isdn_linktab != NULL)      &&
745                         (!IF_QEMPTY(sc->isdn_linktab->rx_queue)))
746                 {
747                         NDBGL4(L4_TELDBG, "i4btel%d, POLLIN", unit);
748                         revents |= (events & (POLLIN|POLLRDNORM));
749                 }
750                         
751                 if(revents == 0)
752                 {
753                         NDBGL4(L4_TELDBG, "i4btel%d, selrecord", unit);
754                         selrecord(td, &sc->selp);
755                 }
756         }
757         else if(func == FUNCDIAL)
758         {
759                 if(events & (POLLOUT|POLLWRNORM))
760                 {
761                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLOUT", unit);
762                         revents |= (events & (POLLOUT|POLLWRNORM));
763                 }
764
765                 if(events & (POLLIN|POLLRDNORM))
766                 {
767                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLIN, result = %d", unit, sc->result);
768                         if(sc->result != 0)
769                                 revents |= (events & (POLLIN|POLLRDNORM));
770                 }
771                         
772                 if(revents == 0)
773                 {
774                         NDBGL4(L4_TELDBG, "i4bteld%d,  selrecord", unit);
775                         selrecord(td, &sc->selp);
776                 }
777         }
778         splx(s);
779         return(revents);
780 }
781
782 /*===========================================================================*
783  *                      ISDN INTERFACE ROUTINES
784  *===========================================================================*/
785
786 /*---------------------------------------------------------------------------*
787 *       this routine is called from L4 handler at connect time
788  *---------------------------------------------------------------------------*/
789 static void
790 tel_connect(int unit, void *cdp)
791 {
792         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
793
794         /* audio device */
795         
796         sc->cdp = (call_desc_t *)cdp;
797
798         sc->devstate |= ST_CONNECTED;
799
800         /* dialer device */
801         
802         sc = &tel_sc[unit][FUNCDIAL];
803
804         if(sc->devstate == ST_ISOPEN)
805         {
806                 sc->result = RSP_CONN;
807
808                 if(sc->devstate & ST_RDWAITDATA)
809                 {
810                         sc->devstate &= ~ST_RDWAITDATA;
811                         wakeup((caddr_t) &sc->result);
812                 }
813                 selwakeup(&sc->selp);
814         }
815 }
816
817 /*---------------------------------------------------------------------------*
818  *      this routine is called from L4 handler at disconnect time
819  *---------------------------------------------------------------------------*/
820 static void
821 tel_disconnect(int unit, void *cdp)
822 {
823 /*      call_desc_t *cd = (call_desc_t *)cdp; */
824
825         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
826         
827         /* audio device */
828         
829         sc->devstate &= ~ST_CONNECTED;
830
831         if(sc->devstate & ST_RDWAITDATA)
832         {
833                 sc->devstate &= ~ST_RDWAITDATA;
834                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
835         }
836
837         if(sc->devstate & ST_WRWAITEMPTY)
838         {
839                 sc->devstate &= ~ST_WRWAITEMPTY;
840                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
841         }
842
843         /* dialer device */
844         
845         sc = &tel_sc[unit][FUNCDIAL];
846
847         if(sc->devstate & ST_ISOPEN)
848         {
849                 sc->result = RSP_HUP;
850
851                 if(sc->devstate & ST_RDWAITDATA)
852                 {
853                         sc->devstate &= ~ST_RDWAITDATA;
854                         wakeup((caddr_t) &sc->result);
855                 }
856                 selwakeup(&sc->selp);
857
858                 if (sc->devstate & ST_TONE) {
859                         sc->devstate &= ~ST_TONE;
860                         wakeup((caddr_t) &sc->tones);
861                 }
862         }
863 }
864
865 /*---------------------------------------------------------------------------*
866  *      feedback from daemon in case of dial problems
867  *---------------------------------------------------------------------------*/
868 static void
869 tel_dialresponse(int unit, int status, cause_t cause)
870 {       
871         tel_sc_t *sc = &tel_sc[unit][FUNCDIAL];
872
873         NDBGL4(L4_TELDBG, "i4btel%d,  status=%d, cause=0x%4x", unit, status, cause);
874
875         if((sc->devstate == ST_ISOPEN) && status)
876         {       
877                 sc->result = RSP_NOA;
878
879                 if(sc->devstate & ST_RDWAITDATA)
880                 {
881                         sc->devstate &= ~ST_RDWAITDATA;
882                         wakeup((caddr_t) &sc->result);
883                 }
884                 selwakeup(&sc->selp);
885         }
886 }
887         
888 /*---------------------------------------------------------------------------*
889  *      interface up/down
890  *---------------------------------------------------------------------------*/
891 static void
892 tel_updown(int unit, int updown)
893 {
894 }
895         
896 /*---------------------------------------------------------------------------*
897  *      this routine is called from the HSCX interrupt handler
898  *      when a new frame (mbuf) has been received and was put on
899  *      the rx queue.
900  *---------------------------------------------------------------------------*/
901 static void
902 tel_rx_data_rdy(int unit)
903 {
904         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
905         
906         if(sc->devstate & ST_RDWAITDATA)
907         {
908                 sc->devstate &= ~ST_RDWAITDATA;
909                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
910         }
911         selwakeup(&sc->selp);
912 }
913
914 /*---------------------------------------------------------------------------*
915  *      this routine is called from the HSCX interrupt handler
916  *      when the last frame has been sent out and there is no
917  *      further frame (mbuf) in the tx queue.
918  *---------------------------------------------------------------------------*/
919 static void
920 tel_tx_queue_empty(int unit)
921 {
922         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
923
924         if(sc->devstate & ST_WRWAITEMPTY)
925         {
926                 sc->devstate &= ~ST_WRWAITEMPTY;
927                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
928         }
929         if(sc->devstate & ST_TONE) {
930                 tel_tone(sc);
931         } else {
932                 selwakeup(&sc->selp);
933         }
934 }
935
936 /*---------------------------------------------------------------------------*
937  *      this routine is called from the HSCX interrupt handler
938  *      each time a packet is received or transmitted.
939  *---------------------------------------------------------------------------*/
940 static void
941 tel_activity(int unit, int rxtx)
942 {
943         if(tel_sc[unit][FUNCTEL].cdp)
944                 tel_sc[unit][FUNCTEL].cdp->last_active_time = SECOND;
945 }
946
947 /*---------------------------------------------------------------------------*
948  *      return this drivers linktab address
949  *---------------------------------------------------------------------------*/
950 drvr_link_t *
951 tel_ret_linktab(int unit)
952 {
953         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
954         
955         tel_init_linktab(unit);
956         return(&sc->drvr_linktab);
957 }
958
959 /*---------------------------------------------------------------------------*
960  *      setup the isdn_linktab for this driver
961  *---------------------------------------------------------------------------*/
962 void
963 tel_set_linktab(int unit, isdn_link_t *ilt)
964 {
965         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
966         sc->isdn_linktab = ilt;
967 }
968
969 /*---------------------------------------------------------------------------*
970  *      initialize this drivers linktab
971  *---------------------------------------------------------------------------*/
972 static void
973 tel_init_linktab(int unit)
974 {
975         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
976         
977         sc->drvr_linktab.unit = unit;
978         sc->drvr_linktab.bch_rx_data_ready = tel_rx_data_rdy;
979         sc->drvr_linktab.bch_tx_queue_empty = tel_tx_queue_empty;
980         sc->drvr_linktab.bch_activity = tel_activity;   
981         sc->drvr_linktab.line_connected = tel_connect;
982         sc->drvr_linktab.line_disconnected = tel_disconnect;
983         sc->drvr_linktab.dial_response = tel_dialresponse;
984         sc->drvr_linktab.updown_ind = tel_updown;       
985 }
986
987 /*===========================================================================*
988  *      AUDIO FORMAT CONVERSION (produced by running g711conv)
989  *===========================================================================*/
990
991 /*---------------------------------------------------------------------------*
992  *      A-law to u-law conversion
993  *---------------------------------------------------------------------------*/
994 static unsigned char a2u_tab[256] = {
995 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
996 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
997 /* 10 */        0x39, 0x3a, 0x37, 0x38, 0x3d, 0x3e, 0x3b, 0x3c, 
998 /* 18 */        0x31, 0x32, 0x30, 0x30, 0x35, 0x36, 0x33, 0x34, 
999 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
1000 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
1001 /* 30 */        0x1a, 0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 
1002 /* 38 */        0x12, 0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 
1003 /* 40 */        0x62, 0x63, 0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 
1004 /* 48 */        0x5d, 0x5d, 0x5c, 0x5c, 0x5f, 0x5f, 0x5e, 0x5e, 
1005 /* 50 */        0x74, 0x76, 0x70, 0x72, 0x7c, 0x7e, 0x78, 0x7a, 
1006 /* 58 */        0x6a, 0x6b, 0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 
1007 /* 60 */        0x48, 0x49, 0x46, 0x47, 0x4c, 0x4d, 0x4a, 0x4b, 
1008 /* 68 */        0x40, 0x41, 0x3f, 0x3f, 0x44, 0x45, 0x42, 0x43, 
1009 /* 70 */        0x56, 0x57, 0x54, 0x55, 0x5a, 0x5b, 0x58, 0x59, 
1010 /* 78 */        0x4f, 0x4f, 0x4e, 0x4e, 0x52, 0x53, 0x50, 0x51, 
1011 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
1012 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
1013 /* 90 */        0xb9, 0xba, 0xb7, 0xb8, 0xbd, 0xbe, 0xbb, 0xbc, 
1014 /* 98 */        0xb1, 0xb2, 0xb0, 0xb0, 0xb5, 0xb6, 0xb3, 0xb4, 
1015 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
1016 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1017 /* b0 */        0x9a, 0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 
1018 /* b8 */        0x92, 0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 
1019 /* c0 */        0xe2, 0xe3, 0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 
1020 /* c8 */        0xdd, 0xdd, 0xdc, 0xdc, 0xdf, 0xdf, 0xde, 0xde, 
1021 /* d0 */        0xf4, 0xf6, 0xf0, 0xf2, 0xfc, 0xfe, 0xf8, 0xfa, 
1022 /* d8 */        0xea, 0xeb, 0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 
1023 /* e0 */        0xc8, 0xc9, 0xc6, 0xc7, 0xcc, 0xcd, 0xca, 0xcb, 
1024 /* e8 */        0xc0, 0xc1, 0xbf, 0xbf, 0xc4, 0xc5, 0xc2, 0xc3, 
1025 /* f0 */        0xd6, 0xd7, 0xd4, 0xd5, 0xda, 0xdb, 0xd8, 0xd9, 
1026 /* f8 */        0xcf, 0xcf, 0xce, 0xce, 0xd2, 0xd3, 0xd0, 0xd1
1027 };
1028
1029 /*---------------------------------------------------------------------------*
1030  *      u-law to A-law conversion
1031  *---------------------------------------------------------------------------*/
1032 static unsigned char u2a_tab[256] = {
1033 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
1034 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
1035 /* 10 */        0x3a, 0x3b, 0x38, 0x39, 0x3e, 0x3f, 0x3c, 0x3d, 
1036 /* 18 */        0x32, 0x33, 0x30, 0x31, 0x36, 0x37, 0x34, 0x35, 
1037 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
1038 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
1039 /* 30 */        0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 0x12, 
1040 /* 38 */        0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 0x6a, 
1041 /* 40 */        0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 0x62, 0x63, 
1042 /* 48 */        0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 0x7a, 0x78, 
1043 /* 50 */        0x7e, 0x7f, 0x7c, 0x7d, 0x72, 0x73, 0x70, 0x71, 
1044 /* 58 */        0x76, 0x77, 0x74, 0x75, 0x4b, 0x49, 0x4f, 0x4d, 
1045 /* 60 */        0x42, 0x43, 0x40, 0x41, 0x46, 0x47, 0x44, 0x45, 
1046 /* 68 */        0x5a, 0x5b, 0x58, 0x59, 0x5e, 0x5f, 0x5c, 0x5d, 
1047 /* 70 */        0x52, 0x52, 0x53, 0x53, 0x50, 0x50, 0x51, 0x51, 
1048 /* 78 */        0x56, 0x56, 0x57, 0x57, 0x54, 0x54, 0x55, 0x55, 
1049 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
1050 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
1051 /* 90 */        0xba, 0xbb, 0xb8, 0xb9, 0xbe, 0xbf, 0xbc, 0xbd, 
1052 /* 98 */        0xb2, 0xb3, 0xb0, 0xb1, 0xb6, 0xb7, 0xb4, 0xb5, 
1053 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
1054 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1055 /* b0 */        0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 0x92, 
1056 /* b8 */        0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 0xea, 
1057 /* c0 */        0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 0xe2, 0xe3, 
1058 /* c8 */        0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 0xfa, 0xf8, 
1059 /* d0 */        0xfe, 0xff, 0xfc, 0xfd, 0xf2, 0xf3, 0xf0, 0xf1, 
1060 /* d8 */        0xf6, 0xf7, 0xf4, 0xf5, 0xcb, 0xc9, 0xcf, 0xcd, 
1061 /* e0 */        0xc2, 0xc3, 0xc0, 0xc1, 0xc6, 0xc7, 0xc4, 0xc5, 
1062 /* e8 */        0xda, 0xdb, 0xd8, 0xd9, 0xde, 0xdf, 0xdc, 0xdd, 
1063 /* f0 */        0xd2, 0xd2, 0xd3, 0xd3, 0xd0, 0xd0, 0xd1, 0xd1, 
1064 /* f8 */        0xd6, 0xd6, 0xd7, 0xd7, 0xd4, 0xd4, 0xd5, 0xd5
1065 };
1066   
1067 /*---------------------------------------------------------------------------*
1068  *      reverse bits in a byte
1069  *---------------------------------------------------------------------------*/
1070 static unsigned char bitreverse[256] = {
1071 /* 00 */        0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 
1072 /* 08 */        0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 
1073 /* 10 */        0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 
1074 /* 18 */        0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 
1075 /* 20 */        0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 
1076 /* 28 */        0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 
1077 /* 30 */        0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 
1078 /* 38 */        0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 
1079 /* 40 */        0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 
1080 /* 48 */        0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 
1081 /* 50 */        0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 
1082 /* 58 */        0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 
1083 /* 60 */        0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 
1084 /* 68 */        0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 
1085 /* 70 */        0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 
1086 /* 78 */        0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 
1087 /* 80 */        0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 
1088 /* 88 */        0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 
1089 /* 90 */        0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 
1090 /* 98 */        0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 
1091 /* a0 */        0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 
1092 /* a8 */        0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 
1093 /* b0 */        0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 
1094 /* b8 */        0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 
1095 /* c0 */        0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 
1096 /* c8 */        0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 
1097 /* d0 */        0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 
1098 /* d8 */        0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 
1099 /* e0 */        0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 
1100 /* e8 */        0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 
1101 /* f0 */        0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 
1102 /* f8 */        0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
1103 };
1104
1105 static u_char sinetab[8000] = { 213, 213, 213, 213, 213, 213, 213, 212,
1106 212, 212, 212, 212, 212, 215, 215, 215, 215, 215, 215, 214, 214,
1107 214, 214, 214, 214, 209, 209, 209, 209, 209, 209, 209, 208, 208,
1108 208, 208, 208, 208, 211, 211, 211, 211, 211, 211, 210, 210, 210,
1109 210, 210, 210, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220,
1110 220, 220, 220, 223, 223, 223, 223, 223, 223, 222, 222, 222, 222,
1111 222, 222, 217, 217, 217, 217, 217, 217, 216, 216, 216, 216, 216,
1112 216, 216, 219, 219, 219, 219, 219, 219, 218, 218, 218, 218, 218,
1113 218, 197, 197, 197, 197, 197, 197, 196, 196, 196, 196, 196, 196,
1114 196, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 198, 198,
1115 193, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 192, 192,
1116 195, 195, 195, 195, 195, 195, 194, 194, 194, 194, 194, 194, 205,
1117 205, 205, 205, 205, 205, 204, 204, 204, 204, 204, 204, 204, 207,
1118 207, 207, 207, 207, 207, 206, 206, 206, 206, 206, 206, 201, 201,
1119 201, 201, 201, 201, 200, 200, 200, 200, 200, 200, 200, 203, 203,
1120 203, 203, 203, 203, 202, 202, 202, 202, 202, 202, 245, 245, 245,
1121 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 244, 244, 244,
1122 244, 244, 244, 244, 244, 244, 244, 244, 244, 247, 247, 247, 247,
1123 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246,
1124 246, 246, 246, 246, 246, 246, 246, 246, 246, 241, 241, 241, 241,
1125 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 240,
1126 240, 240, 240, 240, 240, 240, 240, 240, 243, 243, 243, 243, 243,
1127 243, 243, 243, 243, 243, 243, 243, 243, 242, 242, 242, 242, 242,
1128 242, 242, 242, 242, 242, 242, 242, 242, 253, 253, 253, 253, 253,
1129 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 252,
1130 252, 252, 252, 252, 252, 252, 252, 255, 255, 255, 255, 255, 255,
1131 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254,
1132 254, 254, 254, 254, 254, 254, 254, 249, 249, 249, 249, 249, 249,
1133 249, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 248,
1134 248, 248, 248, 248, 248, 248, 248, 251, 251, 251, 251, 251, 251,
1135 251, 251, 251, 251, 251, 251, 251, 250, 250, 250, 250, 250, 250,
1136 250, 250, 250, 250, 250, 250, 250, 229, 229, 229, 229, 229, 229,
1137 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1138 229, 229, 229, 229, 229, 229, 229, 228, 228, 228, 228, 228, 228,
1139 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1140 228, 228, 228, 228, 228, 228, 228, 228, 231, 231, 231, 231, 231,
1141 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1142 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230,
1143 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1144 230, 230, 230, 230, 230, 230, 230, 230, 230, 225, 225, 225, 225,
1145 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1146 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 224, 224,
1147 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1148 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 227,
1149 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1150 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1151 227, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1152 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1153 226, 226, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1154 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1155 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236,
1156 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1157 236, 236, 236, 236, 236, 236, 236, 236, 239, 239, 239, 239, 239,
1158 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1159 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238,
1160 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1161 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1162 238, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1163 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1164 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232,
1165 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1166 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 235, 235, 235,
1167 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1168 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1169 235, 235, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1170 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1171 234, 234, 234, 234, 234, 234, 234, 149, 149, 149, 149, 149, 149,
1172 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1173 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1174 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1175 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1176 149, 149, 149, 149, 149, 149, 149, 148, 148, 148, 148, 148, 148,
1177 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1178 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1179 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1180 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1181 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, 151,
1182 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1183 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1184 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1185 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1186 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1187 151, 151, 151, 151, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1188 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1189 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1190 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1191 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1192 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1193 150, 150, 150, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1194 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1195 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1196 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1197 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1198 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1199 145, 145, 145, 145, 145, 145, 145, 145, 144, 144, 144, 144, 144,
1200 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1201 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1202 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1203 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1204 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1205 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1206 144, 144, 144, 144, 144, 144, 144, 144, 144, 147, 147, 147, 147,
1207 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1208 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1209 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1210 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1211 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1212 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1213 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1214 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146,
1215 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1216 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1217 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1218 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1219 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1220 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1221 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1222 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1223 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1224 146, 146, 146, 146, 146, 146, 157, 157, 157, 157, 157, 157, 157,
1225 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1226 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1227 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1228 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1229 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1230 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1231 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1232 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1233 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1234 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1235 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1236 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1237 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1238 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1239 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1240 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1241 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1242 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1243 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1244 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1245 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1246 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1247 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1248 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1249 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1250 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1251 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1252 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1253 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1254 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1255 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1256 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1257 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1258 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1259 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1260 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1261 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1262 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1263 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1264 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1265 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1266 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1267 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1268 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1269 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1270 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1271 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1272 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1273 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1274 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1275 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1276 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1277 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1278 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1279 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1280 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, 157, 157,
1281 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1282 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1283 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1284 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1285 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1286 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1287 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1288 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1289 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1290 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1291 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1292 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1293 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1294 157, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1295 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1296 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1297 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1298 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1299 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1300 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1301 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1302 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1303 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147,
1304 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1305 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1306 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1307 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1308 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1309 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1310 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1311 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 144, 144,
1312 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1313 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1314 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1315 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1316 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1317 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1318 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 145,
1319 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1320 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1321 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1322 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1323 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1324 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1325 145, 145, 145, 145, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1326 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1327 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1328 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1329 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1330 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1331 150, 150, 150, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1332 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1333 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1334 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1335 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1336 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 148, 148, 148,
1337 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1338 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1339 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1340 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1341 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1342 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1343 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1344 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1345 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1346 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1347 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1348 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1349 234, 234, 234, 234, 234, 235, 235, 235, 235, 235, 235, 235, 235,
1350 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1351 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 232, 232, 232,
1352 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1353 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1354 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1355 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1356 233, 233, 233, 233, 233, 233, 238, 238, 238, 238, 238, 238, 238,
1357 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1358 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239,
1359 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1360 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 236,
1361 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1362 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1363 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1364 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1365 237, 237, 237, 237, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1366 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1367 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, 227,
1368 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1369 227, 227, 227, 227, 227, 227, 227, 227, 224, 224, 224, 224, 224,
1370 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1371 224, 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, 225,
1372 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1373 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 230, 230,
1374 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1375 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231,
1376 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1377 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 228,
1378 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1379 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1380 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1381 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1382 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
1383 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
1384 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
1385 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1386 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
1387 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1388 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253,
1389 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 242,
1390 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243,
1391 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 240,
1392 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241,
1393 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 246, 246,
1394 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 247, 247,
1395 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 244,
1396 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, 245,
1397 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 202, 202, 202,
1398 202, 202, 202, 203, 203, 203, 203, 203, 203, 200, 200, 200, 200,
1399 200, 200, 200, 201, 201, 201, 201, 201, 201, 206, 206, 206, 206,
1400 206, 206, 207, 207, 207, 207, 207, 207, 204, 204, 204, 204, 204,
1401 204, 204, 205, 205, 205, 205, 205, 205, 194, 194, 194, 194, 194,
1402 194, 195, 195, 195, 195, 195, 195, 192, 192, 192, 192, 192, 192,
1403 192, 193, 193, 193, 193, 193, 193, 198, 198, 198, 198, 198, 198,
1404 199, 199, 199, 199, 199, 199, 196, 196, 196, 196, 196, 196, 196,
1405 197, 197, 197, 197, 197, 197, 218, 218, 218, 218, 218, 218, 219,
1406 219, 219, 219, 219, 219, 216, 216, 216, 216, 216, 216, 216, 217,
1407 217, 217, 217, 217, 217, 222, 222, 222, 222, 222, 222, 223, 223,
1408 223, 223, 223, 223, 220, 220, 220, 220, 220, 220, 220, 221, 221,
1409 221, 221, 221, 221, 210, 210, 210, 210, 210, 210, 211, 211, 211,
1410 211, 211, 211, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209,
1411 209, 209, 209, 214, 214, 214, 214, 214, 214, 215, 215, 215, 215,
1412 215, 215, 212, 212, 212, 212, 212, 212, 213, 213, 213, 213, 213,
1413 213, 213, 90, 90, 90, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 84,
1414 84, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 81, 81, 81,
1415 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 83, 83, 83, 83, 83, 83,
1416 82, 82, 82, 82, 82, 82, 93, 93, 93, 93, 93, 93, 93, 92, 92, 92,
1417 92, 92, 92, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 94, 89,
1418 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 88, 88, 91, 91, 91, 91,
1419 91, 91, 90, 90, 90, 90, 90, 90, 69, 69, 69, 69, 69, 69, 68, 68,
1420 68, 68, 68, 68, 68, 71, 71, 71, 71, 71, 71, 70, 70, 70, 70, 70,
1421 70, 65, 65, 65, 65, 65, 65, 64, 64, 64, 64, 64, 64, 64, 67, 67,
1422 67, 67, 67, 67, 66, 66, 66, 66, 66, 66, 77, 77, 77, 77, 77, 77,
1423 76, 76, 76, 76, 76, 76, 76, 79, 79, 79, 79, 79, 79, 78, 78, 78,
1424 78, 78, 78, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72,
1425 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 117, 117, 117, 117,
1426 117, 117, 117, 117, 117, 117, 117, 117, 117, 116, 116, 116, 116,
1427 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119,
1428 119, 119, 119, 119, 119, 119, 119, 119, 118, 118, 118, 118, 118,
1429 118, 118, 118, 118, 118, 118, 118, 118, 113, 113, 113, 113, 113,
1430 113, 113, 113, 113, 113, 113, 113, 113, 112, 112, 112, 112, 112,
1431 112, 112, 112, 112, 112, 112, 112, 115, 115, 115, 115, 115, 115,
1432 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 114,
1433 114, 114, 114, 114, 114, 114, 114, 125, 125, 125, 125, 125, 125,
1434 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124,
1435 124, 124, 124, 124, 124, 124, 124, 127, 127, 127, 127, 127, 127,
1436 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126,
1437 126, 126, 126, 126, 126, 126, 121, 121, 121, 121, 121, 121, 121,
1438 121, 121, 121, 121, 121, 121, 120, 120, 120, 120, 120, 120, 120,
1439 120, 120, 120, 120, 120, 120, 123, 123, 123, 123, 123, 123, 123,
1440 123, 123, 123, 123, 123, 123, 122, 122, 122, 122, 122, 122, 122,
1441 122, 122, 122, 122, 122, 122, 101, 101, 101, 101, 101, 101, 101,
1442 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1443 101, 101, 101, 101, 101, 101, 101, 100, 100, 100, 100, 100, 100,
1444 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1445 100, 100, 100, 100, 100, 100, 100, 103, 103, 103, 103, 103, 103,
1446 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1447 103, 103, 103, 103, 103, 103, 103, 103, 102, 102, 102, 102, 102,
1448 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1449 102, 102, 102, 102, 102, 102, 102, 102, 102, 97, 97, 97, 97, 97,
1450 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1451 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1452 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1453 96, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1454 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98,
1455 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1456 98, 98, 98, 98, 98, 98, 98, 98, 98, 109, 109, 109, 109, 109, 109,
1457 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1458 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108,
1459 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1460 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 111,
1461 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1462 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1463 111, 111, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1464 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1465 110, 110, 110, 110, 110, 110, 105, 105, 105, 105, 105, 105, 105,
1466 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1467 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104,
1468 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1469 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1470 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1471 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1472 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106,
1473 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1474 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21,
1475 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1476 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1477 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1478 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1479 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1480 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1481 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1482 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1483 20, 20, 20, 20, 20, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1484 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1485 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1486 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1487 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22,
1488 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1489 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1490 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1491 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1492 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 17, 17, 17, 17, 17, 17,
1493 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1494 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1495 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1496 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1497 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16,
1498 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1499 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1500 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1501 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1502 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1503 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 19, 19, 19, 19, 19, 19,
1504 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1505 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1506 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1507 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1508 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1509 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1510 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1511 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1512 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1513 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1514 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1515 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1516 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1517 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1518 18, 18, 18, 18, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1519 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1520 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1521 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1522 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1523 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1524 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1525 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1526 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1527 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1528 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1529 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28,
1530 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1531 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1532 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1533 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1534 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1535 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1536 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1537 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1538 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1539 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1540 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1541 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1542 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1543 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1544 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1545 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1546 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1547 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1548 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1549 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1550 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1551 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1552 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1553 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1554 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1555 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1556 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1557 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1558 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1559 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1560 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1561 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1562 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1563 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1564 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1565 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1566 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1567 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1568 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1569 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1570 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1571 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1572 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1573 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 18, 18, 18, 18, 18,
1574 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1575 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1576 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1577 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1578 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1579 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1580 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1581 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19,
1582 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1583 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1584 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1585 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1586 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1587 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1588 19, 19, 19, 19, 19, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1589 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1590 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1591 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1592 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1593 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1594 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1595 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1596 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1597 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1598 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1599 17, 17, 17, 17, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1600 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1601 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1602 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1603 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1604 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1605 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1606 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1607 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1608 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, 20, 20, 20, 20,
1609 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1610 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1611 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1612 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,
1613 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1614 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1615 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1616 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1617 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1618 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1619 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107,
1620 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1621 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104,
1622 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1623 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1624 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1625 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1626 105, 105, 105, 105, 105, 105, 110, 110, 110, 110, 110, 110, 110,
1627 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1628 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111,
1629 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1630 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1631 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1632 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1633 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1634 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1635 109, 109, 109, 109, 109, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1636 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1637 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1638 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 96, 96,
1639 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1640 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97,
1641 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1642 97, 97, 97, 97, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1643 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1644 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1645 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1646 103, 103, 103, 103, 103, 100, 100, 100, 100, 100, 100, 100, 100,
1647 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1648 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101,
1649 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1650 101, 101, 101, 101, 101, 101, 122, 122, 122, 122, 122, 122, 122,
1651 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123,
1652 123, 123, 123, 123, 123, 123, 120, 120, 120, 120, 120, 120, 120,
1653 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121,
1654 121, 121, 121, 121, 121, 121, 126, 126, 126, 126, 126, 126, 126,
1655 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127,
1656 127, 127, 127, 127, 127, 124, 124, 124, 124, 124, 124, 124, 124,
1657 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125,
1658 125, 125, 125, 125, 125, 114, 114, 114, 114, 114, 114, 114, 114,
1659 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115,
1660 115, 115, 115, 115, 115, 112, 112, 112, 112, 112, 112, 112, 112,
1661 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1662 113, 113, 113, 113, 118, 118, 118, 118, 118, 118, 118, 118, 118,
1663 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1664 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1665 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
1666 117, 117, 117, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 72,
1667 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 78, 78, 78, 78,
1668 78, 78, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 76, 76, 77,
1669 77, 77, 77, 77, 77, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67,
1670 67, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 70, 70,
1671 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 68, 68, 68, 68, 68, 68,
1672 68, 69, 69, 69, 69, 69, 69, 90, 90, 90, 90, 90, 90, 91, 91, 91,
1673 91, 91, 91, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89,
1674 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 92, 92, 92, 92,
1675 92, 92, 93, 93, 93, 93, 93, 93, 93, 82, 82, 82, 82, 82, 82, 83,
1676 83, 83, 83, 83, 83, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81,
1677 81, 81, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 84, 84,
1678 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 90, 90, 90 };
1679
1680 /*===========================================================================*/
1681
1682 #endif /* NI4BTEL > 0 */