From 1b50367e3428f9292b500f243c42cfb2ba7fb18b Mon Sep 17 00:00:00 2001 From: MelwareDE Date: Sun, 29 Apr 2007 22:28:30 +0000 Subject: [PATCH] - more restructuring - chat handle null-plci voice frames --- Makefile | 2 +- chan_capi.c | 261 +----- chan_capi.h | 6 +- chan_capi_chat.c | 121 ++- chan_capi_qsig_core.c | 12 +- chan_capi_supplementary.c | 2 +- chan_capi_utils.c | 237 +++++- chan_capi_utils.h | 13 +- xlaw.c | 1653 ++++++++++++++++++++++++++++++++++++ xlaw.h | 1657 +------------------------------------ 10 files changed, 2055 insertions(+), 1909 deletions(-) create mode 100644 xlaw.c diff --git a/Makefile b/Makefile index edb0293..80ccc8e 100644 --- a/Makefile +++ b/Makefile @@ -92,7 +92,7 @@ INSTALL=install SHAREDOS=chan_capi.so -OBJECTS=chan_capi.o chan_capi_utils.o chan_capi_rtp.o \ +OBJECTS=chan_capi.o chan_capi_utils.o chan_capi_rtp.o xlaw.o \ chan_capi_qsig_core.o chan_capi_qsig_ecma.o chan_capi_qsig_asn197ade.o \ chan_capi_qsig_asn197no.o chan_capi_supplementary.o chan_capi_chat.o diff --git a/chan_capi.c b/chan_capi.c index 7fb59db..186ef94 100644 --- a/chan_capi.c +++ b/chan_capi.c @@ -138,11 +138,9 @@ AST_MUTEX_DEFINE_STATIC(usecnt_lock); #endif AST_MUTEX_DEFINE_STATIC(iflock); -static int capi_capability = AST_FORMAT_ALAW; - static pthread_t monitor_thread = (pthread_t)(0-1); -struct capi_pvt *iflist = NULL; +struct capi_pvt *capi_iflist = NULL; static struct cc_capi_controller *capi_controllers[CAPI_MAX_CONTROLLERS + 1]; static int capi_num_controllers = 0; @@ -162,6 +160,8 @@ static char capi_international_prefix[AST_MAX_EXTENSION]; static char default_language[MAX_LANGUAGE] = ""; +int capi_capability = AST_FORMAT_ALAW; + #ifdef CC_AST_HAS_VERSION_1_4 /* Global jitterbuffer configuration - by default, jb is disabled */ static struct ast_jb_conf default_jbconf = @@ -365,7 +365,7 @@ static int tcap2cip(unsigned short tcap) return CAPI_CIPI_SPEECH; } -static unsigned char tcap_is_digital(unsigned short tcap) +unsigned char capi_tcap_is_digital(unsigned short tcap) { int x; @@ -493,7 +493,7 @@ static void capi_echo_canceller(struct capi_pvt *i, int function) return; } - if (tcap_is_digital(c->transfercapability)) { + if (capi_tcap_is_digital(c->transfercapability)) { cc_verbose(3, 1, VERBOSE_PREFIX_2 "%s: No echo canceller in digital mode (PLCI=%#x)\n", i->vname, i->PLCI); return; @@ -535,7 +535,7 @@ static int capi_detect_dtmf(struct capi_pvt *i, int flag) return 0; } - if (tcap_is_digital(c->transfercapability)) { + if (capi_tcap_is_digital(c->transfercapability)) { cc_verbose(3, 1, VERBOSE_PREFIX_2 "%s: No dtmf-detect in digital mode (PLCI=%#x)\n", i->vname, i->PLCI); return 0; @@ -590,17 +590,6 @@ static int local_queue_frame(struct capi_pvt *i, struct ast_frame *f) return -1; } - if (i->channeltype == CAPI_CHANNELTYPE_NULL) { - if (f->frametype == AST_FRAME_VOICE) { - /* NULL PLCI data is written directly */ - ast_write(chan, f); - return 0; - } - cc_verbose(3, 1, VERBOSE_PREFIX_4 "%s: frame %d/%d not queued for NULL-PLCI.\n", - i->vname, f->frametype, f->subclass); - return 0; - } - if (!(i->isdnstate & CAPI_ISDN_STATE_PBX)) { /* if there is no PBX running yet, we don't need any frames sent */ @@ -1096,7 +1085,7 @@ static int pbx_capi_call(struct ast_channel *c, char *idest, int timeout) MESSAGE_EXCHANGE_ERROR error; cc_copy_string(buffer, idest, sizeof(buffer)); - parse_dialstring(buffer, &interface, &dest, ¶m, &ocid); + capi_parse_dialstring(buffer, &interface, &dest, ¶m, &ocid); /* init param settings */ i->doB3 = CAPI_B3_DONT; @@ -1213,7 +1202,7 @@ static int pbx_capi_call(struct ast_channel *c, char *idest, int timeout) dsa = calledsubaddress; } - if (tcap_is_digital(c->transfercapability)) { + if (capi_tcap_is_digital(c->transfercapability)) { i->bproto = CC_BPROTO_TRANSPARENT; cc_verbose(4, 0, VERBOSE_PREFIX_2 "%s: is digital call, set proto to TRANSPARENT\n", i->vname); @@ -1358,7 +1347,7 @@ static int pbx_capi_answer(struct ast_channel *c) i->bproto = CC_BPROTO_TRANSPARENT; if (i->rtp) { - if (!tcap_is_digital(c->transfercapability)) + if (!capi_tcap_is_digital(c->transfercapability)) i->bproto = CC_BPROTO_RTP; } @@ -1371,47 +1360,12 @@ static int pbx_capi_answer(struct ast_channel *c) */ static struct ast_frame *pbx_capi_read(struct ast_channel *c) { - struct capi_pvt *i = CC_CHANNEL_PVT(c); + struct capi_pvt *i = CC_CHANNEL_PVT(c); struct ast_frame *f; - int readsize; - if (i == NULL) { - cc_log(LOG_ERROR, "channel has no interface\n"); - return NULL; - } - if (i->readerfd == -1) { - cc_log(LOG_ERROR, "no readerfd\n"); - return NULL; - } + f = capi_read_pipeframe(i); - f = &i->f; - f->frametype = AST_FRAME_NULL; - f->subclass = 0; - - readsize = read(i->readerfd, f, sizeof(struct ast_frame)); - if ((readsize != sizeof(struct ast_frame)) && (readsize > 0)) { - cc_log(LOG_ERROR, "did not read a whole frame (len=%d, err=%d)\n", - readsize, errno); - } - - f->mallocd = 0; - f->data = NULL; - - if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP)) { - return NULL; - } - - if ((f->frametype == AST_FRAME_VOICE) && (f->datalen > 0)) { - if (f->datalen > sizeof(i->frame_data)) { - cc_log(LOG_ERROR, "f.datalen(%d) greater than space of frame_data(%d)\n", - f->datalen, sizeof(i->frame_data)); - f->datalen = sizeof(i->frame_data); - } - readsize = read(i->readerfd, i->frame_data + AST_FRIENDLY_OFFSET, f->datalen); - if (readsize != f->datalen) { - cc_log(LOG_ERROR, "did not read whole frame data\n"); - } - f->data = i->frame_data + AST_FRIENDLY_OFFSET; + if ((f) && (f->frametype == AST_FRAME_VOICE) && (f->datalen > 0)) { if ((i->doDTMF > 0) && (i->vad != NULL) ) { f = ast_dsp_process(c, i->vad, f); } @@ -1425,122 +1379,10 @@ static struct ast_frame *pbx_capi_read(struct ast_channel *c) static int pbx_capi_write(struct ast_channel *c, struct ast_frame *f) { struct capi_pvt *i = CC_CHANNEL_PVT(c); - MESSAGE_EXCHANGE_ERROR error; - int j = 0; - unsigned char *buf; - struct ast_frame *fsmooth; - int txavg=0; int ret = 0; - if (!i) { - cc_log(LOG_ERROR, "channel has no interface\n"); - return -1; - } - - if ((!(i->isdnstate & CAPI_ISDN_STATE_B3_UP)) || (!i->NCCI) || - ((i->isdnstate & (CAPI_ISDN_STATE_B3_CHANGE | CAPI_ISDN_STATE_LI)))) { - return 0; - } + ret = capi_write_frame(i, f); - if ((!(i->ntmode)) && (i->state != CAPI_STATE_CONNECTED)) { - return 0; - } - - if (f->frametype == AST_FRAME_NULL) { - return 0; - } - if (f->frametype == AST_FRAME_DTMF) { - cc_log(LOG_ERROR, "dtmf frame should be written\n"); - return 0; - } - if (f->frametype != AST_FRAME_VOICE) { - cc_log(LOG_ERROR,"not a voice frame\n"); - return 0; - } - if (i->FaxState & CAPI_FAX_STATE_ACTIVE) { - cc_verbose(3, 1, VERBOSE_PREFIX_2 "%s: write on fax activity?\n", - i->vname); - return 0; - } - if ((!f->data) || (!f->datalen)) { - cc_log(LOG_DEBUG, "No data for FRAME_VOICE %s\n", c->name); - return 0; - } - if (i->isdnstate & CAPI_ISDN_STATE_RTP) { - if ((!(f->subclass & i->codec)) && - (f->subclass != capi_capability)) { - cc_log(LOG_ERROR, "don't know how to write subclass %s(%d)\n", - ast_getformatname(f->subclass), f->subclass); - return 0; - } - return capi_write_rtp(c, f); - } - if (i->B3count >= CAPI_MAX_B3_BLOCKS) { - cc_verbose(3, 1, VERBOSE_PREFIX_4 "%s: B3count is full, dropping packet.\n", - i->vname); - return 0; - } - - if ((!i->smoother) || (ast_smoother_feed(i->smoother, f) != 0)) { - cc_log(LOG_ERROR, "%s: failed to fill smoother\n", i->vname); - return 0; - } - - for (fsmooth = ast_smoother_read(i->smoother); - fsmooth != NULL; - fsmooth = ast_smoother_read(i->smoother)) { - buf = &(i->send_buffer[(i->send_buffer_handle % CAPI_MAX_B3_BLOCKS) * - (CAPI_MAX_B3_BLOCK_SIZE + AST_FRIENDLY_OFFSET)]); - i->send_buffer_handle++; - - if ((i->doES == 1) && (!tcap_is_digital(c->transfercapability))) { - for (j = 0; j < fsmooth->datalen; j++) { - buf[j] = reversebits[ ((unsigned char *)fsmooth->data)[j] ]; - if (capi_capability == AST_FORMAT_ULAW) { - txavg += abs( capiULAW2INT[reversebits[ ((unsigned char*)fsmooth->data)[j]]] ); - } else { - txavg += abs( capiALAW2INT[reversebits[ ((unsigned char*)fsmooth->data)[j]]] ); - } - } - txavg = txavg / j; - for(j = 0; j < ECHO_TX_COUNT - 1; j++) { - i->txavg[j] = i->txavg[j+1]; - } - i->txavg[ECHO_TX_COUNT - 1] = txavg; - } else { - if ((i->txgain == 1.0) || (tcap_is_digital(c->transfercapability))) { - for (j = 0; j < fsmooth->datalen; j++) { - buf[j] = reversebits[((unsigned char *)fsmooth->data)[j]]; - } - } else { - for (j = 0; j < fsmooth->datalen; j++) { - buf[j] = i->g.txgains[reversebits[((unsigned char *)fsmooth->data)[j]]]; - } - } - } - - error = 1; - if (i->B3q > 0) { - error = capi_sendf(NULL, 0, CAPI_DATA_B3_REQ, i->NCCI, get_capi_MessageNumber(), - "dwww", - buf, - fsmooth->datalen, - i->send_buffer_handle, - 0); - } else { - cc_verbose(3, 1, VERBOSE_PREFIX_4 "%s: too much voice to send for NCCI=%#x\n", - i->vname, i->NCCI); - } - - if (!error) { - cc_mutex_lock(&i->lock); - i->B3count++; - i->B3q -= fsmooth->datalen; - if (i->B3q < 0) - i->B3q = 0; - cc_mutex_unlock(&i->lock); - } - } return ret; } @@ -1793,8 +1635,6 @@ static struct ast_channel *capi_new(struct capi_pvt *i, int state) { struct ast_channel *tmp; int fmt; - int fds[2]; - int flags; #ifdef CC_AST_HAS_EXT_CHAN_ALLOC tmp = ast_channel_alloc(0, state, i->cid, NULL, @@ -1824,19 +1664,10 @@ static struct ast_channel *capi_new(struct capi_pvt *i, int state) tmp->type = channeltype; #endif - if (pipe(fds) != 0) { - cc_log(LOG_ERROR, "%s: unable to create pipe.\n", - i->vname); + if (!(capi_create_reader_writer_pipe(i))) { ast_channel_free(tmp); return NULL; } - i->readerfd = fds[0]; - i->writerfd = fds[1]; - flags = fcntl(i->readerfd, F_GETFL); - fcntl(i->readerfd, F_SETFL, flags | O_NONBLOCK); - flags = fcntl(i->writerfd, F_GETFL); - fcntl(i->writerfd, F_SETFL, flags | O_NONBLOCK); - tmp->fds[0] = i->readerfd; if (i->smoother != NULL) { @@ -1965,7 +1796,7 @@ pbx_capi_request(const char *type, int format, void *data, int *cause) cc_verbose(1, 1, VERBOSE_PREFIX_4 "data = %s format=%d\n", (char *)data, format); cc_copy_string(buffer, (char *)data, sizeof(buffer)); - parse_dialstring(buffer, &interface, &dest, ¶m, &ocid); + capi_parse_dialstring(buffer, &interface, &dest, ¶m, &ocid); if ((!interface) || (!dest)) { cc_log(LOG_ERROR, "Syntax error in dialstring. Read the docs!\n"); @@ -1998,7 +1829,7 @@ pbx_capi_request(const char *type, int format, void *data, int *cause) cc_mutex_lock(&iflock); - for (i = iflist; i; i = i->next) { + for (i = capi_iflist; i; i = i->next) { if ((i->used) || (i->channeltype != CAPI_CHANNELTYPE_B)) { /* if already in use or no real channel */ continue; @@ -2527,7 +2358,7 @@ static void capidev_handle_did_digits(_cmsg *CMSG, unsigned int PLCI, unsigned i /* * send control according to cause code */ -void queue_cause_control(struct capi_pvt *i, int control) +void capi_queue_cause_control(struct capi_pvt *i, int control) { struct ast_frame fr = { AST_FRAME_CONTROL, AST_CONTROL_HANGUP, }; @@ -2566,14 +2397,14 @@ static void capidev_handle_info_disconnect(_cmsg *CMSG, unsigned int PLCI, unsig cc_verbose(4, 1, VERBOSE_PREFIX_3 "%s: Disconnect case 1\n", i->vname); if (i->state == CAPI_STATE_CONNECTED) { - queue_cause_control(i, 0); + capi_queue_cause_control(i, 0); } else { if ((i->isdnstate & CAPI_ISDN_STATE_STAYONLINE)) { cc_verbose(3, 1, VERBOSE_PREFIX_2 "%s: stay-online hangup frame queued.\n", i->vname); i->whentoqueuehangup = time(NULL) + 1; } else { - queue_cause_control(i, 1); + capi_queue_cause_control(i, 1); } } return; @@ -2584,7 +2415,7 @@ static void capidev_handle_info_disconnect(_cmsg *CMSG, unsigned int PLCI, unsig (i->state == CAPI_STATE_CONNECTED) && (i->outgoing == 1)) { cc_verbose(4, 1, VERBOSE_PREFIX_3 "%s: Disconnect case 2\n", i->vname); - queue_cause_control(i, 1); + capi_queue_cause_control(i, 1); return; } @@ -2601,7 +2432,7 @@ static void capidev_handle_info_disconnect(_cmsg *CMSG, unsigned int PLCI, unsig capi_send_disconnect(i->PLCI, NULL); return; } - queue_cause_control(i, 0); + capi_queue_cause_control(i, 0); return; } @@ -2611,7 +2442,7 @@ static void capidev_handle_info_disconnect(_cmsg *CMSG, unsigned int PLCI, unsig i->vname); if ((i->state == CAPI_STATE_CONNECTED) && (i->isdnstate & CAPI_ISDN_STATE_B3_UP)) { - queue_cause_control(i, 1); + capi_queue_cause_control(i, 1); return; } /* wait for the 0x001e (PROGRESS), play audio and wait for a timeout from the network */ @@ -2816,7 +2647,7 @@ static void capidev_handle_info_indication(_cmsg *CMSG, unsigned int PLCI, unsig if (i->doB3 == CAPI_B3_DONT) { if ((i->owner) && (i->owner->hangupcause == AST_CAUSE_USER_BUSY)) { - queue_cause_control(i, 1); + capi_queue_cause_control(i, 1); break; } } @@ -3041,13 +2872,13 @@ static void capidev_handle_data_b3_indication(_cmsg *CMSG, unsigned int PLCI, un i->B3q += b3len; } - if ((i->doES == 1) && (!tcap_is_digital(chan->transfercapability))) { + if ((i->doES == 1) && (!capi_tcap_is_digital(chan->transfercapability))) { for (j = 0; j < b3len; j++) { - *(b3buf + j) = reversebits[*(b3buf + j)]; + *(b3buf + j) = capi_reversebits[*(b3buf + j)]; if (capi_capability == AST_FORMAT_ULAW) { - rxavg += abs(capiULAW2INT[ reversebits[*(b3buf + j)]]); + rxavg += abs(capiULAW2INT[ capi_reversebits[*(b3buf + j)]]); } else { - rxavg += abs(capiALAW2INT[ reversebits[*(b3buf + j)]]); + rxavg += abs(capiALAW2INT[ capi_reversebits[*(b3buf + j)]]); } } rxavg = rxavg / j; @@ -3066,13 +2897,13 @@ static void capidev_handle_data_b3_indication(_cmsg *CMSG, unsigned int PLCI, un i->vname, rxavg, txavg); } } else { - if ((i->rxgain == 1.0) || (tcap_is_digital(chan->transfercapability))) { + if ((i->rxgain == 1.0) || (capi_tcap_is_digital(chan->transfercapability))) { for (j = 0; j < b3len; j++) { - *(b3buf + j) = reversebits[*(b3buf + j)]; + *(b3buf + j) = capi_reversebits[*(b3buf + j)]; } } else { for (j = 0; j < b3len; j++) { - *(b3buf + j) = reversebits[i->g.rxgains[*(b3buf + j)]]; + *(b3buf + j) = capi_reversebits[i->g.rxgains[*(b3buf + j)]]; } } } @@ -3474,7 +3305,7 @@ static void capidev_handle_connect_indication(_cmsg *CMSG, unsigned int PLCI, un /* well...somebody is calling us. let's set up a channel */ cc_mutex_lock(&iflock); - for (i = iflist; i; i = i->next) { + for (i = capi_iflist; i; i = i->next) { if (i->used) { /* is already used */ continue; @@ -3541,7 +3372,7 @@ static void capidev_handle_connect_indication(_cmsg *CMSG, unsigned int PLCI, un break; } i->owner->transfercapability = cip2tcap(i->cip); - if (tcap_is_digital(i->owner->transfercapability)) { + if (capi_tcap_is_digital(i->owner->transfercapability)) { i->bproto = CC_BPROTO_TRANSPARENT; } i->owner->cid.cid_pres = callpres; @@ -3735,7 +3566,7 @@ void capidev_handle_connection_conf(struct capi_pvt **i, unsigned int PLCI, "defined interface received\n"); return; } - *i = find_interface_by_msgnum(wMsgNum); + *i = capi_find_interface_by_msgnum(wMsgNum); ii = *i; if (ii == NULL) { return; @@ -3764,7 +3595,7 @@ static void capidev_handle_msg(_cmsg *CMSG) unsigned short wCmd = HEADER_CMD(CMSG); unsigned short wMsgNum = HEADER_MSGNUM(CMSG); unsigned short wInfo = 0xffff; - struct capi_pvt *i = find_interface_by_plci(PLCI); + struct capi_pvt *i = capi_find_interface_by_plci(PLCI); if ((wCmd == CAPI_P_IND(DATA_B3)) || (wCmd == CAPI_P_CONF(DATA_B3))) { @@ -4020,7 +3851,7 @@ static int pbx_capi_retrieve(struct ast_channel *c, char *param) if (param) { plci = (unsigned int)strtoul(param, NULL, 0); cc_mutex_lock(&iflock); - for (i = iflist; i; i = i->next) { + for (i = capi_iflist; i; i = i->next) { if (i->onholdPLCI == plci) break; } @@ -4107,7 +3938,7 @@ static int pbx_capi_ect(struct ast_channel *c, char *param) } cc_mutex_lock(&iflock); - for (ii = iflist; ii; ii = ii->next) { + for (ii = capi_iflist; ii; ii = ii->next) { if (ii->onholdPLCI == plci) break; } @@ -4351,7 +4182,7 @@ static int pbx_capi_realhangup(struct ast_channel *c, char *param) struct capi_pvt *i; cc_mutex_lock(&iflock); - for (i = iflist; i; i = i->next) { + for (i = capi_iflist; i; i = i->next) { if (i->peer == c) break; } @@ -4424,7 +4255,7 @@ static int pbx_capi_3pty_begin(struct ast_channel *c, char *param) } cc_mutex_lock(&iflock); - for (ii = iflist; ii; ii = ii->next) { + for (ii = capi_iflist; ii; ii = ii->next) { if (ii->onholdPLCI == plci) break; } @@ -4755,7 +4586,7 @@ static void capidev_run_secondly(time_t now) /* check for channels to hangup (timeout) */ cc_mutex_lock(&iflock); - for (i = iflist; i; i = i->next) { + for (i = capi_iflist; i; i = i->next) { if (i->used == NULL) { continue; } @@ -4768,7 +4599,7 @@ static void capidev_run_secondly(time_t now) if ((i->whentoqueuehangup) && (i->whentoqueuehangup < now)) { cc_verbose(3, 1, VERBOSE_PREFIX_2 "%s: stay-online queue-hangup.\n", i->vname); - queue_cause_control(i, 1); + capi_queue_cause_control(i, 1); i->whentoqueuehangup = 0; } } @@ -4961,8 +4792,8 @@ int mkif(struct cc_capi_conf *conf) tmp->qsigfeat = conf->qsigfeat; - tmp->next = iflist; /* prepend */ - iflist = tmp; + tmp->next = capi_iflist; /* prepend */ + capi_iflist = tmp; cc_verbose(2, 0, VERBOSE_PREFIX_3 "capi %c %s (%s:%s) contr=%d devs=%d EC=%d,opt=%d,tail=%d\n", (tmp->channeltype == CAPI_CHANNELTYPE_B)? 'B' : 'D', tmp->vname, tmp->incomingmsn, tmp->context, tmp->controller, @@ -5152,7 +4983,7 @@ static int pbxcli_capi_show_channels(int fd, int argc, char *argv[]) cc_mutex_lock(&iflock); - for (i = iflist; i; i = i->next) { + for (i = capi_iflist; i; i = i->next) { if (i->channeltype != CAPI_CHANNELTYPE_B) continue; @@ -5472,7 +5303,7 @@ static int cc_post_init_capi(void) int rtp_ext_size = 0; unsigned needchannels = 0; - for (i = iflist; i && !rtp_ext_size; i = i->next) { + for (i = capi_iflist; i && !rtp_ext_size; i = i->next) { /* if at least one line wants RTP, we need to re-register with bigger block size for RTP-header */ if (capi_controllers[i->controller]->rtpcodec & i->capability) { @@ -5490,7 +5321,7 @@ static int cc_post_init_capi(void) for (controller = 1; controller <= capi_num_controllers; controller++) { if (capi_used_controllers & (1 << controller)) { - if ((error = ListenOnController(ALL_SERVICES, controller)) != 0) { + if ((error = capi_ListenOnController(ALL_SERVICES, controller)) != 0) { cc_log(LOG_ERROR,"Unable to listen on contr%d (error=0x%x)\n", controller, error); } else { @@ -5817,7 +5648,7 @@ int unload_module(void) } } - i = iflist; + i = capi_iflist; while (i) { if ((i->owner) || (i->used)) cc_log(LOG_WARNING, "On unload, interface still has owner or is used.\n"); diff --git a/chan_capi.h b/chan_capi.h index f74b737..688c355 100644 --- a/chan_capi.h +++ b/chan_capi.h @@ -568,10 +568,12 @@ struct cc_capi_controller { * prototypes */ extern const struct ast_channel_tech capi_tech; +extern int capi_capability; extern unsigned capi_ApplID; -extern struct capi_pvt *iflist; +extern struct capi_pvt *capi_iflist; extern void cc_start_b3(struct capi_pvt *i); -extern void queue_cause_control(struct capi_pvt *i, int control); +extern unsigned char capi_tcap_is_digital(unsigned short tcap); +extern void capi_queue_cause_control(struct capi_pvt *i, int control); extern void capidev_handle_connection_conf(struct capi_pvt **i, unsigned int PLCI, unsigned short wInfo, unsigned short wMsgNum); extern void capi_wait_for_answered(struct capi_pvt *i); diff --git a/chan_capi_chat.c b/chan_capi_chat.c index 680dfc1..bf55991 100644 --- a/chan_capi_chat.c +++ b/chan_capi_chat.c @@ -14,6 +14,8 @@ #include #include #include +#include +#include #include "chan_capi20.h" #include "chan_capi.h" @@ -27,7 +29,6 @@ struct capichat_s { unsigned int number; struct ast_channel *chan; struct capi_pvt *i; - _cdword plci; struct capichat_s *next; }; @@ -37,8 +38,9 @@ AST_MUTEX_DEFINE_STATIC(chat_lock); /* * update the capi mixer for the given char room */ -static void update_capi_mixer(int remove, unsigned int roomnumber, _cdword plci) +static void update_capi_mixer(int remove, unsigned int roomnumber, struct capi_pvt *i) { + struct capi_pvt *ii; struct capichat_s *room; unsigned char p_list[360]; _cdword dest; @@ -51,18 +53,22 @@ static void update_capi_mixer(int remove, unsigned int roomnumber, _cdword plci) room = chat_list; while (room) { if ((room->number == roomnumber) && - (room->plci != plci)) { + (room->i != i)) { found++; if (j + 9 > sizeof(p_list)) { /* maybe we need to split capi messages here */ break; } + ii = room->i; p_list[j++] = 8; - p_list[j++] = (_cbyte)(room->plci); - p_list[j++] = (_cbyte)(room->plci >> 8); - p_list[j++] = (_cbyte)(room->plci >> 16); - p_list[j++] = (_cbyte)(room->plci >> 24); + p_list[j++] = (_cbyte)(ii->PLCI); + p_list[j++] = (_cbyte)(ii->PLCI >> 8); + p_list[j++] = (_cbyte)(ii->PLCI >> 16); + p_list[j++] = (_cbyte)(ii->PLCI >> 24); dest = (remove) ? 0x00000000 : 0x00000003; + if (ii->channeltype == CAPI_CHANNELTYPE_NULL) { + dest |= 0x00000030; + } p_list[j++] = (_cbyte)(dest); p_list[j++] = (_cbyte)(dest >> 8); p_list[j++] = (_cbyte)(dest >> 16); @@ -80,14 +86,17 @@ static void update_capi_mixer(int remove, unsigned int roomnumber, _cdword plci) datapath = 0x00000000; if (remove) { /* now we need DATA_B3 again */ - datapath = 0x000000c0; + datapath = 0x0000000c; if (found == 1) { /* only one left, enable DATA_B3 too */ p_list[5] |= 0x30; } } + if (i->channeltype == CAPI_CHANNELTYPE_NULL) { + datapath |= 0x0000000c; + } - capi_sendf(NULL, 0, CAPI_FACILITY_REQ, plci, get_capi_MessageNumber(), + capi_sendf(NULL, 0, CAPI_FACILITY_REQ, i->PLCI, get_capi_MessageNumber(), "w(w(dc))", FACILITYSELECTOR_LINE_INTERCONNECT, 0x0001, /* CONNECT */ @@ -105,7 +114,7 @@ static void del_chat_member(struct capichat_s *room) struct capichat_s *tmproom; struct capichat_s *tmproom2 = NULL; unsigned int roomnumber = room->number; - _cdword plci = room->plci; + struct capi_pvt *i = room->i; cc_mutex_lock(&chat_lock); tmproom = chat_list; @@ -125,7 +134,7 @@ static void del_chat_member(struct capichat_s *room) } cc_mutex_unlock(&chat_lock); - update_capi_mixer(1, roomnumber, plci); + update_capi_mixer(1, roomnumber, i); } /* @@ -149,7 +158,6 @@ static struct capichat_s *add_chat_member(char *roomname, room->name[sizeof(room->name) - 1] = 0; room->chan = chan; room->i = i; - room->plci = i->PLCI; cc_mutex_lock(&chat_lock); @@ -176,11 +184,85 @@ static struct capichat_s *add_chat_member(char *roomname, cc_verbose(3, 0, VERBOSE_PREFIX_3 "%s: added new chat member to room '%s' (%d)\n", i->vname, roomname, roomnumber); - update_capi_mixer(0, roomnumber, room->plci); + update_capi_mixer(0, roomnumber, i); return room; } +/* + * loop during chat + */ +static void chat_handle_events(struct ast_channel *chan, struct capi_pvt *i) +{ + struct ast_frame *f; + int ms; + int exception; + int ready_fd; + int waitfds[1]; + int nfds = 0; + struct ast_channel *rchan; + + waitfds[0] = i->readerfd; + if (i->channeltype == CAPI_CHANNELTYPE_NULL) { + nfds = 1; + ast_set_read_format(chan, capi_capability); + ast_set_write_format(chan, capi_capability); + } + + while (1) { + if (ast_test_flag(chan, AST_FLAG_ZOMBIE)) { + cc_log(LOG_NOTICE, "%s: is zombie.\n", chan->name); + break; + } + if (ast_check_hangup(chan)) { + cc_log(LOG_NOTICE, "%s: got check_hangup.\n", chan->name); + break; + } + ready_fd = 0; + ms = 100; + errno = 0; + exception = 0; + + rchan = ast_waitfor_nandfds(&chan, 1, waitfds, nfds, &exception, &ready_fd, &ms); + + if (rchan) { + f = ast_read(chan); + if (!f) { + break; + } + if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP)) { + ast_frfree(f); + break; + } + if (f->frametype == AST_FRAME_VOICE) { + if (i->channeltype == CAPI_CHANNELTYPE_NULL) { + capi_write_frame(i, f); + } + } + ast_frfree(f); + } else if (ready_fd == i->readerfd) { + if (exception) { + cc_verbose(1, 0, VERBOSE_PREFIX_3 "%s: chat: exception on readerfd\n", + i->vname); + break; + } + f = capi_read_pipeframe(i); + if (f->frametype == AST_FRAME_VOICE) { + ast_write(chan, f); + } + /* ignore other nullplci frames */ + } else { + if ((ready_fd < 0) && ms) { + if (errno == 0 || errno == EINTR) + continue; + cc_log(LOG_WARNING, "%s: Wait failed (%s).\n", + chan->name, strerror(errno)); + break; + } + } + } +} + /* * start the chat */ @@ -189,7 +271,6 @@ int pbx_capi_chat(struct ast_channel *c, char *param) struct capi_pvt *i = NULL; char *roomname, *controller, *options; struct capichat_s *room; - struct ast_frame *f; int state; unsigned int contr = 1; @@ -214,7 +295,7 @@ int pbx_capi_chat(struct ast_channel *c, char *param) i = CC_CHANNEL_PVT(c); } else { /* virtual CAPI channel */ - i = mknullif(c, contr); + i = capi_mknullif(c, contr); if (!i) { return -1; } @@ -234,15 +315,7 @@ int pbx_capi_chat(struct ast_channel *c, char *param) return -1; } - while (ast_waitfor(c, 500) >= 0) { - f = ast_read(c); - if (f) { - ast_frfree(f); - } else { - /* channel was hung up or something else happened */ - break; - } - } + chat_handle_events(c, i); del_chat_member(room); diff --git a/chan_capi_qsig_core.c b/chan_capi_qsig_core.c index 67d2ce4..027e931 100644 --- a/chan_capi_qsig_core.c +++ b/chan_capi_qsig_core.c @@ -778,7 +778,7 @@ unsigned int cc_qsig_add_call_setup_data(unsigned char *data, struct capi_pvt *i i->qsig_data.calltransfer = 1; i->qsig_data.partner_plci = atoi(pp); /* set the other channel as partner to me */ - struct capi_pvt *ii = find_interface_by_plci(i->qsig_data.partner_plci); + struct capi_pvt *ii = capi_find_interface_by_plci(i->qsig_data.partner_plci); if (ii) ii->qsig_data.partner_plci = i->PLCI; @@ -794,7 +794,7 @@ unsigned int cc_qsig_add_call_setup_data(unsigned char *data, struct capi_pvt *i i->qsig_data.calltransfer_onring = 1; i->qsig_data.partner_plci = atoi(pp); /* set the other channel as partner to me */ - struct capi_pvt *ii = find_interface_by_plci(i->qsig_data.partner_plci); + struct capi_pvt *ii = capi_find_interface_by_plci(i->qsig_data.partner_plci); if (ii) ii->qsig_data.partner_plci = i->PLCI; @@ -948,7 +948,7 @@ int pbx_capi_qsig_ct(struct ast_channel *c, char *param) callmark = atoi(marker); cc_verbose(1, 1, VERBOSE_PREFIX_4 " * QSIG_CT: using call marker %i(%s)\n", callmark, marker); - for (ii = iflist; ii; ii = ii->next) { + for (ii = capi_iflist; ii; ii = ii->next) { if (ii->qsig_data.callmark == callmark) break; } @@ -1031,7 +1031,7 @@ void pbx_capi_qsig_handle_info_indication(_cmsg *CMSG, unsigned int PLCI, unsign qsiginvoke = cc_qsig_handle_capi_facilityind( (unsigned char*) INFO_IND_INFOELEMENT(CMSG), i); /* if (i->qsig_data.pr_propose_cid && i->qsig_data.pr_propose_pn) { - struct capi_pvt *ii = find_interface_by_plci(i->qsig_data.partner_plci); + struct capi_pvt *ii = capi_find_interface_by_plci(i->qsig_data.partner_plci); if (ii) { unsigned char fac[CAPI_MAX_FACILITYDATAARRAY_SIZE]; @@ -1077,7 +1077,7 @@ void pbx_capi_qsig_handle_info_indication(_cmsg *CMSG, unsigned int PLCI, unsign /* TODO: some checks, if there's any work here */ if (i->qsig_data.calltransfer_onring) { unsigned char fac[CAPI_MAX_FACILITYDATAARRAY_SIZE]; - struct capi_pvt *ii = find_interface_by_plci(i->qsig_data.partner_plci); + struct capi_pvt *ii = capi_find_interface_by_plci(i->qsig_data.partner_plci); /* needed for Path Replacement */ ii->qsig_data.partner_plci = i->PLCI; @@ -1112,7 +1112,7 @@ void pbx_capi_qsig_handle_info_indication(_cmsg *CMSG, unsigned int PLCI, unsign case 0x8007: /* CONNECT */ /* { if (i->qsig_data.pr_propose_cid && i->qsig_data.pr_propose_pn) { - struct capi_pvt *ii = find_interface_by_plci(i->qsig_data.partner_plci); + struct capi_pvt *ii = capi_find_interface_by_plci(i->qsig_data.partner_plci); if (ii) { unsigned char fac[CAPI_MAX_FACILITYDATAARRAY_SIZE]; diff --git a/chan_capi_supplementary.c b/chan_capi_supplementary.c index ca33474..6d5fd36 100644 --- a/chan_capi_supplementary.c +++ b/chan_capi_supplementary.c @@ -158,7 +158,7 @@ static void new_ccbsnr_id(char type, unsigned int plci, /* if the hangup frame was deferred, it can be done now and here */ if (i->whentoqueuehangup) { i->whentoqueuehangup = 0; - queue_cause_control(i, 1); + capi_queue_cause_control(i, 1); } } diff --git a/chan_capi_utils.c b/chan_capi_utils.c index ba70c25..e90a585 100644 --- a/chan_capi_utils.c +++ b/chan_capi_utils.c @@ -15,8 +15,14 @@ #include #include +#include +#include +#include +#include +#include "xlaw.h" #include "chan_capi20.h" #include "chan_capi.h" +#include "chan_capi_rtp.h" #include "chan_capi_utils.h" #include "chan_capi_supplementary.h" @@ -51,6 +57,16 @@ void cc_verbose(int o_v, int c_d, char *text, ...) vsnprintf(line, sizeof(line), text, ap); va_end(ap); +#if 0 + { + FILE *fp; + if ((fp = fopen("/tmp/cclog", "a")) != NULL) { + fprintf(fp, "%s", line); + fclose(fp); + } + } +#endif + if ((o_v == 0) || (option_verbose > o_v)) { if ((!c_d) || ((c_d) && (capidebug))) { cc_mutex_lock(&verbose_lock); @@ -83,6 +99,8 @@ int capi_remove_nullif(struct capi_pvt *i) } cc_verbose(3, 1, VERBOSE_PREFIX_4 "%s: removed null-interface.\n", i->vname); + if (i->smoother) + ast_smoother_free(i->smoother); free(i); break; } @@ -97,7 +115,7 @@ int capi_remove_nullif(struct capi_pvt *i) /* * create new null-interface */ -struct capi_pvt *mknullif(struct ast_channel *c, unsigned int controller) +struct capi_pvt *capi_mknullif(struct ast_channel *c, unsigned int controller) { struct capi_pvt *tmp; @@ -127,6 +145,13 @@ struct capi_pvt *mknullif(struct ast_channel *c, unsigned int controller) tmp->ecTail = EC_DEFAULT_TAIL; tmp->isdnmode = CAPI_ISDNMODE_MSN; tmp->ecSelector = FACILITYSELECTOR_ECHO_CANCEL; + + if (!(capi_create_reader_writer_pipe(tmp))) { + free(tmp); + return NULL; + } + + tmp->smoother = ast_smoother_new(CAPI_MAX_B3_BLOCK_SIZE); cc_mutex_lock(&nullif_lock); tmp->next = nulliflist; /* prepend */ @@ -171,14 +196,14 @@ _cword get_capi_MessageNumber(void) /* * find the interface (pvt) the PLCI belongs to */ -struct capi_pvt *find_interface_by_plci(unsigned int plci) +struct capi_pvt *capi_find_interface_by_plci(unsigned int plci) { struct capi_pvt *i; if (plci == 0) return NULL; - for (i = iflist; i; i = i->next) { + for (i = capi_iflist; i; i = i->next) { if (i->PLCI == plci) return i; } @@ -196,14 +221,14 @@ struct capi_pvt *find_interface_by_plci(unsigned int plci) /* * find the interface (pvt) the messagenumber belongs to */ -struct capi_pvt *find_interface_by_msgnum(unsigned short msgnum) +struct capi_pvt *capi_find_interface_by_msgnum(unsigned short msgnum) { struct capi_pvt *i; if (msgnum == 0x0000) return NULL; - for (i = iflist; i; i = i->next) { + for (i = capi_iflist; i; i = i->next) { if ((i->PLCI == 0) && (i->MessageNumber == msgnum)) return i; } @@ -813,7 +838,7 @@ void show_capi_info(struct capi_pvt *i, _cword info) /* * send Listen to specified controller */ -unsigned ListenOnController(unsigned int CIPmask, unsigned controller) +unsigned capi_ListenOnController(unsigned int CIPmask, unsigned controller) { MESSAGE_EXCHANGE_ERROR error; int waitcount = 50; @@ -880,7 +905,7 @@ char *capi_number_func(unsigned char *data, unsigned int strip, char *buf) /* * parse the dialstring */ -void parse_dialstring(char *buffer, char **interface, char **dest, char **param, char **ocid) +void capi_parse_dialstring(char *buffer, char **interface, char **dest, char **param, char **ocid) { int cp = 0; char *buffer_p = buffer; @@ -973,3 +998,201 @@ struct ast_channel *cc_get_peer_link_id(const char *p) return chan; } +/* + * create pipe for interface connection + */ +int capi_create_reader_writer_pipe(struct capi_pvt *i) +{ + int fds[2]; + int flags; + + if (pipe(fds) != 0) { + cc_log(LOG_ERROR, "%s: unable to create pipe.\n", + i->vname); + return 0; + } + i->readerfd = fds[0]; + i->writerfd = fds[1]; + flags = fcntl(i->readerfd, F_GETFL); + fcntl(i->readerfd, F_SETFL, flags | O_NONBLOCK); + flags = fcntl(i->writerfd, F_GETFL); + fcntl(i->writerfd, F_SETFL, flags | O_NONBLOCK); + + return 1; +} + +/* + * read a frame from the pipe + */ +struct ast_frame *capi_read_pipeframe(struct capi_pvt *i) +{ + struct ast_frame *f; + int readsize; + + if (i == NULL) { + cc_log(LOG_ERROR, "channel has no interface\n"); + return NULL; + } + if (i->readerfd == -1) { + cc_log(LOG_ERROR, "no readerfd\n"); + return NULL; + } + + f = &i->f; + f->frametype = AST_FRAME_NULL; + f->subclass = 0; + + readsize = read(i->readerfd, f, sizeof(struct ast_frame)); + if ((readsize != sizeof(struct ast_frame)) && (readsize > 0)) { + cc_log(LOG_ERROR, "did not read a whole frame (len=%d, err=%d)\n", + readsize, errno); + } + + f->mallocd = 0; + f->data = NULL; + + if ((f->frametype == AST_FRAME_CONTROL) && (f->subclass == AST_CONTROL_HANGUP)) { + return NULL; + } + + if ((f->frametype == AST_FRAME_VOICE) && (f->datalen > 0)) { + if (f->datalen > sizeof(i->frame_data)) { + cc_log(LOG_ERROR, "f.datalen(%d) greater than space of frame_data(%d)\n", + f->datalen, sizeof(i->frame_data)); + f->datalen = sizeof(i->frame_data); + } + readsize = read(i->readerfd, i->frame_data + AST_FRIENDLY_OFFSET, f->datalen); + if (readsize != f->datalen) { + cc_log(LOG_ERROR, "did not read whole frame data\n"); + } + f->data = i->frame_data + AST_FRIENDLY_OFFSET; + } + return f; +} + +/* + * write for a channel + */ +int capi_write_frame(struct capi_pvt *i, struct ast_frame *f) +{ + struct ast_channel *c; + MESSAGE_EXCHANGE_ERROR error; + int j = 0; + unsigned char *buf; + struct ast_frame *fsmooth; + int txavg=0; + int ret = 0; + + if (!i) { + cc_log(LOG_ERROR, "channel has no interface\n"); + return -1; + } + c = i->owner; + + if ((!(i->isdnstate & CAPI_ISDN_STATE_B3_UP)) || (!i->NCCI) || + ((i->isdnstate & (CAPI_ISDN_STATE_B3_CHANGE | CAPI_ISDN_STATE_LI)))) { + return 0; + } + + if ((!(i->ntmode)) && (i->state != CAPI_STATE_CONNECTED)) { + return 0; + } + + if (f->frametype == AST_FRAME_NULL) { + return 0; + } + if (f->frametype == AST_FRAME_DTMF) { + cc_log(LOG_ERROR, "dtmf frame should be written\n"); + return 0; + } + if (f->frametype != AST_FRAME_VOICE) { + cc_log(LOG_ERROR,"not a voice frame\n"); + return 0; + } + if (i->FaxState & CAPI_FAX_STATE_ACTIVE) { + cc_verbose(3, 1, VERBOSE_PREFIX_2 "%s: write on fax activity?\n", + i->vname); + return 0; + } + if ((!f->data) || (!f->datalen)) { + cc_log(LOG_DEBUG, "No data for FRAME_VOICE %s\n", c->name); + return 0; + } + if (i->isdnstate & CAPI_ISDN_STATE_RTP) { + if ((!(f->subclass & i->codec)) && + (f->subclass != capi_capability)) { + cc_log(LOG_ERROR, "don't know how to write subclass %s(%d)\n", + ast_getformatname(f->subclass), f->subclass); + return 0; + } + return capi_write_rtp(c, f); + } + if (i->B3count >= CAPI_MAX_B3_BLOCKS) { + cc_verbose(3, 1, VERBOSE_PREFIX_4 "%s: B3count is full, dropping packet.\n", + i->vname); + return 0; + } + + if ((!i->smoother) || (ast_smoother_feed(i->smoother, f) != 0)) { + cc_log(LOG_ERROR, "%s: failed to fill smoother\n", i->vname); + return 0; + } + + for (fsmooth = ast_smoother_read(i->smoother); + fsmooth != NULL; + fsmooth = ast_smoother_read(i->smoother)) { + buf = &(i->send_buffer[(i->send_buffer_handle % CAPI_MAX_B3_BLOCKS) * + (CAPI_MAX_B3_BLOCK_SIZE + AST_FRIENDLY_OFFSET)]); + i->send_buffer_handle++; + + if ((i->doES == 1) && (!capi_tcap_is_digital(c->transfercapability))) { + for (j = 0; j < fsmooth->datalen; j++) { + buf[j] = capi_reversebits[ ((unsigned char *)fsmooth->data)[j] ]; + if (capi_capability == AST_FORMAT_ULAW) { + txavg += abs( capiULAW2INT[capi_reversebits[ ((unsigned char*)fsmooth->data)[j]]] ); + } else { + txavg += abs( capiALAW2INT[capi_reversebits[ ((unsigned char*)fsmooth->data)[j]]] ); + } + } + txavg = txavg / j; + for(j = 0; j < ECHO_TX_COUNT - 1; j++) { + i->txavg[j] = i->txavg[j+1]; + } + i->txavg[ECHO_TX_COUNT - 1] = txavg; + } else { + if ((i->txgain == 1.0) || (capi_tcap_is_digital(c->transfercapability))) { + for (j = 0; j < fsmooth->datalen; j++) { + buf[j] = capi_reversebits[((unsigned char *)fsmooth->data)[j]]; + } + } else { + for (j = 0; j < fsmooth->datalen; j++) { + buf[j] = i->g.txgains[capi_reversebits[((unsigned char *)fsmooth->data)[j]]]; + } + } + } + + error = 1; + if (i->B3q > 0) { + error = capi_sendf(NULL, 0, CAPI_DATA_B3_REQ, i->NCCI, get_capi_MessageNumber(), + "dwww", + buf, + fsmooth->datalen, + i->send_buffer_handle, + 0); + } else { + cc_verbose(3, 1, VERBOSE_PREFIX_4 "%s: too much voice to send for NCCI=%#x\n", + i->vname, i->NCCI); + } + + if (!error) { + cc_mutex_lock(&i->lock); + i->B3count++; + i->B3q -= fsmooth->datalen; + if (i->B3q < 0) + i->B3q = 0; + cc_mutex_unlock(&i->lock); + } + } + return ret; +} + diff --git a/chan_capi_utils.h b/chan_capi_utils.h index 19289b3..ef14b1f 100644 --- a/chan_capi_utils.h +++ b/chan_capi_utils.h @@ -22,19 +22,22 @@ extern char *emptyid; extern void cc_verbose(int o_v, int c_d, char *text, ...); extern _cword get_capi_MessageNumber(void); -extern struct capi_pvt *find_interface_by_msgnum(unsigned short msgnum); -extern struct capi_pvt *find_interface_by_plci(unsigned int plci); +extern struct capi_pvt *capi_find_interface_by_msgnum(unsigned short msgnum); +extern struct capi_pvt *capi_find_interface_by_plci(unsigned int plci); extern MESSAGE_EXCHANGE_ERROR capi_wait_conf(struct capi_pvt *i, unsigned short wCmd); extern MESSAGE_EXCHANGE_ERROR capidev_check_wait_get_cmsg(_cmsg *CMSG); extern char *capi_info_string(unsigned int info); extern void show_capi_info(struct capi_pvt *i, _cword info); -extern unsigned ListenOnController(unsigned int CIPmask, unsigned controller); -extern void parse_dialstring(char *buffer, char **interface, char **dest, char **param, char **ocid); +extern unsigned capi_ListenOnController(unsigned int CIPmask, unsigned controller); +extern void capi_parse_dialstring(char *buffer, char **interface, char **dest, char **param, char **ocid); extern char *capi_number_func(unsigned char *data, unsigned int strip, char *buf); extern int cc_add_peer_link_id(struct ast_channel *c); extern struct ast_channel *cc_get_peer_link_id(const char *p); extern int capi_remove_nullif(struct capi_pvt *i); -extern struct capi_pvt *mknullif(struct ast_channel *c, unsigned int controller); +extern struct capi_pvt *capi_mknullif(struct ast_channel *c, unsigned int controller); +extern int capi_create_reader_writer_pipe(struct capi_pvt *i); +extern struct ast_frame *capi_read_pipeframe(struct capi_pvt *i); +extern int capi_write_frame(struct capi_pvt *i, struct ast_frame *f); #define capi_number(data, strip) \ capi_number_func(data, strip, alloca(AST_MAX_EXTENSION)) diff --git a/xlaw.c b/xlaw.c new file mode 100644 index 0000000..d5148ff --- /dev/null +++ b/xlaw.c @@ -0,0 +1,1653 @@ + +#include "xlaw.h" + +const unsigned char capi_reversebits[256] = +{ +0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, +0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, +0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, +0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, +0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, +0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, +0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, +0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, +0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, +0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, +0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, +0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, +0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, +0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, +0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, +0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, +0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, +0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, +0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, +0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, +0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, +0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, +0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, +0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, +0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, +0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, +0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, +0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, +0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, +0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, +0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, +0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff +}; + +const short capiULAW2INT[] = +{ +0x8284, 0x7d7c, 0xf8a4, 0x075c, 0xe104, 0x1efc, 0xfe8c, 0x0174, +0xc184, 0x3e7c, 0xfc94, 0x036c, 0xf0c4, 0x0f3c, 0xff88, 0x0078, +0xa284, 0x5d7c, 0xfaa4, 0x055c, 0xe904, 0x16fc, 0xff0c, 0x00f4, +0xd184, 0x2e7c, 0xfd94, 0x026c, 0xf4c4, 0x0b3c, 0xffc8, 0x0038, +0x9284, 0x6d7c, 0xf9a4, 0x065c, 0xe504, 0x1afc, 0xfecc, 0x0134, +0xc984, 0x367c, 0xfd14, 0x02ec, 0xf2c4, 0x0d3c, 0xffa8, 0x0058, +0xb284, 0x4d7c, 0xfba4, 0x045c, 0xed04, 0x12fc, 0xff4c, 0x00b4, +0xd984, 0x267c, 0xfe14, 0x01ec, 0xf6c4, 0x093c, 0xffe8, 0x0018, +0x8a84, 0x757c, 0xf924, 0x06dc, 0xe304, 0x1cfc, 0xfeac, 0x0154, +0xc584, 0x3a7c, 0xfcd4, 0x032c, 0xf1c4, 0x0e3c, 0xff98, 0x0068, +0xaa84, 0x557c, 0xfb24, 0x04dc, 0xeb04, 0x14fc, 0xff2c, 0x00d4, +0xd584, 0x2a7c, 0xfdd4, 0x022c, 0xf5c4, 0x0a3c, 0xffd8, 0x0028, +0x9a84, 0x657c, 0xfa24, 0x05dc, 0xe704, 0x18fc, 0xfeec, 0x0114, +0xcd84, 0x327c, 0xfd54, 0x02ac, 0xf3c4, 0x0c3c, 0xffb8, 0x0048, +0xba84, 0x457c, 0xfc24, 0x03dc, 0xef04, 0x10fc, 0xff6c, 0x0094, +0xdd84, 0x227c, 0xfe54, 0x01ac, 0xf7c4, 0x083c, 0xfff8, 0x0008, +0x8684, 0x797c, 0xf8e4, 0x071c, 0xe204, 0x1dfc, 0xfe9c, 0x0164, +0xc384, 0x3c7c, 0xfcb4, 0x034c, 0xf144, 0x0ebc, 0xff90, 0x0070, +0xa684, 0x597c, 0xfae4, 0x051c, 0xea04, 0x15fc, 0xff1c, 0x00e4, +0xd384, 0x2c7c, 0xfdb4, 0x024c, 0xf544, 0x0abc, 0xffd0, 0x0030, +0x9684, 0x697c, 0xf9e4, 0x061c, 0xe604, 0x19fc, 0xfedc, 0x0124, +0xcb84, 0x347c, 0xfd34, 0x02cc, 0xf344, 0x0cbc, 0xffb0, 0x0050, +0xb684, 0x497c, 0xfbe4, 0x041c, 0xee04, 0x11fc, 0xff5c, 0x00a4, +0xdb84, 0x247c, 0xfe34, 0x01cc, 0xf744, 0x08bc, 0xfff0, 0x0010, +0x8e84, 0x717c, 0xf964, 0x069c, 0xe404, 0x1bfc, 0xfebc, 0x0144, +0xc784, 0x387c, 0xfcf4, 0x030c, 0xf244, 0x0dbc, 0xffa0, 0x0060, +0xae84, 0x517c, 0xfb64, 0x049c, 0xec04, 0x13fc, 0xff3c, 0x00c4, +0xd784, 0x287c, 0xfdf4, 0x020c, 0xf644, 0x09bc, 0xffe0, 0x0020, +0x9e84, 0x617c, 0xfa64, 0x059c, 0xe804, 0x17fc, 0xfefc, 0x0104, +0xcf84, 0x307c, 0xfd74, 0x028c, 0xf444, 0x0bbc, 0xffc0, 0x0040, +0xbe84, 0x417c, 0xfc64, 0x039c, 0xf004, 0x0ffc, 0xff7c, 0x0084, +0xdf84, 0x207c, 0xfe74, 0x018c, 0xf844, 0x07bc, 0x0000, 0x0000 +}; + +const unsigned char capiINT2ULAW[16384] = { +255,127,127,191,191,63,63,223,223,95,95,159,159,31,31,239, +239,111,111,175,175,47,47,207,207,79,79,143,143,15,15,247, +247,247,247,119,119,119,119,183,183,183,183,55,55,55,55,215, +215,215,215,87,87,87,87,151,151,151,151,23,23,23,23,231, +231,231,231,103,103,103,103,167,167,167,167,39,39,39,39,199, +199,199,199,71,71,71,71,135,135,135,135,7,7,7,7,251, +251,251,251,251,251,251,251,123,123,123,123,123,123,123,123,187, +187,187,187,187,187,187,187,59,59,59,59,59,59,59,59,219, +219,219,219,219,219,219,219,91,91,91,91,91,91,91,91,155, +155,155,155,155,155,155,155,27,27,27,27,27,27,27,27,235, +235,235,235,235,235,235,235,107,107,107,107,107,107,107,107,171, +171,171,171,171,171,171,171,43,43,43,43,43,43,43,43,203, +203,203,203,203,203,203,203,75,75,75,75,75,75,75,75,139, +139,139,139,139,139,139,139,11,11,11,11,11,11,11,11,243, +243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,115, +115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,179, +179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,51, +51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,211, +211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,83, +83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,147, +147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,19, +19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,227, +227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,99, +99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,163, +163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,35, +35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,195, +195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,67, +67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,131, +131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,3, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,253, +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, +253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,125, +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, +125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,189, +189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189, +189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,61, +61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, +61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,221, +221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221, +221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,93, +93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93, +93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,157, +157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157, +157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, +29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,237, +237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237, +237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, +109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,173, +173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173, +173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,45, +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, +45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,205, +205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205, +205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,77, +77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77, +77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,141, +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, +141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,13, +13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, +13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,245, +245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, +245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, +245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, +245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,117, +117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, +117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, +117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, +117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,181, +181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, +181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, +181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, +181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,53, +53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, +53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, +53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, +53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,213, +213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, +213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, +213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, +213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,149, +149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, +149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, +149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, +149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,21, +21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, +21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, +21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, +21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, +229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,101, +101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, +101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, +101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, +101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,165, +165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, +165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, +165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, +165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,37, +37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, +37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, +37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, +37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,197, +197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, +197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, +197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, +197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,69, +69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, +69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, +69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, +69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,133, +133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, +133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, +133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, +133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,249, +249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, +249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, +249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, +249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, +249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, +249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, +249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, +249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,121, +121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, +121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, +121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, +121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, +121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, +121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, +121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, +121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,185, +185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, +185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, +185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, +185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, +185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, +185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, +185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, +185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,57, +57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, +57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, +57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, +57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, +57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, +57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, +57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, +57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,217, +217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, +217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, +217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, +217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, +217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, +217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, +217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, +217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,89, +89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, +89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, +89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, +89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, +89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, +89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, +89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, +89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,153, +153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, +153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, +153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, +153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, +153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, +153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, +153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, +153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, +25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,233, +233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, +233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, +233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, +233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, +233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, +233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, +233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, +233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,105, +105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, +105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, +105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, +105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, +105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, +105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, +105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, +105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,169, +169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, +169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, +169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, +169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, +169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, +169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, +169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, +169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,41, +41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, +41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, +41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, +41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, +41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, +41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, +41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, +41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,201, +201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, +201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, +201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, +201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, +201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, +201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, +201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, +201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,73, +73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, +73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, +73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, +73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, +73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, +73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, +73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, +73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,137, +137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, +137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, +137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, +137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, +137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, +137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, +137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, +137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,9, +9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, +9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, +241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, +113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, +177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, +49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, +209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, +145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, +17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, +225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, +97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, +161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, +33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, +193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, +65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, +129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, +128,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, +64,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, +192,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, +160,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, +96,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, +224,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, +16,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, +144,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, +80,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, +208,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, +48,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, +176,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, +112,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, +240,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, +8,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, +136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, +136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, +136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, +136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, +136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, +136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, +136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, +136,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, +72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, +72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, +72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, +72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, +72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, +72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, +72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, +72,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, +200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, +200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, +200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, +200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, +200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, +200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, +200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, +200,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, +40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, +40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, +40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, +40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, +40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, +40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, +40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, +40,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, +168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, +168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, +168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, +168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, +168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, +168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, +168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, +168,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, +104,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, +232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, +232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, +232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, +232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, +232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, +232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, +232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, +232,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, +24,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, +152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, +152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, +152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, +152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, +152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, +152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, +152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, +152,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, +88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, +88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, +88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, +88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, +88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, +88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, +88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, +88,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, +216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, +216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, +216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, +216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, +216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, +216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, +216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, +216,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, +56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, +56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, +56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, +56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, +56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, +56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, +56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, +56,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, +184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, +184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, +184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, +184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, +184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, +184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, +184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, +184,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, +120,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, +248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, +248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, +248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, +248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, +248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, +248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, +248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, +248,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, +132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, +132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, +132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, +132,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, +68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, +68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, +68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, +68,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, +196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, +196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, +196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, +196,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, +36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, +36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, +36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, +36,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, +164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, +164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, +164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, +164,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, +100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, +100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, +100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, +100,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, +228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, +228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, +228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, +228,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, +20,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, +148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, +148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, +148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, +148,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, +84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, +84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, +84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, +84,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, +212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, +212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, +212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, +212,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, +52,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, +180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, +180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, +180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, +180,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, +116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, +116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, +116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, +116,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, +244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, +244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, +244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, +244,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, +12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, +12,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140, +140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140, +140,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, +76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, +76,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, +204,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, +44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, +44,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, +172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, +172,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108, +108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108, +108,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, +236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, +236,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, +28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, +28,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, +156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, +156,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92, +92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92, +92,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, +220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, +220,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, +60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, +60,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, +188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, +188,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, +124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, +124,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252, +252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252, +252,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, +2,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130, +130,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66, +66,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194, +194,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, +34,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162, +162,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98, +98,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226, +226,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, +18,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146, +146,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82, +82,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, +210,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50, +50,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178, +178,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, +114,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, +242,10,10,10,10,10,10,10,10,138,138,138,138,138,138,138, +138,74,74,74,74,74,74,74,74,202,202,202,202,202,202,202, +202,42,42,42,42,42,42,42,42,170,170,170,170,170,170,170, +170,106,106,106,106,106,106,106,106,234,234,234,234,234,234,234, +234,26,26,26,26,26,26,26,26,154,154,154,154,154,154,154, +154,90,90,90,90,90,90,90,90,218,218,218,218,218,218,218, +218,58,58,58,58,58,58,58,58,186,186,186,186,186,186,186, +186,122,122,122,122,122,122,122,122,250,250,250,250,250,250,250, +250,6,6,6,6,134,134,134,134,70,70,70,70,198,198,198, +198,38,38,38,38,166,166,166,166,102,102,102,102,230,230,230, +230,22,22,22,22,150,150,150,150,86,86,86,86,214,214,214, +214,54,54,54,54,182,182,182,182,118,118,118,118,246,246,246, +246,14,14,142,142,78,78,206,206,46,46,174,174,110,110,238, +238,30,30,158,158,94,94,222,222,62,62,190,190,126,126,254, +}; + +const short capiALAW2INT[] = +{ + 0x13fc, 0xec04, 0x0144, 0xfebc, 0x517c, 0xae84, 0x051c, 0xfae4, + 0x0a3c, 0xf5c4, 0x0048, 0xffb8, 0x287c, 0xd784, 0x028c, 0xfd74, + 0x1bfc, 0xe404, 0x01cc, 0xfe34, 0x717c, 0x8e84, 0x071c, 0xf8e4, + 0x0e3c, 0xf1c4, 0x00c4, 0xff3c, 0x387c, 0xc784, 0x039c, 0xfc64, + 0x0ffc, 0xf004, 0x0104, 0xfefc, 0x417c, 0xbe84, 0x041c, 0xfbe4, + 0x083c, 0xf7c4, 0x0008, 0xfff8, 0x207c, 0xdf84, 0x020c, 0xfdf4, + 0x17fc, 0xe804, 0x018c, 0xfe74, 0x617c, 0x9e84, 0x061c, 0xf9e4, + 0x0c3c, 0xf3c4, 0x0084, 0xff7c, 0x307c, 0xcf84, 0x030c, 0xfcf4, + 0x15fc, 0xea04, 0x0164, 0xfe9c, 0x597c, 0xa684, 0x059c, 0xfa64, + 0x0b3c, 0xf4c4, 0x0068, 0xff98, 0x2c7c, 0xd384, 0x02cc, 0xfd34, + 0x1dfc, 0xe204, 0x01ec, 0xfe14, 0x797c, 0x8684, 0x07bc, 0xf844, + 0x0f3c, 0xf0c4, 0x00e4, 0xff1c, 0x3c7c, 0xc384, 0x03dc, 0xfc24, + 0x11fc, 0xee04, 0x0124, 0xfedc, 0x497c, 0xb684, 0x049c, 0xfb64, + 0x093c, 0xf6c4, 0x0028, 0xffd8, 0x247c, 0xdb84, 0x024c, 0xfdb4, + 0x19fc, 0xe604, 0x01ac, 0xfe54, 0x697c, 0x9684, 0x069c, 0xf964, + 0x0d3c, 0xf2c4, 0x00a4, 0xff5c, 0x347c, 0xcb84, 0x034c, 0xfcb4, + 0x12fc, 0xed04, 0x0134, 0xfecc, 0x4d7c, 0xb284, 0x04dc, 0xfb24, + 0x09bc, 0xf644, 0x0038, 0xffc8, 0x267c, 0xd984, 0x026c, 0xfd94, + 0x1afc, 0xe504, 0x01ac, 0xfe54, 0x6d7c, 0x9284, 0x06dc, 0xf924, + 0x0dbc, 0xf244, 0x00b4, 0xff4c, 0x367c, 0xc984, 0x036c, 0xfc94, + 0x0f3c, 0xf0c4, 0x00f4, 0xff0c, 0x3e7c, 0xc184, 0x03dc, 0xfc24, + 0x07bc, 0xf844, 0x0008, 0xfff8, 0x1efc, 0xe104, 0x01ec, 0xfe14, + 0x16fc, 0xe904, 0x0174, 0xfe8c, 0x5d7c, 0xa284, 0x05dc, 0xfa24, + 0x0bbc, 0xf444, 0x0078, 0xff88, 0x2e7c, 0xd184, 0x02ec, 0xfd14, + 0x14fc, 0xeb04, 0x0154, 0xfeac, 0x557c, 0xaa84, 0x055c, 0xfaa4, + 0x0abc, 0xf544, 0x0058, 0xffa8, 0x2a7c, 0xd584, 0x02ac, 0xfd54, + 0x1cfc, 0xe304, 0x01cc, 0xfe34, 0x757c, 0x8a84, 0x075c, 0xf8a4, + 0x0ebc, 0xf144, 0x00d4, 0xff2c, 0x3a7c, 0xc584, 0x039c, 0xfc64, + 0x10fc, 0xef04, 0x0114, 0xfeec, 0x457c, 0xba84, 0x045c, 0xfba4, + 0x08bc, 0xf744, 0x0018, 0xffe8, 0x227c, 0xdd84, 0x022c, 0xfdd4, + 0x18fc, 0xe704, 0x018c, 0xfe74, 0x657c, 0x9a84, 0x065c, 0xf9a4, + 0x0cbc, 0xf344, 0x0094, 0xff6c, 0x327c, 0xcd84, 0x032c, 0xfcd4 +}; + +const unsigned char capiINT2ALAW[8192] = { + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, + 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, + 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, + 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, + 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, + 148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, + 148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, + 148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, + 148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, + 116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, + 116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, + 116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, + 116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, + 244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, + 244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, + 244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, + 244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, + 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, + 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, + 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, + 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, + 180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, + 180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, + 180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, + 180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, + 68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, + 68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, + 68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, + 68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, + 196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, + 196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, + 196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, + 196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, + 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, + 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, + 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, + 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, + 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, + 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, + 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, + 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, + 228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, + 228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, + 228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, + 228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, + 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, + 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, + 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, + 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, + 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, + 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, + 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, + 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, + 92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92, + 92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92, + 220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, + 220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, + 156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, + 156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, + 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, + 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252, + 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, + 188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, + 188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, + 76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, + 76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, + 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, + 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140, + 140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140, + 108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108, + 108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108, + 236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, + 236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, + 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, + 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, + 172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, + 172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, + 80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, + 208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, + 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, + 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, + 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, + 176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, + 64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, + 96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, + 88,88,88,88,88,88,88,88,216,216,216,216,216,216,216,216, + 24,24,24,24,24,24,24,24,152,152,152,152,152,152,152,152, + 120,120,120,120,120,120,120,120,248,248,248,248,248,248,248,248, + 56,56,56,56,56,56,56,56,184,184,184,184,184,184,184,184, + 72,72,72,72,72,72,72,72,200,200,200,200,200,200,200,200, + 8,8,8,8,8,8,8,8,136,136,136,136,136,136,136,136, + 104,104,104,104,104,104,104,104,232,232,232,232,232,232,232,232, + 40,40,40,40,40,40,40,40,168,168,168,168,168,168,168,168, + 86,86,86,86,214,214,214,214,22,22,22,22,150,150,150,150, + 118,118,118,118,246,246,246,246,54,54,54,54,182,182,182,182, + 70,70,70,70,198,198,198,198,6,6,6,6,134,134,134,134, + 102,102,102,102,230,230,230,230,38,38,38,38,166,166,166,166, + 94,94,222,222,30,30,158,158,126,126,254,254,62,62,190,190, + 78,78,206,206,14,14,142,142,110,110,238,238,46,46,174,174, + 82,210,18,146,114,242,50,178,66,194,2,130,98,226,34,162, + 90,218,26,154,122,250,58,186,74,202,10,138,106,234,42,170, + 171,43,235,107,139,11,203,75,187,59,251,123,155,27,219,91, + 163,35,227,99,131,3,195,67,179,51,243,115,147,19,211,83, + 175,175,47,47,239,239,111,111,143,143,15,15,207,207,79,79, + 191,191,63,63,255,255,127,127,159,159,31,31,223,223,95,95, + 167,167,167,167,39,39,39,39,231,231,231,231,103,103,103,103, + 135,135,135,135,7,7,7,7,199,199,199,199,71,71,71,71, + 183,183,183,183,55,55,55,55,247,247,247,247,119,119,119,119, + 151,151,151,151,23,23,23,23,215,215,215,215,87,87,87,87, + 169,169,169,169,169,169,169,169,41,41,41,41,41,41,41,41, + 233,233,233,233,233,233,233,233,105,105,105,105,105,105,105,105, + 137,137,137,137,137,137,137,137,9,9,9,9,9,9,9,9, + 201,201,201,201,201,201,201,201,73,73,73,73,73,73,73,73, + 185,185,185,185,185,185,185,185,57,57,57,57,57,57,57,57, + 249,249,249,249,249,249,249,249,121,121,121,121,121,121,121,121, + 153,153,153,153,153,153,153,153,25,25,25,25,25,25,25,25, + 217,217,217,217,217,217,217,217,89,89,89,89,89,89,89,89, + 161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, + 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, + 225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, + 97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, + 129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, + 65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, + 177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, + 49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, + 241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, + 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, + 145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, + 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, + 209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, + 81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, + 173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173, + 173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173, + 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, + 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, + 237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237, + 237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237, + 109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + 109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, + 141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, + 141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, + 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, + 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, + 205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205, + 205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205, + 77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77, + 77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77, + 189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189, + 189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, + 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, + 125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, + 125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, + 157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157, + 157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, + 221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221, + 221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221, + 93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93, + 93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93, + 165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, + 165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, + 165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, + 165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, + 229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, + 229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, + 229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, + 229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, + 101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, + 101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, + 101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, + 101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, + 133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, + 133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, + 133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, + 133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, + 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, + 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, + 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, + 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, + 69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, + 69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, + 69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, + 69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, + 181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, + 181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, + 181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, + 181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, + 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, + 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, + 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, + 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, + 245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, + 245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, + 245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, + 245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, + 117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, + 117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, + 117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, + 117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, + 149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, + 149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, + 149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, + 149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, + 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, + 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, + 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, + 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, + 213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, + 213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, + 213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, + 213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, + 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85 +}; + diff --git a/xlaw.h b/xlaw.h index 3e3c7e3..61a35bd 100644 --- a/xlaw.h +++ b/xlaw.h @@ -1,1653 +1,14 @@ +#ifndef CAPI_XLAW_H +#define CAPI_XLAW_H + #define capi_int2ulaw(x) capiINT2ULAW[((unsigned short)x) >> 2] #define capi_int2alaw(x) capiINT2ALAW[(x>>4)+4096] -static unsigned char reversebits[256] = -{ -0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, -0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, -0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, -0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, -0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, -0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, -0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, -0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, -0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, -0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, -0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, -0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, -0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, -0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, -0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, -0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, -0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, -0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, -0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, -0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, -0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, -0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, -0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, -0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, -0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, -0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, -0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, -0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, -0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, -0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, -0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, -0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff -}; +extern const unsigned char capi_reversebits[256]; +extern const short capiULAW2INT[]; +extern const unsigned char capiINT2ULAW[16384]; +extern const short capiALAW2INT[]; +extern const unsigned char capiINT2ALAW[8192]; -static short capiULAW2INT[] = -{ -0x8284, 0x7d7c, 0xf8a4, 0x075c, 0xe104, 0x1efc, 0xfe8c, 0x0174, -0xc184, 0x3e7c, 0xfc94, 0x036c, 0xf0c4, 0x0f3c, 0xff88, 0x0078, -0xa284, 0x5d7c, 0xfaa4, 0x055c, 0xe904, 0x16fc, 0xff0c, 0x00f4, -0xd184, 0x2e7c, 0xfd94, 0x026c, 0xf4c4, 0x0b3c, 0xffc8, 0x0038, -0x9284, 0x6d7c, 0xf9a4, 0x065c, 0xe504, 0x1afc, 0xfecc, 0x0134, -0xc984, 0x367c, 0xfd14, 0x02ec, 0xf2c4, 0x0d3c, 0xffa8, 0x0058, -0xb284, 0x4d7c, 0xfba4, 0x045c, 0xed04, 0x12fc, 0xff4c, 0x00b4, -0xd984, 0x267c, 0xfe14, 0x01ec, 0xf6c4, 0x093c, 0xffe8, 0x0018, -0x8a84, 0x757c, 0xf924, 0x06dc, 0xe304, 0x1cfc, 0xfeac, 0x0154, -0xc584, 0x3a7c, 0xfcd4, 0x032c, 0xf1c4, 0x0e3c, 0xff98, 0x0068, -0xaa84, 0x557c, 0xfb24, 0x04dc, 0xeb04, 0x14fc, 0xff2c, 0x00d4, -0xd584, 0x2a7c, 0xfdd4, 0x022c, 0xf5c4, 0x0a3c, 0xffd8, 0x0028, -0x9a84, 0x657c, 0xfa24, 0x05dc, 0xe704, 0x18fc, 0xfeec, 0x0114, -0xcd84, 0x327c, 0xfd54, 0x02ac, 0xf3c4, 0x0c3c, 0xffb8, 0x0048, -0xba84, 0x457c, 0xfc24, 0x03dc, 0xef04, 0x10fc, 0xff6c, 0x0094, -0xdd84, 0x227c, 0xfe54, 0x01ac, 0xf7c4, 0x083c, 0xfff8, 0x0008, -0x8684, 0x797c, 0xf8e4, 0x071c, 0xe204, 0x1dfc, 0xfe9c, 0x0164, -0xc384, 0x3c7c, 0xfcb4, 0x034c, 0xf144, 0x0ebc, 0xff90, 0x0070, -0xa684, 0x597c, 0xfae4, 0x051c, 0xea04, 0x15fc, 0xff1c, 0x00e4, -0xd384, 0x2c7c, 0xfdb4, 0x024c, 0xf544, 0x0abc, 0xffd0, 0x0030, -0x9684, 0x697c, 0xf9e4, 0x061c, 0xe604, 0x19fc, 0xfedc, 0x0124, -0xcb84, 0x347c, 0xfd34, 0x02cc, 0xf344, 0x0cbc, 0xffb0, 0x0050, -0xb684, 0x497c, 0xfbe4, 0x041c, 0xee04, 0x11fc, 0xff5c, 0x00a4, -0xdb84, 0x247c, 0xfe34, 0x01cc, 0xf744, 0x08bc, 0xfff0, 0x0010, -0x8e84, 0x717c, 0xf964, 0x069c, 0xe404, 0x1bfc, 0xfebc, 0x0144, -0xc784, 0x387c, 0xfcf4, 0x030c, 0xf244, 0x0dbc, 0xffa0, 0x0060, -0xae84, 0x517c, 0xfb64, 0x049c, 0xec04, 0x13fc, 0xff3c, 0x00c4, -0xd784, 0x287c, 0xfdf4, 0x020c, 0xf644, 0x09bc, 0xffe0, 0x0020, -0x9e84, 0x617c, 0xfa64, 0x059c, 0xe804, 0x17fc, 0xfefc, 0x0104, -0xcf84, 0x307c, 0xfd74, 0x028c, 0xf444, 0x0bbc, 0xffc0, 0x0040, -0xbe84, 0x417c, 0xfc64, 0x039c, 0xf004, 0x0ffc, 0xff7c, 0x0084, -0xdf84, 0x207c, 0xfe74, 0x018c, 0xf844, 0x07bc, 0x0000, 0x0000 -}; - -const unsigned char capiINT2ULAW[16384] = { -255,127,127,191,191,63,63,223,223,95,95,159,159,31,31,239, -239,111,111,175,175,47,47,207,207,79,79,143,143,15,15,247, -247,247,247,119,119,119,119,183,183,183,183,55,55,55,55,215, -215,215,215,87,87,87,87,151,151,151,151,23,23,23,23,231, -231,231,231,103,103,103,103,167,167,167,167,39,39,39,39,199, -199,199,199,71,71,71,71,135,135,135,135,7,7,7,7,251, -251,251,251,251,251,251,251,123,123,123,123,123,123,123,123,187, -187,187,187,187,187,187,187,59,59,59,59,59,59,59,59,219, -219,219,219,219,219,219,219,91,91,91,91,91,91,91,91,155, -155,155,155,155,155,155,155,27,27,27,27,27,27,27,27,235, -235,235,235,235,235,235,235,107,107,107,107,107,107,107,107,171, -171,171,171,171,171,171,171,43,43,43,43,43,43,43,43,203, -203,203,203,203,203,203,203,75,75,75,75,75,75,75,75,139, -139,139,139,139,139,139,139,11,11,11,11,11,11,11,11,243, -243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,115, -115,115,115,115,115,115,115,115,115,115,115,115,115,115,115,179, -179,179,179,179,179,179,179,179,179,179,179,179,179,179,179,51, -51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,211, -211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,83, -83,83,83,83,83,83,83,83,83,83,83,83,83,83,83,147, -147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,19, -19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,227, -227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,99, -99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,163, -163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,35, -35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,195, -195,195,195,195,195,195,195,195,195,195,195,195,195,195,195,67, -67,67,67,67,67,67,67,67,67,67,67,67,67,67,67,131, -131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,3, -3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,253, -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, -253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,125, -125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, -125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,189, -189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189, -189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,61, -61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, -61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,221, -221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221, -221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,93, -93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93, -93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,157, -157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157, -157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,29, -29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, -29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,237, -237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237, -237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,109, -109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, -109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,173, -173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173, -173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, -45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,205, -205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205, -205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,77, -77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77, -77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,141, -141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, -141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,13, -13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, -13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,245, -245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, -245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, -245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, -245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,117, -117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, -117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, -117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, -117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,181, -181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, -181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, -181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, -181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,53, -53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, -53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, -53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, -53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,213, -213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, -213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, -213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, -213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,85, -85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, -85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, -85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, -85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,149, -149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, -149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, -149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, -149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,21, -21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, -21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, -21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, -21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,229, -229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, -229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, -229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, -229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,101, -101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, -101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, -101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, -101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,165, -165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, -165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, -165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, -165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,37, -37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, -37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, -37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, -37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,197, -197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, -197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, -197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, -197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,69, -69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, -69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, -69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, -69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,133, -133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, -133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, -133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, -133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, -5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,249, -249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, -249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, -249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, -249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, -249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, -249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, -249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249, -249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,121, -121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, -121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, -121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, -121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, -121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, -121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, -121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,121, -121,121,121,121,121,121,121,121,121,121,121,121,121,121,121,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185, -185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,57, -57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, -57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, -57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, -57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, -57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, -57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, -57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57, -57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,217, -217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, -217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, -217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, -217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, -217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, -217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, -217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217, -217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,89, -89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, -89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, -89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, -89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, -89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, -89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, -89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89, -89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,153, -153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, -153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, -153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, -153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, -153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, -153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, -153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153, -153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,25, -25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, -25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, -25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, -25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, -25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, -25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, -25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25, -25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,233, -233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, -233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, -233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, -233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, -233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, -233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, -233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,233, -233,233,233,233,233,233,233,233,233,233,233,233,233,233,233,105, -105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, -105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, -105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, -105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, -105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, -105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, -105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105, -105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,169, -169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, -169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, -169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, -169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, -169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, -169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, -169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,169, -169,169,169,169,169,169,169,169,169,169,169,169,169,169,169,41, -41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, -41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, -41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, -41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, -41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, -41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, -41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41, -41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,201, -201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, -201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, -201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, -201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, -201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, -201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, -201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, -201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,73, -73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, -73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, -73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, -73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, -73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, -73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, -73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,73, -73,73,73,73,73,73,73,73,73,73,73,73,73,73,73,137, -137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, -137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, -137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, -137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, -137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, -137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, -137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,137, -137,137,137,137,137,137,137,137,137,137,137,137,137,137,137,9, -9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, -9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, -9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, -9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, -9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, -9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, -9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, -9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, -241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, -113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, -177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, -49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, -209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, -81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, -145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, -17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, -225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, -97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, -161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, -33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, -193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, -65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, -129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, -128,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, -64,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, -192,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, -32,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, -160,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, -96,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, -224,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, -16,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, -144,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, -80,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, -208,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, -48,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, -176,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, -112,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, -240,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, -8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, -8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, -8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, -8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, -8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, -8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, -8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, -8,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, -136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, -136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, -136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, -136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, -136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, -136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, -136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136, -136,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, -72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, -72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, -72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, -72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, -72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, -72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, -72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72, -72,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, -200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, -200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, -200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, -200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, -200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, -200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, -200,200,200,200,200,200,200,200,200,200,200,200,200,200,200,200, -200,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, -40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, -40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, -40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, -40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, -40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, -40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, -40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40, -40,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, -168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, -168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, -168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, -168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, -168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, -168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, -168,168,168,168,168,168,168,168,168,168,168,168,168,168,168,168, -168,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, -104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, -104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, -104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, -104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, -104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, -104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, -104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104, -104,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, -232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, -232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, -232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, -232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, -232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, -232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, -232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232, -232,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, -24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, -24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, -24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, -24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, -24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, -24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, -24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24, -24,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, -152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, -152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, -152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, -152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, -152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, -152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, -152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152, -152,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, -88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, -88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, -88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, -88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, -88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, -88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, -88,88,88,88,88,88,88,88,88,88,88,88,88,88,88,88, -88,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, -216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, -216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, -216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, -216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, -216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, -216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, -216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216, -216,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, -56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, -56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, -56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, -56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, -56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, -56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, -56,56,56,56,56,56,56,56,56,56,56,56,56,56,56,56, -56,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, -184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, -184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, -184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, -184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, -184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, -184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, -184,184,184,184,184,184,184,184,184,184,184,184,184,184,184,184, -184,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,120,120,120,120,120,120,120,120,120,120,120,120,120,120,120, -120,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248, -248,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, -4,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, -132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, -132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, -132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, -132,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, -68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, -68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, -68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, -68,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, -196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, -196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, -196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, -196,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, -36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, -36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, -36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, -36,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, -164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, -164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, -164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, -164,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, -100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, -100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, -100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, -100,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, -228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, -228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, -228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, -228,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, -148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, -148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, -148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, -148,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, -84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, -84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, -84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, -84,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, -212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, -212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, -212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, -212,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, -52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, -52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, -52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, -52,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, -180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, -180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, -180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, -180,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, -116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, -116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, -116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, -116,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, -244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, -244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, -244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, -244,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, -12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, -12,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140, -140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140, -140,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, -76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, -76,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, -204,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, -44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, -44,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, -172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, -172,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108, -108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108, -108,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, -236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, -236,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, -28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, -28,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, -156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, -156,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92, -92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92, -92,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, -220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, -220,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, -60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, -60,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, -188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, -188,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, -124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, -124,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252, -252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252, -252,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, -2,130,130,130,130,130,130,130,130,130,130,130,130,130,130,130, -130,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66, -66,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194, -194,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, -34,162,162,162,162,162,162,162,162,162,162,162,162,162,162,162, -162,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98, -98,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226, -226,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18, -18,146,146,146,146,146,146,146,146,146,146,146,146,146,146,146, -146,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82, -82,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210, -210,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50, -50,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178, -178,114,114,114,114,114,114,114,114,114,114,114,114,114,114,114, -114,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242, -242,10,10,10,10,10,10,10,10,138,138,138,138,138,138,138, -138,74,74,74,74,74,74,74,74,202,202,202,202,202,202,202, -202,42,42,42,42,42,42,42,42,170,170,170,170,170,170,170, -170,106,106,106,106,106,106,106,106,234,234,234,234,234,234,234, -234,26,26,26,26,26,26,26,26,154,154,154,154,154,154,154, -154,90,90,90,90,90,90,90,90,218,218,218,218,218,218,218, -218,58,58,58,58,58,58,58,58,186,186,186,186,186,186,186, -186,122,122,122,122,122,122,122,122,250,250,250,250,250,250,250, -250,6,6,6,6,134,134,134,134,70,70,70,70,198,198,198, -198,38,38,38,38,166,166,166,166,102,102,102,102,230,230,230, -230,22,22,22,22,150,150,150,150,86,86,86,86,214,214,214, -214,54,54,54,54,182,182,182,182,118,118,118,118,246,246,246, -246,14,14,142,142,78,78,206,206,46,46,174,174,110,110,238, -238,30,30,158,158,94,94,222,222,62,62,190,190,126,126,254, -}; - -static short capiALAW2INT[] = -{ - 0x13fc, 0xec04, 0x0144, 0xfebc, 0x517c, 0xae84, 0x051c, 0xfae4, - 0x0a3c, 0xf5c4, 0x0048, 0xffb8, 0x287c, 0xd784, 0x028c, 0xfd74, - 0x1bfc, 0xe404, 0x01cc, 0xfe34, 0x717c, 0x8e84, 0x071c, 0xf8e4, - 0x0e3c, 0xf1c4, 0x00c4, 0xff3c, 0x387c, 0xc784, 0x039c, 0xfc64, - 0x0ffc, 0xf004, 0x0104, 0xfefc, 0x417c, 0xbe84, 0x041c, 0xfbe4, - 0x083c, 0xf7c4, 0x0008, 0xfff8, 0x207c, 0xdf84, 0x020c, 0xfdf4, - 0x17fc, 0xe804, 0x018c, 0xfe74, 0x617c, 0x9e84, 0x061c, 0xf9e4, - 0x0c3c, 0xf3c4, 0x0084, 0xff7c, 0x307c, 0xcf84, 0x030c, 0xfcf4, - 0x15fc, 0xea04, 0x0164, 0xfe9c, 0x597c, 0xa684, 0x059c, 0xfa64, - 0x0b3c, 0xf4c4, 0x0068, 0xff98, 0x2c7c, 0xd384, 0x02cc, 0xfd34, - 0x1dfc, 0xe204, 0x01ec, 0xfe14, 0x797c, 0x8684, 0x07bc, 0xf844, - 0x0f3c, 0xf0c4, 0x00e4, 0xff1c, 0x3c7c, 0xc384, 0x03dc, 0xfc24, - 0x11fc, 0xee04, 0x0124, 0xfedc, 0x497c, 0xb684, 0x049c, 0xfb64, - 0x093c, 0xf6c4, 0x0028, 0xffd8, 0x247c, 0xdb84, 0x024c, 0xfdb4, - 0x19fc, 0xe604, 0x01ac, 0xfe54, 0x697c, 0x9684, 0x069c, 0xf964, - 0x0d3c, 0xf2c4, 0x00a4, 0xff5c, 0x347c, 0xcb84, 0x034c, 0xfcb4, - 0x12fc, 0xed04, 0x0134, 0xfecc, 0x4d7c, 0xb284, 0x04dc, 0xfb24, - 0x09bc, 0xf644, 0x0038, 0xffc8, 0x267c, 0xd984, 0x026c, 0xfd94, - 0x1afc, 0xe504, 0x01ac, 0xfe54, 0x6d7c, 0x9284, 0x06dc, 0xf924, - 0x0dbc, 0xf244, 0x00b4, 0xff4c, 0x367c, 0xc984, 0x036c, 0xfc94, - 0x0f3c, 0xf0c4, 0x00f4, 0xff0c, 0x3e7c, 0xc184, 0x03dc, 0xfc24, - 0x07bc, 0xf844, 0x0008, 0xfff8, 0x1efc, 0xe104, 0x01ec, 0xfe14, - 0x16fc, 0xe904, 0x0174, 0xfe8c, 0x5d7c, 0xa284, 0x05dc, 0xfa24, - 0x0bbc, 0xf444, 0x0078, 0xff88, 0x2e7c, 0xd184, 0x02ec, 0xfd14, - 0x14fc, 0xeb04, 0x0154, 0xfeac, 0x557c, 0xaa84, 0x055c, 0xfaa4, - 0x0abc, 0xf544, 0x0058, 0xffa8, 0x2a7c, 0xd584, 0x02ac, 0xfd54, - 0x1cfc, 0xe304, 0x01cc, 0xfe34, 0x757c, 0x8a84, 0x075c, 0xf8a4, - 0x0ebc, 0xf144, 0x00d4, 0xff2c, 0x3a7c, 0xc584, 0x039c, 0xfc64, - 0x10fc, 0xef04, 0x0114, 0xfeec, 0x457c, 0xba84, 0x045c, 0xfba4, - 0x08bc, 0xf744, 0x0018, 0xffe8, 0x227c, 0xdd84, 0x022c, 0xfdd4, - 0x18fc, 0xe704, 0x018c, 0xfe74, 0x657c, 0x9a84, 0x065c, 0xf9a4, - 0x0cbc, 0xf344, 0x0094, 0xff6c, 0x327c, 0xcd84, 0x032c, 0xfcd4 -}; - -const unsigned char capiINT2ALAW[8192] = { - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 84,84,84,84,84,84,84,84,84,84,84,84,84,84,84,84, - 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, - 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, - 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, - 212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212, - 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, - 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, - 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, - 20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, - 148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, - 148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, - 148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, - 148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, - 116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, - 116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, - 116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, - 116,116,116,116,116,116,116,116,116,116,116,116,116,116,116,116, - 244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, - 244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, - 244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, - 244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244, - 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, - 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, - 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, - 52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52, - 180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, - 180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, - 180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, - 180,180,180,180,180,180,180,180,180,180,180,180,180,180,180,180, - 68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, - 68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, - 68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, - 68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68, - 196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, - 196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, - 196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, - 196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, - 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, - 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, - 132,132,132,132,132,132,132,132,132,132,132,132,132,132,132,132, - 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, - 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, - 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, - 100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100, - 228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, - 228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, - 228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, - 228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228, - 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, - 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, - 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, - 36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36, - 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, - 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, - 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, - 164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164, - 92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92, - 92,92,92,92,92,92,92,92,92,92,92,92,92,92,92,92, - 220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, - 220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220, - 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, - 28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28, - 156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, - 156,156,156,156,156,156,156,156,156,156,156,156,156,156,156,156, - 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, - 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124, - 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252, - 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252, - 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, - 60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60, - 188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, - 188,188,188,188,188,188,188,188,188,188,188,188,188,188,188,188, - 76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, - 76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76, - 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, - 204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, - 140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140, - 140,140,140,140,140,140,140,140,140,140,140,140,140,140,140,140, - 108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108, - 108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108, - 236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, - 236,236,236,236,236,236,236,236,236,236,236,236,236,236,236,236, - 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, - 44,44,44,44,44,44,44,44,44,44,44,44,44,44,44,44, - 172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, - 172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172, - 80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80, - 208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208, - 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, - 144,144,144,144,144,144,144,144,144,144,144,144,144,144,144,144, - 112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, - 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240, - 48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48, - 176,176,176,176,176,176,176,176,176,176,176,176,176,176,176,176, - 64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64, - 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96, - 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, - 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, - 160,160,160,160,160,160,160,160,160,160,160,160,160,160,160,160, - 88,88,88,88,88,88,88,88,216,216,216,216,216,216,216,216, - 24,24,24,24,24,24,24,24,152,152,152,152,152,152,152,152, - 120,120,120,120,120,120,120,120,248,248,248,248,248,248,248,248, - 56,56,56,56,56,56,56,56,184,184,184,184,184,184,184,184, - 72,72,72,72,72,72,72,72,200,200,200,200,200,200,200,200, - 8,8,8,8,8,8,8,8,136,136,136,136,136,136,136,136, - 104,104,104,104,104,104,104,104,232,232,232,232,232,232,232,232, - 40,40,40,40,40,40,40,40,168,168,168,168,168,168,168,168, - 86,86,86,86,214,214,214,214,22,22,22,22,150,150,150,150, - 118,118,118,118,246,246,246,246,54,54,54,54,182,182,182,182, - 70,70,70,70,198,198,198,198,6,6,6,6,134,134,134,134, - 102,102,102,102,230,230,230,230,38,38,38,38,166,166,166,166, - 94,94,222,222,30,30,158,158,126,126,254,254,62,62,190,190, - 78,78,206,206,14,14,142,142,110,110,238,238,46,46,174,174, - 82,210,18,146,114,242,50,178,66,194,2,130,98,226,34,162, - 90,218,26,154,122,250,58,186,74,202,10,138,106,234,42,170, - 171,43,235,107,139,11,203,75,187,59,251,123,155,27,219,91, - 163,35,227,99,131,3,195,67,179,51,243,115,147,19,211,83, - 175,175,47,47,239,239,111,111,143,143,15,15,207,207,79,79, - 191,191,63,63,255,255,127,127,159,159,31,31,223,223,95,95, - 167,167,167,167,39,39,39,39,231,231,231,231,103,103,103,103, - 135,135,135,135,7,7,7,7,199,199,199,199,71,71,71,71, - 183,183,183,183,55,55,55,55,247,247,247,247,119,119,119,119, - 151,151,151,151,23,23,23,23,215,215,215,215,87,87,87,87, - 169,169,169,169,169,169,169,169,41,41,41,41,41,41,41,41, - 233,233,233,233,233,233,233,233,105,105,105,105,105,105,105,105, - 137,137,137,137,137,137,137,137,9,9,9,9,9,9,9,9, - 201,201,201,201,201,201,201,201,73,73,73,73,73,73,73,73, - 185,185,185,185,185,185,185,185,57,57,57,57,57,57,57,57, - 249,249,249,249,249,249,249,249,121,121,121,121,121,121,121,121, - 153,153,153,153,153,153,153,153,25,25,25,25,25,25,25,25, - 217,217,217,217,217,217,217,217,89,89,89,89,89,89,89,89, - 161,161,161,161,161,161,161,161,161,161,161,161,161,161,161,161, - 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, - 225,225,225,225,225,225,225,225,225,225,225,225,225,225,225,225, - 97,97,97,97,97,97,97,97,97,97,97,97,97,97,97,97, - 129,129,129,129,129,129,129,129,129,129,129,129,129,129,129,129, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193, - 65,65,65,65,65,65,65,65,65,65,65,65,65,65,65,65, - 177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, - 49,49,49,49,49,49,49,49,49,49,49,49,49,49,49,49, - 241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241, - 113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113, - 145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145, - 17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17, - 209,209,209,209,209,209,209,209,209,209,209,209,209,209,209,209, - 81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, - 173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173, - 173,173,173,173,173,173,173,173,173,173,173,173,173,173,173,173, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45, - 237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237, - 237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237, - 109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, - 109,109,109,109,109,109,109,109,109,109,109,109,109,109,109,109, - 141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, - 141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, - 205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205, - 205,205,205,205,205,205,205,205,205,205,205,205,205,205,205,205, - 77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77, - 77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77, - 189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189, - 189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, - 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, - 253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253, - 125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, - 125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125, - 157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157, - 157,157,157,157,157,157,157,157,157,157,157,157,157,157,157,157, - 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, - 29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29, - 221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221, - 221,221,221,221,221,221,221,221,221,221,221,221,221,221,221,221, - 93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93, - 93,93,93,93,93,93,93,93,93,93,93,93,93,93,93,93, - 165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, - 165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, - 165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, - 165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165, - 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, - 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, - 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, - 37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37, - 229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, - 229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, - 229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, - 229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229, - 101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, - 101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, - 101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, - 101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101, - 133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, - 133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, - 133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, - 133,133,133,133,133,133,133,133,133,133,133,133,133,133,133,133, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, - 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, - 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, - 197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197, - 69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, - 69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, - 69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, - 69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, - 181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, - 181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, - 181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, - 181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181, - 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, - 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, - 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, - 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53, - 245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, - 245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, - 245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, - 245,245,245,245,245,245,245,245,245,245,245,245,245,245,245,245, - 117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, - 117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, - 117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, - 117,117,117,117,117,117,117,117,117,117,117,117,117,117,117,117, - 149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, - 149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, - 149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, - 149,149,149,149,149,149,149,149,149,149,149,149,149,149,149,149, - 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, - 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, - 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, - 21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21, - 213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, - 213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, - 213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, - 213,213,213,213,213,213,213,213,213,213,213,213,213,213,213,213, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, - 85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85 -}; +#endif