= 0) {
367 | // asciichars++;
368 | } else {
369 | dbchars++;
370 | if ((byte) 0xA1 <= rawtext[i] && rawtext[i] <= (byte) 0xF7 && (byte) 0xA1 <= rawtext[i + 1]
371 | && rawtext[i + 1] <= (byte) 0xFE) {
372 | gbchars++;
373 | totalfreq += 500;
374 | row = rawtext[i] + 256 - 0xA1;
375 | column = rawtext[i + 1] + 256 - 0xA1;
376 | if (GBFreq[row][column] != 0) {
377 | gbfreq += GBFreq[row][column];
378 | } else if (15 <= row && row < 55) {
379 | // In GB high-freq character range
380 | gbfreq += 200;
381 | }
382 | }
383 | i++;
384 | }
385 | }
386 | rangeval = 50 * ((float) gbchars / (float) dbchars);
387 | freqval = 50 * ((float) gbfreq / (float) totalfreq);
388 | return (int) (rangeval + freqval);
389 | }
390 |
391 | /*
392 | * Function: gbk_probability Argument: pointer to byte array Returns : number from 0 to 100 representing probability text in
393 | * array uses GBK encoding
394 | */
395 | int gbk_probability(byte[] rawtext) {
396 | int i, rawtextlen = 0;
397 | int dbchars = 1, gbchars = 1;
398 | long gbfreq = 0, totalfreq = 1;
399 | float rangeval = 0, freqval = 0;
400 | int row, column;
401 | // Stage 1: Check to see if characters fit into acceptable ranges
402 | rawtextlen = rawtext.length;
403 | for (i = 0; i < rawtextlen - 1; i++) {
404 | // System.err.println(rawtext[i]);
405 | if (rawtext[i] >= 0) {
406 | // asciichars++;
407 | } else {
408 | dbchars++;
409 | if ((byte) 0xA1 <= rawtext[i] && rawtext[i] <= (byte) 0xF7 && // Original GB range
410 | (byte) 0xA1 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0xFE) {
411 | gbchars++;
412 | totalfreq += 500;
413 | row = rawtext[i] + 256 - 0xA1;
414 | column = rawtext[i + 1] + 256 - 0xA1;
415 | // System.out.println("original row " + row + " column " + column);
416 | if (GBFreq[row][column] != 0) {
417 | gbfreq += GBFreq[row][column];
418 | } else if (15 <= row && row < 55) {
419 | gbfreq += 200;
420 | }
421 | } else if ((byte) 0x81 <= rawtext[i]
422 | && rawtext[i] <= (byte) 0xFE
423 | && // Extended GB range
424 | (((byte) 0x80 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0xFE) || ((byte) 0x40 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0x7E))) {
425 | gbchars++;
426 | totalfreq += 500;
427 | row = rawtext[i] + 256 - 0x81;
428 | if (0x40 <= rawtext[i + 1] && rawtext[i + 1] <= 0x7E) {
429 | column = rawtext[i + 1] - 0x40;
430 | } else {
431 | column = rawtext[i + 1] + 256 - 0x40;
432 | }
433 | // System.out.println("extended row " + row + " column " + column + " rawtext[i] " + rawtext[i]);
434 | if (GBKFreq[row][column] != 0) {
435 | gbfreq += GBKFreq[row][column];
436 | }
437 | }
438 | i++;
439 | }
440 | }
441 | rangeval = 50 * ((float) gbchars / (float) dbchars);
442 | freqval = 50 * ((float) gbfreq / (float) totalfreq);
443 | // For regular GB files, this would give the same score, so I handicap it slightly
444 | return (int) (rangeval + freqval) - 1;
445 | }
446 |
447 | /*
448 | * Function: gb18030_probability Argument: pointer to byte array Returns : number from 0 to 100 representing probability text
449 | * in array uses GBK encoding
450 | */
451 | int gb18030_probability(byte[] rawtext) {
452 | int i, rawtextlen = 0;
453 | int dbchars = 1, gbchars = 1;
454 | long gbfreq = 0, totalfreq = 1;
455 | float rangeval = 0, freqval = 0;
456 | int row, column;
457 | // Stage 1: Check to see if characters fit into acceptable ranges
458 | rawtextlen = rawtext.length;
459 | for (i = 0; i < rawtextlen - 1; i++) {
460 | // System.err.println(rawtext[i]);
461 | if (rawtext[i] >= 0) {
462 | // asciichars++;
463 | } else {
464 | dbchars++;
465 | if ((byte) 0xA1 <= rawtext[i] && rawtext[i] <= (byte) 0xF7 && // Original GB range
466 | i + 1 < rawtextlen && (byte) 0xA1 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0xFE) {
467 | gbchars++;
468 | totalfreq += 500;
469 | row = rawtext[i] + 256 - 0xA1;
470 | column = rawtext[i + 1] + 256 - 0xA1;
471 | // System.out.println("original row " + row + " column " + column);
472 | if (GBFreq[row][column] != 0) {
473 | gbfreq += GBFreq[row][column];
474 | } else if (15 <= row && row < 55) {
475 | gbfreq += 200;
476 | }
477 | } else if ((byte) 0x81 <= rawtext[i] && rawtext[i] <= (byte) 0xFE
478 | && // Extended GB range
479 | i + 1 < rawtextlen
480 | && (((byte) 0x80 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0xFE) || ((byte) 0x40 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0x7E))) {
481 | gbchars++;
482 | totalfreq += 500;
483 | row = rawtext[i] + 256 - 0x81;
484 | if (0x40 <= rawtext[i + 1] && rawtext[i + 1] <= 0x7E) {
485 | column = rawtext[i + 1] - 0x40;
486 | } else {
487 | column = rawtext[i + 1] + 256 - 0x40;
488 | }
489 | // System.out.println("extended row " + row + " column " + column + " rawtext[i] " + rawtext[i]);
490 | if (GBKFreq[row][column] != 0) {
491 | gbfreq += GBKFreq[row][column];
492 | }
493 | } else if ((byte) 0x81 <= rawtext[i]
494 | && rawtext[i] <= (byte) 0xFE
495 | && // Extended GB range
496 | i + 3 < rawtextlen && (byte) 0x30 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0x39
497 | && (byte) 0x81 <= rawtext[i + 2] && rawtext[i + 2] <= (byte) 0xFE && (byte) 0x30 <= rawtext[i + 3]
498 | && rawtext[i + 3] <= (byte) 0x39) {
499 | gbchars++;
500 | /*
501 | * totalfreq += 500; row = rawtext[i] + 256 - 0x81; if (0x40 <= rawtext[i+1] && rawtext[i+1] <= 0x7E) { column =
502 | * rawtext[i+1] - 0x40; } else { column = rawtext[i+1] + 256 - 0x40; } //System.out.println("extended row " + row + "
503 | * column " + column + " rawtext[i] " + rawtext[i]); if (GBKFreq[row][column] != 0) { gbfreq += GBKFreq[row][column]; }
504 | */
505 | }
506 | i++;
507 | }
508 | }
509 | rangeval = 50 * ((float) gbchars / (float) dbchars);
510 | freqval = 50 * ((float) gbfreq / (float) totalfreq);
511 | // For regular GB files, this would give the same score, so I handicap it slightly
512 | return (int) (rangeval + freqval) - 1;
513 | }
514 |
515 | /*
516 | * Function: hz_probability Argument: byte array Returns : number from 0 to 100 representing probability text in array uses HZ
517 | * encoding
518 | */
519 | int hz_probability(byte[] rawtext) {
520 | int i, rawtextlen;
521 | int hzchars = 0, dbchars = 1;
522 | long hzfreq = 0, totalfreq = 1;
523 | float rangeval = 0, freqval = 0;
524 | int hzstart = 0, hzend = 0;
525 | int row, column;
526 | rawtextlen = rawtext.length;
527 | for (i = 0; i < rawtextlen; i++) {
528 | if (rawtext[i] == '~') {
529 | if (rawtext[i + 1] == '{') {
530 | hzstart++;
531 | i += 2;
532 | while (i < rawtextlen - 1) {
533 | if (rawtext[i] == 0x0A || rawtext[i] == 0x0D) {
534 | break;
535 | } else if (rawtext[i] == '~' && rawtext[i + 1] == '}') {
536 | hzend++;
537 | i++;
538 | break;
539 | } else if ((0x21 <= rawtext[i] && rawtext[i] <= 0x77) && (0x21 <= rawtext[i + 1] && rawtext[i + 1] <= 0x77)) {
540 | hzchars += 2;
541 | row = rawtext[i] - 0x21;
542 | column = rawtext[i + 1] - 0x21;
543 | totalfreq += 500;
544 | if (GBFreq[row][column] != 0) {
545 | hzfreq += GBFreq[row][column];
546 | } else if (15 <= row && row < 55) {
547 | hzfreq += 200;
548 | }
549 | } else if ((0xA1 <= rawtext[i] && rawtext[i] <= 0xF7) && (0xA1 <= rawtext[i + 1] && rawtext[i + 1] <= 0xF7)) {
550 | hzchars += 2;
551 | row = rawtext[i] + 256 - 0xA1;
552 | column = rawtext[i + 1] + 256 - 0xA1;
553 | totalfreq += 500;
554 | if (GBFreq[row][column] != 0) {
555 | hzfreq += GBFreq[row][column];
556 | } else if (15 <= row && row < 55) {
557 | hzfreq += 200;
558 | }
559 | }
560 | dbchars += 2;
561 | i += 2;
562 | }
563 | } else if (rawtext[i + 1] == '}') {
564 | hzend++;
565 | i++;
566 | } else if (rawtext[i + 1] == '~') {
567 | i++;
568 | }
569 | }
570 | }
571 | if (hzstart > 4) {
572 | rangeval = 50;
573 | } else if (hzstart > 1) {
574 | rangeval = 41;
575 | } else if (hzstart > 0) { // Only 39 in case the sequence happened to occur
576 | rangeval = 39; // in otherwise non-Hz text
577 | } else {
578 | rangeval = 0;
579 | }
580 | freqval = 50 * ((float) hzfreq / (float) totalfreq);
581 | return (int) (rangeval + freqval);
582 | }
583 |
584 | /**
585 | * Function: big5_probability Argument: byte array Returns : number from 0 to 100 representing probability text in array uses
586 | * Big5 encoding
587 | */
588 | int big5_probability(byte[] rawtext) {
589 | int i, rawtextlen = 0;
590 | int dbchars = 1, bfchars = 1;
591 | float rangeval = 0, freqval = 0;
592 | long bffreq = 0, totalfreq = 1;
593 | int row, column;
594 | // Check to see if characters fit into acceptable ranges
595 | rawtextlen = rawtext.length;
596 | for (i = 0; i < rawtextlen - 1; i++) {
597 | if (rawtext[i] >= 0) {
598 | // asciichars++;
599 | } else {
600 | dbchars++;
601 | if ((byte) 0xA1 <= rawtext[i]
602 | && rawtext[i] <= (byte) 0xF9
603 | && (((byte) 0x40 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0x7E) || ((byte) 0xA1 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0xFE))) {
604 | bfchars++;
605 | totalfreq += 500;
606 | row = rawtext[i] + 256 - 0xA1;
607 | if (0x40 <= rawtext[i + 1] && rawtext[i + 1] <= 0x7E) {
608 | column = rawtext[i + 1] - 0x40;
609 | } else {
610 | column = rawtext[i + 1] + 256 - 0x61;
611 | }
612 | if (Big5Freq[row][column] != 0) {
613 | bffreq += Big5Freq[row][column];
614 | } else if (3 <= row && row <= 37) {
615 | bffreq += 200;
616 | }
617 | }
618 | i++;
619 | }
620 | }
621 | rangeval = 50 * ((float) bfchars / (float) dbchars);
622 | freqval = 50 * ((float) bffreq / (float) totalfreq);
623 | return (int) (rangeval + freqval);
624 | }
625 |
626 | /*
627 | * Function: big5plus_probability Argument: pointer to unsigned char array Returns : number from 0 to 100 representing
628 | * probability text in array uses Big5+ encoding
629 | */
630 | int big5plus_probability(byte[] rawtext) {
631 | int i, rawtextlen = 0;
632 | int dbchars = 1, bfchars = 1;
633 | long bffreq = 0, totalfreq = 1;
634 | float rangeval = 0, freqval = 0;
635 | int row, column;
636 | // Stage 1: Check to see if characters fit into acceptable ranges
637 | rawtextlen = rawtext.length;
638 | for (i = 0; i < rawtextlen - 1; i++) {
639 | // System.err.println(rawtext[i]);
640 | if (rawtext[i] >= 128) {
641 | // asciichars++;
642 | } else {
643 | dbchars++;
644 | if (0xA1 <= rawtext[i] && rawtext[i] <= 0xF9 && // Original Big5 range
645 | ((0x40 <= rawtext[i + 1] && rawtext[i + 1] <= 0x7E) || (0xA1 <= rawtext[i + 1] && rawtext[i + 1] <= 0xFE))) {
646 | bfchars++;
647 | totalfreq += 500;
648 | row = rawtext[i] - 0xA1;
649 | if (0x40 <= rawtext[i + 1] && rawtext[i + 1] <= 0x7E) {
650 | column = rawtext[i + 1] - 0x40;
651 | } else {
652 | column = rawtext[i + 1] - 0x61;
653 | }
654 | // System.out.println("original row " + row + " column " + column);
655 | if (Big5Freq[row][column] != 0) {
656 | bffreq += Big5Freq[row][column];
657 | } else if (3 <= row && row < 37) {
658 | bffreq += 200;
659 | }
660 | } else if (0x81 <= rawtext[i] && rawtext[i] <= 0xFE && // Extended Big5 range
661 | ((0x40 <= rawtext[i + 1] && rawtext[i + 1] <= 0x7E) || (0x80 <= rawtext[i + 1] && rawtext[i + 1] <= 0xFE))) {
662 | bfchars++;
663 | totalfreq += 500;
664 | row = rawtext[i] - 0x81;
665 | if (0x40 <= rawtext[i + 1] && rawtext[i + 1] <= 0x7E) {
666 | column = rawtext[i + 1] - 0x40;
667 | } else {
668 | column = rawtext[i + 1] - 0x40;
669 | }
670 | // System.out.println("extended row " + row + " column " + column + " rawtext[i] " + rawtext[i]);
671 | if (Big5PFreq[row][column] != 0) {
672 | bffreq += Big5PFreq[row][column];
673 | }
674 | }
675 | i++;
676 | }
677 | }
678 | rangeval = 50 * ((float) bfchars / (float) dbchars);
679 | freqval = 50 * ((float) bffreq / (float) totalfreq);
680 | // For regular Big5 files, this would give the same score, so I handicap it slightly
681 | return (int) (rangeval + freqval) - 1;
682 | }
683 |
684 | /*
685 | * Function: euc_tw_probability Argument: byte array Returns : number from 0 to 100 representing probability text in array
686 | * uses EUC-TW (CNS 11643) encoding
687 | */
688 | int euc_tw_probability(byte[] rawtext) {
689 | int i, rawtextlen = 0;
690 | int dbchars = 1, cnschars = 1;
691 | long cnsfreq = 0, totalfreq = 1;
692 | float rangeval = 0, freqval = 0;
693 | int row, column;
694 | // Check to see if characters fit into acceptable ranges
695 | // and have expected frequency of use
696 | rawtextlen = rawtext.length;
697 | for (i = 0; i < rawtextlen - 1; i++) {
698 | if (rawtext[i] >= 0) { // in ASCII range
699 | // asciichars++;
700 | } else { // high bit set
701 | dbchars++;
702 | if (i + 3 < rawtextlen && (byte) 0x8E == rawtext[i] && (byte) 0xA1 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0xB0
703 | && (byte) 0xA1 <= rawtext[i + 2] && rawtext[i + 2] <= (byte) 0xFE && (byte) 0xA1 <= rawtext[i + 3]
704 | && rawtext[i + 3] <= (byte) 0xFE) { // Planes 1 - 16
705 | cnschars++;
706 | // System.out.println("plane 2 or above CNS char");
707 | // These are all less frequent chars so just ignore freq
708 | i += 3;
709 | } else if ((byte) 0xA1 <= rawtext[i] && rawtext[i] <= (byte) 0xFE && // Plane 1
710 | (byte) 0xA1 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0xFE) {
711 | cnschars++;
712 | totalfreq += 500;
713 | row = rawtext[i] + 256 - 0xA1;
714 | column = rawtext[i + 1] + 256 - 0xA1;
715 | if (EUC_TWFreq[row][column] != 0) {
716 | cnsfreq += EUC_TWFreq[row][column];
717 | } else if (35 <= row && row <= 92) {
718 | cnsfreq += 150;
719 | }
720 | i++;
721 | }
722 | }
723 | }
724 | rangeval = 50 * ((float) cnschars / (float) dbchars);
725 | freqval = 50 * ((float) cnsfreq / (float) totalfreq);
726 | return (int) (rangeval + freqval);
727 | }
728 |
729 | /*
730 | * Function: iso_2022_cn_probability Argument: byte array Returns : number from 0 to 100 representing probability text in
731 | * array uses ISO 2022-CN encoding WORKS FOR BASIC CASES, BUT STILL NEEDS MORE WORK
732 | */
733 | int iso_2022_cn_probability(byte[] rawtext) {
734 | int i, rawtextlen = 0;
735 | int dbchars = 1, isochars = 1;
736 | long isofreq = 0, totalfreq = 1;
737 | float rangeval = 0, freqval = 0;
738 | int row, column;
739 | // Check to see if characters fit into acceptable ranges
740 | // and have expected frequency of use
741 | rawtextlen = rawtext.length;
742 | for (i = 0; i < rawtextlen - 1; i++) {
743 | if (rawtext[i] == (byte) 0x1B && i + 3 < rawtextlen) { // Escape char ESC
744 | if (rawtext[i + 1] == (byte) 0x24 && rawtext[i + 2] == 0x29 && rawtext[i + 3] == (byte) 0x41) { // GB Escape $ ) A
745 | i += 4;
746 | while (rawtext[i] != (byte) 0x1B) {
747 | dbchars++;
748 | if ((0x21 <= rawtext[i] && rawtext[i] <= 0x77) && (0x21 <= rawtext[i + 1] && rawtext[i + 1] <= 0x77)) {
749 | isochars++;
750 | row = rawtext[i] - 0x21;
751 | column = rawtext[i + 1] - 0x21;
752 | totalfreq += 500;
753 | if (GBFreq[row][column] != 0) {
754 | isofreq += GBFreq[row][column];
755 | } else if (15 <= row && row < 55) {
756 | isofreq += 200;
757 | }
758 | i++;
759 | }
760 | i++;
761 | }
762 | } else if (i + 3 < rawtextlen && rawtext[i + 1] == (byte) 0x24 && rawtext[i + 2] == (byte) 0x29
763 | && rawtext[i + 3] == (byte) 0x47) {
764 | // CNS Escape $ ) G
765 | i += 4;
766 | while (rawtext[i] != (byte) 0x1B) {
767 | dbchars++;
768 | if ((byte) 0x21 <= rawtext[i] && rawtext[i] <= (byte) 0x7E && (byte) 0x21 <= rawtext[i + 1]
769 | && rawtext[i + 1] <= (byte) 0x7E) {
770 | isochars++;
771 | totalfreq += 500;
772 | row = rawtext[i] - 0x21;
773 | column = rawtext[i + 1] - 0x21;
774 | if (EUC_TWFreq[row][column] != 0) {
775 | isofreq += EUC_TWFreq[row][column];
776 | } else if (35 <= row && row <= 92) {
777 | isofreq += 150;
778 | }
779 | i++;
780 | }
781 | i++;
782 | }
783 | }
784 | if (rawtext[i] == (byte) 0x1B && i + 2 < rawtextlen && rawtext[i + 1] == (byte) 0x28 && rawtext[i + 2] == (byte) 0x42) { // ASCII:
785 | // ESC
786 | // ( B
787 | i += 2;
788 | }
789 | }
790 | }
791 | rangeval = 50 * ((float) isochars / (float) dbchars);
792 | freqval = 50 * ((float) isofreq / (float) totalfreq);
793 | // System.out.println("isochars dbchars isofreq totalfreq " + isochars + " " + dbchars + " " + isofreq + " " + totalfreq + "
794 | // " + rangeval + " " + freqval);
795 | return (int) (rangeval + freqval);
796 | // return 0;
797 | }
798 |
799 | /*
800 | * Function: utf8_probability Argument: byte array Returns : number from 0 to 100 representing probability text in array uses
801 | * UTF-8 encoding of Unicode
802 | */
803 | int utf8_probability(byte[] rawtext) {
804 | int score = 0;
805 | int i, rawtextlen = 0;
806 | int goodbytes = 0, asciibytes = 0;
807 | // Maybe also use UTF8 Byte Order Mark: EF BB BF
808 | // Check to see if characters fit into acceptable ranges
809 | rawtextlen = rawtext.length;
810 | for (i = 0; i < rawtextlen; i++) {
811 | if ((rawtext[i] & (byte) 0x7F) == rawtext[i]) { // One byte
812 | asciibytes++;
813 | // Ignore ASCII, can throw off count
814 | } else if (-64 <= rawtext[i] && rawtext[i] <= -33 && // Two bytes
815 | i + 1 < rawtextlen && -128 <= rawtext[i + 1] && rawtext[i + 1] <= -65) {
816 | goodbytes += 2;
817 | i++;
818 | } else if (-32 <= rawtext[i] && rawtext[i] <= -17
819 | && // Three bytes
820 | i + 2 < rawtextlen && -128 <= rawtext[i + 1] && rawtext[i + 1] <= -65 && -128 <= rawtext[i + 2]
821 | && rawtext[i + 2] <= -65) {
822 | goodbytes += 3;
823 | i += 2;
824 | }
825 | }
826 | if (asciibytes == rawtextlen) {
827 | return 0;
828 | }
829 | score = (int) (100 * ((float) goodbytes / (float) (rawtextlen - asciibytes)));
830 | // System.out.println("rawtextlen " + rawtextlen + " goodbytes " + goodbytes + " asciibytes " + asciibytes + " score " +
831 | // score);
832 | // If not above 98, reduce to zero to prevent coincidental matches
833 | // Allows for some (few) bad formed sequences
834 | if (score > 98) {
835 | return score;
836 | } else if (score > 95 && goodbytes > 30) {
837 | return score;
838 | } else {
839 | return 0;
840 | }
841 | }
842 |
843 | /*
844 | * Function: utf16_probability Argument: byte array Returns : number from 0 to 100 representing probability text in array uses
845 | * UTF-16 encoding of Unicode, guess based on BOM // NOT VERY GENERAL, NEEDS MUCH MORE WORK
846 | */
847 | int utf16_probability(byte[] rawtext) {
848 | // int score = 0;
849 | // int i, rawtextlen = 0;
850 | // int goodbytes = 0, asciibytes = 0;
851 | if (rawtext.length > 1 && ((byte) 0xFE == rawtext[0] && (byte) 0xFF == rawtext[1]) || // Big-endian
852 | ((byte) 0xFF == rawtext[0] && (byte) 0xFE == rawtext[1])) { // Little-endian
853 | return 100;
854 | }
855 | return 0;
856 | /*
857 | * // Check to see if characters fit into acceptable ranges rawtextlen = rawtext.length; for (i = 0; i < rawtextlen; i++) {
858 | * if ((rawtext[i] & (byte)0x7F) == rawtext[i]) { // One byte goodbytes += 1; asciibytes++; } else if ((rawtext[i] &
859 | * (byte)0xDF) == rawtext[i]) { // Two bytes if (i+1 < rawtextlen && (rawtext[i+1] & (byte)0xBF) == rawtext[i+1]) {
860 | * goodbytes += 2; i++; } } else if ((rawtext[i] & (byte)0xEF) == rawtext[i]) { // Three bytes if (i+2 < rawtextlen &&
861 | * (rawtext[i+1] & (byte)0xBF) == rawtext[i+1] && (rawtext[i+2] & (byte)0xBF) == rawtext[i+2]) { goodbytes += 3; i+=2; } } }
862 | *
863 | * score = (int)(100 * ((float)goodbytes/(float)rawtext.length)); // An all ASCII file is also a good UTF8 file, but I'd
864 | * rather it // get identified as ASCII. Can delete following 3 lines otherwise if (goodbytes == asciibytes) { score = 0; } //
865 | * If not above 90, reduce to zero to prevent coincidental matches if (score > 90) { return score; } else { return 0; }
866 | */
867 | }
868 |
869 | /*
870 | * Function: ascii_probability Argument: byte array Returns : number from 0 to 100 representing probability text in array uses
871 | * all ASCII Description: Sees if array has any characters not in ASCII range, if so, score is reduced
872 | */
873 | int ascii_probability(byte[] rawtext) {
874 | int score = 75;
875 | int i, rawtextlen;
876 | rawtextlen = rawtext.length;
877 | for (i = 0; i < rawtextlen; i++) {
878 | if (rawtext[i] < 0) {
879 | score = score - 5;
880 | } else if (rawtext[i] == (byte) 0x1B) { // ESC (used by ISO 2022)
881 | score = score - 5;
882 | }
883 | if (score <= 0) {
884 | return 0;
885 | }
886 | }
887 | return score;
888 | }
889 |
890 | /*
891 | * Function: euc_kr__probability Argument: pointer to byte array Returns : number from 0 to 100 representing probability text
892 | * in array uses EUC-KR encoding
893 | */
894 | int euc_kr_probability(byte[] rawtext) {
895 | int i, rawtextlen = 0;
896 | int dbchars = 1, krchars = 1;
897 | long krfreq = 0, totalfreq = 1;
898 | float rangeval = 0, freqval = 0;
899 | int row, column;
900 | // Stage 1: Check to see if characters fit into acceptable ranges
901 | rawtextlen = rawtext.length;
902 | for (i = 0; i < rawtextlen - 1; i++) {
903 | // System.err.println(rawtext[i]);
904 | if (rawtext[i] >= 0) {
905 | // asciichars++;
906 | } else {
907 | dbchars++;
908 | if ((byte) 0xA1 <= rawtext[i] && rawtext[i] <= (byte) 0xFE && (byte) 0xA1 <= rawtext[i + 1]
909 | && rawtext[i + 1] <= (byte) 0xFE) {
910 | krchars++;
911 | totalfreq += 500;
912 | row = rawtext[i] + 256 - 0xA1;
913 | column = rawtext[i + 1] + 256 - 0xA1;
914 | if (KRFreq[row][column] != 0) {
915 | krfreq += KRFreq[row][column];
916 | } else if (15 <= row && row < 55) {
917 | krfreq += 0;
918 | }
919 | }
920 | i++;
921 | }
922 | }
923 | rangeval = 50 * ((float) krchars / (float) dbchars);
924 | freqval = 50 * ((float) krfreq / (float) totalfreq);
925 | return (int) (rangeval + freqval);
926 | }
927 |
928 | /*
929 | * Function: cp949__probability Argument: pointer to byte array Returns : number from 0 to 100 representing probability text
930 | * in array uses Cp949 encoding
931 | */
932 | int cp949_probability(byte[] rawtext) {
933 | int i, rawtextlen = 0;
934 | int dbchars = 1, krchars = 1;
935 | long krfreq = 0, totalfreq = 1;
936 | float rangeval = 0, freqval = 0;
937 | int row, column;
938 | // Stage 1: Check to see if characters fit into acceptable ranges
939 | rawtextlen = rawtext.length;
940 | for (i = 0; i < rawtextlen - 1; i++) {
941 | // System.err.println(rawtext[i]);
942 | if (rawtext[i] >= 0) {
943 | // asciichars++;
944 | } else {
945 | dbchars++;
946 | if ((byte) 0x81 <= rawtext[i]
947 | && rawtext[i] <= (byte) 0xFE
948 | && ((byte) 0x41 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0x5A || (byte) 0x61 <= rawtext[i + 1]
949 | && rawtext[i + 1] <= (byte) 0x7A || (byte) 0x81 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0xFE)) {
950 | krchars++;
951 | totalfreq += 500;
952 | if ((byte) 0xA1 <= rawtext[i] && rawtext[i] <= (byte) 0xFE && (byte) 0xA1 <= rawtext[i + 1]
953 | && rawtext[i + 1] <= (byte) 0xFE) {
954 | row = rawtext[i] + 256 - 0xA1;
955 | column = rawtext[i + 1] + 256 - 0xA1;
956 | if (KRFreq[row][column] != 0) {
957 | krfreq += KRFreq[row][column];
958 | }
959 | }
960 | }
961 | i++;
962 | }
963 | }
964 | rangeval = 50 * ((float) krchars / (float) dbchars);
965 | freqval = 50 * ((float) krfreq / (float) totalfreq);
966 | return (int) (rangeval + freqval);
967 | }
968 |
969 | int iso_2022_kr_probability(byte[] rawtext) {
970 | int i;
971 | for (i = 0; i < rawtext.length; i++) {
972 | if (i + 3 < rawtext.length && rawtext[i] == 0x1b && (char) rawtext[i + 1] == '$' && (char) rawtext[i + 2] == ')'
973 | && (char) rawtext[i + 3] == 'C') {
974 | return 100;
975 | }
976 | }
977 | return 0;
978 | }
979 |
980 | /*
981 | * Function: euc_jp_probability Argument: pointer to byte array Returns : number from 0 to 100 representing probability text
982 | * in array uses EUC-JP encoding
983 | */
984 | int euc_jp_probability(byte[] rawtext) {
985 | int i, rawtextlen = 0;
986 | int dbchars = 1, jpchars = 1;
987 | long jpfreq = 0, totalfreq = 1;
988 | float rangeval = 0, freqval = 0;
989 | int row, column;
990 | // Stage 1: Check to see if characters fit into acceptable ranges
991 | rawtextlen = rawtext.length;
992 | for (i = 0; i < rawtextlen - 1; i++) {
993 | // System.err.println(rawtext[i]);
994 | if (rawtext[i] >= 0) {
995 | // asciichars++;
996 | } else {
997 | dbchars++;
998 | if ((byte) 0xA1 <= rawtext[i] && rawtext[i] <= (byte) 0xFE && (byte) 0xA1 <= rawtext[i + 1]
999 | && rawtext[i + 1] <= (byte) 0xFE) {
1000 | jpchars++;
1001 | totalfreq += 500;
1002 | row = rawtext[i] + 256 - 0xA1;
1003 | column = rawtext[i + 1] + 256 - 0xA1;
1004 | if (JPFreq[row][column] != 0) {
1005 | jpfreq += JPFreq[row][column];
1006 | } else if (15 <= row && row < 55) {
1007 | jpfreq += 0;
1008 | }
1009 | }
1010 | i++;
1011 | }
1012 | }
1013 | rangeval = 50 * ((float) jpchars / (float) dbchars);
1014 | freqval = 50 * ((float) jpfreq / (float) totalfreq);
1015 | return (int) (rangeval + freqval);
1016 | }
1017 |
1018 | int iso_2022_jp_probability(byte[] rawtext) {
1019 | int i;
1020 | for (i = 0; i < rawtext.length; i++) {
1021 | if (i + 2 < rawtext.length && rawtext[i] == 0x1b && (char) rawtext[i + 1] == '$' && (char) rawtext[i + 2] == 'B') {
1022 | return 100;
1023 | }
1024 | }
1025 | return 0;
1026 | }
1027 |
1028 | /*
1029 | * Function: sjis_probability Argument: pointer to byte array Returns : number from 0 to 100 representing probability text in
1030 | * array uses Shift-JIS encoding
1031 | */
1032 | int sjis_probability(byte[] rawtext) {
1033 | int i, rawtextlen = 0;
1034 | int dbchars = 1, jpchars = 1;
1035 | long jpfreq = 0, totalfreq = 1;
1036 | float rangeval = 0, freqval = 0;
1037 | int row, column, adjust;
1038 | // Stage 1: Check to see if characters fit into acceptable ranges
1039 | rawtextlen = rawtext.length;
1040 | for (i = 0; i < rawtextlen - 1; i++) {
1041 | // System.err.println(rawtext[i]);
1042 | if (rawtext[i] >= 0) {
1043 | // asciichars++;
1044 | } else {
1045 | dbchars++;
1046 | if (i + 1 < rawtext.length
1047 | && (((byte) 0x81 <= rawtext[i] && rawtext[i] <= (byte) 0x9F) || ((byte) 0xE0 <= rawtext[i] && rawtext[i] <= (byte) 0xEF))
1048 | && (((byte) 0x40 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0x7E) || ((byte) 0x80 <= rawtext[i + 1] && rawtext[i + 1] <= (byte) 0xFC))) {
1049 | jpchars++;
1050 | totalfreq += 500;
1051 | row = rawtext[i] + 256;
1052 | column = rawtext[i + 1] + 256;
1053 | if (column < 0x9f) {
1054 | adjust = 1;
1055 | if (column > 0x7f) {
1056 | column -= 0x20;
1057 | } else {
1058 | column -= 0x19;
1059 | }
1060 | } else {
1061 | adjust = 0;
1062 | column -= 0x7e;
1063 | }
1064 | if (row < 0xa0) {
1065 | row = ((row - 0x70) << 1) - adjust;
1066 | } else {
1067 | row = ((row - 0xb0) << 1) - adjust;
1068 | }
1069 | row -= 0x20;
1070 | column = 0x20;
1071 | // System.out.println("original row " + row + " column " + column);
1072 | if (row < JPFreq.length && column < JPFreq[row].length && JPFreq[row][column] != 0) {
1073 | jpfreq += JPFreq[row][column];
1074 | }
1075 | i++;
1076 | } else if ((byte) 0xA1 <= rawtext[i] && rawtext[i] <= (byte) 0xDF) {
1077 | // half-width katakana, convert to full-width
1078 | }
1079 | }
1080 | }
1081 | rangeval = 50 * ((float) jpchars / (float) dbchars);
1082 | freqval = 50 * ((float) jpfreq / (float) totalfreq);
1083 | // For regular GB files, this would give the same score, so I handicap it slightly
1084 | return (int) (rangeval + freqval) - 1;
1085 | }
1086 |
1087 | void initialize_frequencies() {
1088 | int i, j;
1089 | for (i = 0; i < 94; i++) {
1090 | for (j = 0; j < 94; j++) {
1091 | GBFreq[i][j] = 0;
1092 | }
1093 | }
1094 | for (i = 0; i < 126; i++) {
1095 | for (j = 0; j < 191; j++) {
1096 | GBKFreq[i][j] = 0;
1097 | }
1098 | }
1099 | for (i = 0; i < 94; i++) {
1100 | for (j = 0; j < 158; j++) {
1101 | Big5Freq[i][j] = 0;
1102 | }
1103 | }
1104 | for (i = 0; i < 126; i++) {
1105 | for (j = 0; j < 191; j++) {
1106 | Big5PFreq[i][j] = 0;
1107 | }
1108 | }
1109 | for (i = 0; i < 94; i++) {
1110 | for (j = 0; j < 94; j++) {
1111 | EUC_TWFreq[i][j] = 0;
1112 | }
1113 | }
1114 | for (i = 0; i < 94; i++) {
1115 | for (j = 0; j < 94; j++) {
1116 | JPFreq[i][j] = 0;
1117 | }
1118 | }
1119 | GBFreq[20][35] = 599;
1120 | GBFreq[49][26] = 598;
1121 | GBFreq[41][38] = 597;
1122 | GBFreq[17][26] = 596;
1123 | GBFreq[32][42] = 595;
1124 | GBFreq[39][42] = 594;
1125 | GBFreq[45][49] = 593;
1126 | GBFreq[51][57] = 592;
1127 | GBFreq[50][47] = 591;
1128 | GBFreq[42][90] = 590;
1129 | GBFreq[52][65] = 589;
1130 | GBFreq[53][47] = 588;
1131 | GBFreq[19][82] = 587;
1132 | GBFreq[31][19] = 586;
1133 | GBFreq[40][46] = 585;
1134 | GBFreq[24][89] = 584;
1135 | GBFreq[23][85] = 583;
1136 | GBFreq[20][28] = 582;
1137 | GBFreq[42][20] = 581;
1138 | GBFreq[34][38] = 580;
1139 | GBFreq[45][9] = 579;
1140 | GBFreq[54][50] = 578;
1141 | GBFreq[25][44] = 577;
1142 | GBFreq[35][66] = 576;
1143 | GBFreq[20][55] = 575;
1144 | GBFreq[18][85] = 574;
1145 | GBFreq[20][31] = 573;
1146 | GBFreq[49][17] = 572;
1147 | GBFreq[41][16] = 571;
1148 | GBFreq[35][73] = 570;
1149 | GBFreq[20][34] = 569;
1150 | GBFreq[29][44] = 568;
1151 | GBFreq[35][38] = 567;
1152 | GBFreq[49][9] = 566;
1153 | GBFreq[46][33] = 565;
1154 | GBFreq[49][51] = 564;
1155 | GBFreq[40][89] = 563;
1156 | GBFreq[26][64] = 562;
1157 | GBFreq[54][51] = 561;
1158 | GBFreq[54][36] = 560;
1159 | GBFreq[39][4] = 559;
1160 | GBFreq[53][13] = 558;
1161 | GBFreq[24][92] = 557;
1162 | GBFreq[27][49] = 556;
1163 | GBFreq[48][6] = 555;
1164 | GBFreq[21][51] = 554;
1165 | GBFreq[30][40] = 553;
1166 | GBFreq[42][92] = 552;
1167 | GBFreq[31][78] = 551;
1168 | GBFreq[25][82] = 550;
1169 | GBFreq[47][0] = 549;
1170 | GBFreq[34][19] = 548;
1171 | GBFreq[47][35] = 547;
1172 | GBFreq[21][63] = 546;
1173 | GBFreq[43][75] = 545;
1174 | GBFreq[21][87] = 544;
1175 | GBFreq[35][59] = 543;
1176 | GBFreq[25][34] = 542;
1177 | GBFreq[21][27] = 541;
1178 | GBFreq[39][26] = 540;
1179 | GBFreq[34][26] = 539;
1180 | GBFreq[39][52] = 538;
1181 | GBFreq[50][57] = 537;
1182 | GBFreq[37][79] = 536;
1183 | GBFreq[26][24] = 535;
1184 | GBFreq[22][1] = 534;
1185 | GBFreq[18][40] = 533;
1186 | GBFreq[41][33] = 532;
1187 | GBFreq[53][26] = 531;
1188 | GBFreq[54][86] = 530;
1189 | GBFreq[20][16] = 529;
1190 | GBFreq[46][74] = 528;
1191 | GBFreq[30][19] = 527;
1192 | GBFreq[45][35] = 526;
1193 | GBFreq[45][61] = 525;
1194 | GBFreq[30][9] = 524;
1195 | GBFreq[41][53] = 523;
1196 | GBFreq[41][13] = 522;
1197 | GBFreq[50][34] = 521;
1198 | GBFreq[53][86] = 520;
1199 | GBFreq[47][47] = 519;
1200 | GBFreq[22][28] = 518;
1201 | GBFreq[50][53] = 517;
1202 | GBFreq[39][70] = 516;
1203 | GBFreq[38][15] = 515;
1204 | GBFreq[42][88] = 514;
1205 | GBFreq[16][29] = 513;
1206 | GBFreq[27][90] = 512;
1207 | GBFreq[29][12] = 511;
1208 | GBFreq[44][22] = 510;
1209 | GBFreq[34][69] = 509;
1210 | GBFreq[24][10] = 508;
1211 | GBFreq[44][11] = 507;
1212 | GBFreq[39][92] = 506;
1213 | GBFreq[49][48] = 505;
1214 | GBFreq[31][46] = 504;
1215 | GBFreq[19][50] = 503;
1216 | GBFreq[21][14] = 502;
1217 | GBFreq[32][28] = 501;
1218 | GBFreq[18][3] = 500;
1219 | GBFreq[53][9] = 499;
1220 | GBFreq[34][80] = 498;
1221 | GBFreq[48][88] = 497;
1222 | GBFreq[46][53] = 496;
1223 | GBFreq[22][53] = 495;
1224 | GBFreq[28][10] = 494;
1225 | GBFreq[44][65] = 493;
1226 | GBFreq[20][10] = 492;
1227 | GBFreq[40][76] = 491;
1228 | GBFreq[47][8] = 490;
1229 | GBFreq[50][74] = 489;
1230 | GBFreq[23][62] = 488;
1231 | GBFreq[49][65] = 487;
1232 | GBFreq[28][87] = 486;
1233 | GBFreq[15][48] = 485;
1234 | GBFreq[22][7] = 484;
1235 | GBFreq[19][42] = 483;
1236 | GBFreq[41][20] = 482;
1237 | GBFreq[26][55] = 481;
1238 | GBFreq[21][93] = 480;
1239 | GBFreq[31][76] = 479;
1240 | GBFreq[34][31] = 478;
1241 | GBFreq[20][66] = 477;
1242 | GBFreq[51][33] = 476;
1243 | GBFreq[34][86] = 475;
1244 | GBFreq[37][67] = 474;
1245 | GBFreq[53][53] = 473;
1246 | GBFreq[40][88] = 472;
1247 | GBFreq[39][10] = 471;
1248 | GBFreq[24][3] = 470;
1249 | GBFreq[27][25] = 469;
1250 | GBFreq[26][15] = 468;
1251 | GBFreq[21][88] = 467;
1252 | GBFreq[52][62] = 466;
1253 | GBFreq[46][81] = 465;
1254 | GBFreq[38][72] = 464;
1255 | GBFreq[17][30] = 463;
1256 | GBFreq[52][92] = 462;
1257 | GBFreq[34][90] = 461;
1258 | GBFreq[21][7] = 460;
1259 | GBFreq[36][13] = 459;
1260 | GBFreq[45][41] = 458;
1261 | GBFreq[32][5] = 457;
1262 | GBFreq[26][89] = 456;
1263 | GBFreq[23][87] = 455;
1264 | GBFreq[20][39] = 454;
1265 | GBFreq[27][23] = 453;
1266 | GBFreq[25][59] = 452;
1267 | GBFreq[49][20] = 451;
1268 | GBFreq[54][77] = 450;
1269 | GBFreq[27][67] = 449;
1270 | GBFreq[47][33] = 448;
1271 | GBFreq[41][17] = 447;
1272 | GBFreq[19][81] = 446;
1273 | GBFreq[16][66] = 445;
1274 | GBFreq[45][26] = 444;
1275 | GBFreq[49][81] = 443;
1276 | GBFreq[53][55] = 442;
1277 | GBFreq[16][26] = 441;
1278 | GBFreq[54][62] = 440;
1279 | GBFreq[20][70] = 439;
1280 | GBFreq[42][35] = 438;
1281 | GBFreq[20][57] = 437;
1282 | GBFreq[34][36] = 436;
1283 | GBFreq[46][63] = 435;
1284 | GBFreq[19][45] = 434;
1285 | GBFreq[21][10] = 433;
1286 | GBFreq[52][93] = 432;
1287 | GBFreq[25][2] = 431;
1288 | GBFreq[30][57] = 430;
1289 | GBFreq[41][24] = 429;
1290 | GBFreq[28][43] = 428;
1291 | GBFreq[45][86] = 427;
1292 | GBFreq[51][56] = 426;
1293 | GBFreq[37][28] = 425;
1294 | GBFreq[52][69] = 424;
1295 | GBFreq[43][92] = 423;
1296 | GBFreq[41][31] = 422;
1297 | GBFreq[37][87] = 421;
1298 | GBFreq[47][36] = 420;
1299 | GBFreq[16][16] = 419;
1300 | GBFreq[40][56] = 418;
1301 | GBFreq[24][55] = 417;
1302 | GBFreq[17][1] = 416;
1303 | GBFreq[35][57] = 415;
1304 | GBFreq[27][50] = 414;
1305 | GBFreq[26][14] = 413;
1306 | GBFreq[50][40] = 412;
1307 | GBFreq[39][19] = 411;
1308 | GBFreq[19][89] = 410;
1309 | GBFreq[29][91] = 409;
1310 | GBFreq[17][89] = 408;
1311 | GBFreq[39][74] = 407;
1312 | GBFreq[46][39] = 406;
1313 | GBFreq[40][28] = 405;
1314 | GBFreq[45][68] = 404;
1315 | GBFreq[43][10] = 403;
1316 | GBFreq[42][13] = 402;
1317 | GBFreq[44][81] = 401;
1318 | GBFreq[41][47] = 400;
1319 | GBFreq[48][58] = 399;
1320 | GBFreq[43][68] = 398;
1321 | GBFreq[16][79] = 397;
1322 | GBFreq[19][5] = 396;
1323 | GBFreq[54][59] = 395;
1324 | GBFreq[17][36] = 394;
1325 | GBFreq[18][0] = 393;
1326 | GBFreq[41][5] = 392;
1327 | GBFreq[41][72] = 391;
1328 | GBFreq[16][39] = 390;
1329 | GBFreq[54][0] = 389;
1330 | GBFreq[51][16] = 388;
1331 | GBFreq[29][36] = 387;
1332 | GBFreq[47][5] = 386;
1333 | GBFreq[47][51] = 385;
1334 | GBFreq[44][7] = 384;
1335 | GBFreq[35][30] = 383;
1336 | GBFreq[26][9] = 382;
1337 | GBFreq[16][7] = 381;
1338 | GBFreq[32][1] = 380;
1339 | GBFreq[33][76] = 379;
1340 | GBFreq[34][91] = 378;
1341 | GBFreq[52][36] = 377;
1342 | GBFreq[26][77] = 376;
1343 | GBFreq[35][48] = 375;
1344 | GBFreq[40][80] = 374;
1345 | GBFreq[41][92] = 373;
1346 | GBFreq[27][93] = 372;
1347 | GBFreq[15][17] = 371;
1348 | GBFreq[16][76] = 370;
1349 | GBFreq[51][12] = 369;
1350 | GBFreq[18][20] = 368;
1351 | GBFreq[15][54] = 367;
1352 | GBFreq[50][5] = 366;
1353 | GBFreq[33][22] = 365;
1354 | GBFreq[37][57] = 364;
1355 | GBFreq[28][47] = 363;
1356 | GBFreq[42][31] = 362;
1357 | GBFreq[18][2] = 361;
1358 | GBFreq[43][64] = 360;
1359 | GBFreq[23][47] = 359;
1360 | GBFreq[28][79] = 358;
1361 | GBFreq[25][45] = 357;
1362 | GBFreq[23][91] = 356;
1363 | GBFreq[22][19] = 355;
1364 | GBFreq[25][46] = 354;
1365 | GBFreq[22][36] = 353;
1366 | GBFreq[54][85] = 352;
1367 | GBFreq[46][20] = 351;
1368 | GBFreq[27][37] = 350;
1369 | GBFreq[26][81] = 349;
1370 | GBFreq[42][29] = 348;
1371 | GBFreq[31][90] = 347;
1372 | GBFreq[41][59] = 346;
1373 | GBFreq[24][65] = 345;
1374 | GBFreq[44][84] = 344;
1375 | GBFreq[24][90] = 343;
1376 | GBFreq[38][54] = 342;
1377 | GBFreq[28][70] = 341;
1378 | GBFreq[27][15] = 340;
1379 | GBFreq[28][80] = 339;
1380 | GBFreq[29][8] = 338;
1381 | GBFreq[45][80] = 337;
1382 | GBFreq[53][37] = 336;
1383 | GBFreq[28][65] = 335;
1384 | GBFreq[23][86] = 334;
1385 | GBFreq[39][45] = 333;
1386 | GBFreq[53][32] = 332;
1387 | GBFreq[38][68] = 331;
1388 | GBFreq[45][78] = 330;
1389 | GBFreq[43][7] = 329;
1390 | GBFreq[46][82] = 328;
1391 | GBFreq[27][38] = 327;
1392 | GBFreq[16][62] = 326;
1393 | GBFreq[24][17] = 325;
1394 | GBFreq[22][70] = 324;
1395 | GBFreq[52][28] = 323;
1396 | GBFreq[23][40] = 322;
1397 | GBFreq[28][50] = 321;
1398 | GBFreq[42][91] = 320;
1399 | GBFreq[47][76] = 319;
1400 | GBFreq[15][42] = 318;
1401 | GBFreq[43][55] = 317;
1402 | GBFreq[29][84] = 316;
1403 | GBFreq[44][90] = 315;
1404 | GBFreq[53][16] = 314;
1405 | GBFreq[22][93] = 313;
1406 | GBFreq[34][10] = 312;
1407 | GBFreq[32][53] = 311;
1408 | GBFreq[43][65] = 310;
1409 | GBFreq[28][7] = 309;
1410 | GBFreq[35][46] = 308;
1411 | GBFreq[21][39] = 307;
1412 | GBFreq[44][18] = 306;
1413 | GBFreq[40][10] = 305;
1414 | GBFreq[54][53] = 304;
1415 | GBFreq[38][74] = 303;
1416 | GBFreq[28][26] = 302;
1417 | GBFreq[15][13] = 301;
1418 | GBFreq[39][34] = 300;
1419 | GBFreq[39][46] = 299;
1420 | GBFreq[42][66] = 298;
1421 | GBFreq[33][58] = 297;
1422 | GBFreq[15][56] = 296;
1423 | GBFreq[18][51] = 295;
1424 | GBFreq[49][68] = 294;
1425 | GBFreq[30][37] = 293;
1426 | GBFreq[51][84] = 292;
1427 | GBFreq[51][9] = 291;
1428 | GBFreq[40][70] = 290;
1429 | GBFreq[41][84] = 289;
1430 | GBFreq[28][64] = 288;
1431 | GBFreq[32][88] = 287;
1432 | GBFreq[24][5] = 286;
1433 | GBFreq[53][23] = 285;
1434 | GBFreq[42][27] = 284;
1435 | GBFreq[22][38] = 283;
1436 | GBFreq[32][86] = 282;
1437 | GBFreq[34][30] = 281;
1438 | GBFreq[38][63] = 280;
1439 | GBFreq[24][59] = 279;
1440 | GBFreq[22][81] = 278;
1441 | GBFreq[32][11] = 277;
1442 | GBFreq[51][21] = 276;
1443 | GBFreq[54][41] = 275;
1444 | GBFreq[21][50] = 274;
1445 | GBFreq[23][89] = 273;
1446 | GBFreq[19][87] = 272;
1447 | GBFreq[26][7] = 271;
1448 | GBFreq[30][75] = 270;
1449 | GBFreq[43][84] = 269;
1450 | GBFreq[51][25] = 268;
1451 | GBFreq[16][67] = 267;
1452 | GBFreq[32][9] = 266;
1453 | GBFreq[48][51] = 265;
1454 | GBFreq[39][7] = 264;
1455 | GBFreq[44][88] = 263;
1456 | GBFreq[52][24] = 262;
1457 | GBFreq[23][34] = 261;
1458 | GBFreq[32][75] = 260;
1459 | GBFreq[19][10] = 259;
1460 | GBFreq[28][91] = 258;
1461 | GBFreq[32][83] = 257;
1462 | GBFreq[25][75] = 256;
1463 | GBFreq[53][45] = 255;
1464 | GBFreq[29][85] = 254;
1465 | GBFreq[53][59] = 253;
1466 | GBFreq[16][2] = 252;
1467 | GBFreq[19][78] = 251;
1468 | GBFreq[15][75] = 250;
1469 | GBFreq[51][42] = 249;
1470 | GBFreq[45][67] = 248;
1471 | GBFreq[15][74] = 247;
1472 | GBFreq[25][81] = 246;
1473 | GBFreq[37][62] = 245;
1474 | GBFreq[16][55] = 244;
1475 | GBFreq[18][38] = 243;
1476 | GBFreq[23][23] = 242;
1477 | GBFreq[38][30] = 241;
1478 | GBFreq[17][28] = 240;
1479 | GBFreq[44][73] = 239;
1480 | GBFreq[23][78] = 238;
1481 | GBFreq[40][77] = 237;
1482 | GBFreq[38][87] = 236;
1483 | GBFreq[27][19] = 235;
1484 | GBFreq[38][82] = 234;
1485 | GBFreq[37][22] = 233;
1486 | GBFreq[41][30] = 232;
1487 | GBFreq[54][9] = 231;
1488 | GBFreq[32][30] = 230;
1489 | GBFreq[30][52] = 229;
1490 | GBFreq[40][84] = 228;
1491 | GBFreq[53][57] = 227;
1492 | GBFreq[27][27] = 226;
1493 | GBFreq[38][64] = 225;
1494 | GBFreq[18][43] = 224;
1495 | GBFreq[23][69] = 223;
1496 | GBFreq[28][12] = 222;
1497 | GBFreq[50][78] = 221;
1498 | GBFreq[50][1] = 220;
1499 | GBFreq[26][88] = 219;
1500 | GBFreq[36][40] = 218;
1501 | GBFreq[33][89] = 217;
1502 | GBFreq[41][28] = 216;
1503 | GBFreq[31][77] = 215;
1504 | GBFreq[46][1] = 214;
1505 | GBFreq[47][19] = 213;
1506 | GBFreq[35][55] = 212;
1507 | GBFreq[41][21] = 211;
1508 | GBFreq[27][10] = 210;
1509 | GBFreq[32][77] = 209;
1510 | GBFreq[26][37] = 208;
1511 | GBFreq[20][33] = 207;
1512 | GBFreq[41][52] = 206;
1513 | GBFreq[32][18] = 205;
1514 | GBFreq[38][13] = 204;
1515 | GBFreq[20][18] = 203;
1516 | GBFreq[20][24] = 202;
1517 | GBFreq[45][19] = 201;
1518 | GBFreq[18][53] = 200;
1519 | /*
1520 | * GBFreq[39][0] = 199; GBFreq[40][71] = 198; GBFreq[41][27] = 197; GBFreq[15][69] = 196; GBFreq[42][10] = 195;
1521 | * GBFreq[31][89] = 194; GBFreq[51][28] = 193; GBFreq[41][22] = 192; GBFreq[40][43] = 191; GBFreq[38][6] = 190;
1522 | * GBFreq[37][11] = 189; GBFreq[39][60] = 188; GBFreq[48][47] = 187; GBFreq[46][80] = 186; GBFreq[52][49] = 185;
1523 | * GBFreq[50][48] = 184; GBFreq[25][1] = 183; GBFreq[52][29] = 182; GBFreq[24][66] = 181; GBFreq[23][35] = 180;
1524 | * GBFreq[49][72] = 179; GBFreq[47][45] = 178; GBFreq[45][14] = 177; GBFreq[51][70] = 176; GBFreq[22][30] = 175;
1525 | * GBFreq[49][83] = 174; GBFreq[26][79] = 173; GBFreq[27][41] = 172; GBFreq[51][81] = 171; GBFreq[41][54] = 170;
1526 | * GBFreq[20][4] = 169; GBFreq[29][60] = 168; GBFreq[20][27] = 167; GBFreq[50][15] = 166; GBFreq[41][6] = 165;
1527 | * GBFreq[35][34] = 164; GBFreq[44][87] = 163; GBFreq[46][66] = 162; GBFreq[42][37] = 161; GBFreq[42][24] = 160;
1528 | * GBFreq[54][7] = 159; GBFreq[41][14] = 158; GBFreq[39][83] = 157; GBFreq[16][87] = 156; GBFreq[20][59] = 155;
1529 | * GBFreq[42][12] = 154; GBFreq[47][2] = 153; GBFreq[21][32] = 152; GBFreq[53][29] = 151; GBFreq[22][40] = 150;
1530 | * GBFreq[24][58] = 149; GBFreq[52][88] = 148; GBFreq[29][30] = 147; GBFreq[15][91] = 146; GBFreq[54][72] = 145;
1531 | * GBFreq[51][75] = 144; GBFreq[33][67] = 143; GBFreq[41][50] = 142; GBFreq[27][34] = 141; GBFreq[46][17] = 140;
1532 | * GBFreq[31][74] = 139; GBFreq[42][67] = 138; GBFreq[54][87] = 137; GBFreq[27][14] = 136; GBFreq[16][63] = 135;
1533 | * GBFreq[16][5] = 134; GBFreq[43][23] = 133; GBFreq[23][13] = 132; GBFreq[31][12] = 131; GBFreq[25][57] = 130;
1534 | * GBFreq[38][49] = 129; GBFreq[42][69] = 128; GBFreq[23][80] = 127; GBFreq[29][0] = 126; GBFreq[28][2] = 125;
1535 | * GBFreq[28][17] = 124; GBFreq[17][27] = 123; GBFreq[40][16] = 122; GBFreq[45][1] = 121; GBFreq[36][33] = 120;
1536 | * GBFreq[35][23] = 119; GBFreq[20][86] = 118; GBFreq[29][53] = 117; GBFreq[23][88] = 116; GBFreq[51][87] = 115;
1537 | * GBFreq[54][27] = 114; GBFreq[44][36] = 113; GBFreq[21][45] = 112; GBFreq[53][52] = 111; GBFreq[31][53] = 110;
1538 | * GBFreq[38][47] = 109; GBFreq[27][21] = 108; GBFreq[30][42] = 107; GBFreq[29][10] = 106; GBFreq[35][35] = 105;
1539 | * GBFreq[24][56] = 104; GBFreq[41][29] = 103; GBFreq[18][68] = 102; GBFreq[29][24] = 101; GBFreq[25][84] = 100;
1540 | * GBFreq[35][47] = 99; GBFreq[29][56] = 98; GBFreq[30][44] = 97; GBFreq[53][3] = 96; GBFreq[30][63] = 95; GBFreq[52][52] =
1541 | * 94; GBFreq[54][1] = 93; GBFreq[22][48] = 92; GBFreq[54][66] = 91; GBFreq[21][90] = 90; GBFreq[52][47] = 89;
1542 | * GBFreq[39][25] = 88; GBFreq[39][39] = 87; GBFreq[44][37] = 86; GBFreq[44][76] = 85; GBFreq[46][75] = 84; GBFreq[18][37] =
1543 | * 83; GBFreq[47][42] = 82; GBFreq[19][92] = 81; GBFreq[51][27] = 80; GBFreq[48][83] = 79; GBFreq[23][70] = 78;
1544 | * GBFreq[29][9] = 77; GBFreq[33][79] = 76; GBFreq[52][90] = 75; GBFreq[53][6] = 74; GBFreq[24][36] = 73; GBFreq[25][25] =
1545 | * 72; GBFreq[44][26] = 71; GBFreq[25][36] = 70; GBFreq[29][87] = 69; GBFreq[48][0] = 68; GBFreq[15][40] = 67;
1546 | * GBFreq[17][45] = 66; GBFreq[30][14] = 65; GBFreq[48][38] = 64; GBFreq[23][19] = 63; GBFreq[40][42] = 62; GBFreq[31][63] =
1547 | * 61; GBFreq[16][23] = 60; GBFreq[26][21] = 59; GBFreq[32][76] = 58; GBFreq[23][58] = 57; GBFreq[41][37] = 56;
1548 | * GBFreq[30][43] = 55; GBFreq[47][38] = 54; GBFreq[21][46] = 53; GBFreq[18][33] = 52; GBFreq[52][37] = 51; GBFreq[36][8] =
1549 | * 50; GBFreq[49][24] = 49; GBFreq[15][66] = 48; GBFreq[35][77] = 47; GBFreq[27][58] = 46; GBFreq[35][51] = 45;
1550 | * GBFreq[24][69] = 44; GBFreq[20][54] = 43; GBFreq[24][41] = 42; GBFreq[41][0] = 41; GBFreq[33][71] = 40; GBFreq[23][52] =
1551 | * 39; GBFreq[29][67] = 38; GBFreq[46][51] = 37; GBFreq[46][90] = 36; GBFreq[49][33] = 35; GBFreq[33][28] = 34;
1552 | * GBFreq[37][86] = 33; GBFreq[39][22] = 32; GBFreq[37][37] = 31; GBFreq[29][62] = 30; GBFreq[29][50] = 29; GBFreq[36][89] =
1553 | * 28; GBFreq[42][44] = 27; GBFreq[51][82] = 26; GBFreq[28][83] = 25; GBFreq[15][78] = 24; GBFreq[46][62] = 23;
1554 | * GBFreq[19][69] = 22; GBFreq[51][23] = 21; GBFreq[37][69] = 20; GBFreq[25][5] = 19; GBFreq[51][85] = 18; GBFreq[48][77] =
1555 | * 17; GBFreq[32][46] = 16; GBFreq[53][60] = 15; GBFreq[28][57] = 14; GBFreq[54][82] = 13; GBFreq[54][15] = 12;
1556 | * GBFreq[49][54] = 11; GBFreq[53][87] = 10; GBFreq[27][16] = 9; GBFreq[29][34] = 8; GBFreq[20][44] = 7; GBFreq[42][73] = 6;
1557 | * GBFreq[47][71] = 5; GBFreq[29][37] = 4; GBFreq[25][50] = 3; GBFreq[18][84] = 2; GBFreq[50][45] = 1; GBFreq[48][46] = 0;
1558 | */
1559 | // GBFreq[43][89] = -1; GBFreq[54][68] = -2;
1560 | Big5Freq[9][89] = 600;
1561 | Big5Freq[11][15] = 599;
1562 | Big5Freq[3][66] = 598;
1563 | Big5Freq[6][121] = 597;
1564 | Big5Freq[3][0] = 596;
1565 | Big5Freq[5][82] = 595;
1566 | Big5Freq[3][42] = 594;
1567 | Big5Freq[5][34] = 593;
1568 | Big5Freq[3][8] = 592;
1569 | Big5Freq[3][6] = 591;
1570 | Big5Freq[3][67] = 590;
1571 | Big5Freq[7][139] = 589;
1572 | Big5Freq[23][137] = 588;
1573 | Big5Freq[12][46] = 587;
1574 | Big5Freq[4][8] = 586;
1575 | Big5Freq[4][41] = 585;
1576 | Big5Freq[18][47] = 584;
1577 | Big5Freq[12][114] = 583;
1578 | Big5Freq[6][1] = 582;
1579 | Big5Freq[22][60] = 581;
1580 | Big5Freq[5][46] = 580;
1581 | Big5Freq[11][79] = 579;
1582 | Big5Freq[3][23] = 578;
1583 | Big5Freq[7][114] = 577;
1584 | Big5Freq[29][102] = 576;
1585 | Big5Freq[19][14] = 575;
1586 | Big5Freq[4][133] = 574;
1587 | Big5Freq[3][29] = 573;
1588 | Big5Freq[4][109] = 572;
1589 | Big5Freq[14][127] = 571;
1590 | Big5Freq[5][48] = 570;
1591 | Big5Freq[13][104] = 569;
1592 | Big5Freq[3][132] = 568;
1593 | Big5Freq[26][64] = 567;
1594 | Big5Freq[7][19] = 566;
1595 | Big5Freq[4][12] = 565;
1596 | Big5Freq[11][124] = 564;
1597 | Big5Freq[7][89] = 563;
1598 | Big5Freq[15][124] = 562;
1599 | Big5Freq[4][108] = 561;
1600 | Big5Freq[19][66] = 560;
1601 | Big5Freq[3][21] = 559;
1602 | Big5Freq[24][12] = 558;
1603 | Big5Freq[28][111] = 557;
1604 | Big5Freq[12][107] = 556;
1605 | Big5Freq[3][112] = 555;
1606 | Big5Freq[8][113] = 554;
1607 | Big5Freq[5][40] = 553;
1608 | Big5Freq[26][145] = 552;
1609 | Big5Freq[3][48] = 551;
1610 | Big5Freq[3][70] = 550;
1611 | Big5Freq[22][17] = 549;
1612 | Big5Freq[16][47] = 548;
1613 | Big5Freq[3][53] = 547;
1614 | Big5Freq[4][24] = 546;
1615 | Big5Freq[32][120] = 545;
1616 | Big5Freq[24][49] = 544;
1617 | Big5Freq[24][142] = 543;
1618 | Big5Freq[18][66] = 542;
1619 | Big5Freq[29][150] = 541;
1620 | Big5Freq[5][122] = 540;
1621 | Big5Freq[5][114] = 539;
1622 | Big5Freq[3][44] = 538;
1623 | Big5Freq[10][128] = 537;
1624 | Big5Freq[15][20] = 536;
1625 | Big5Freq[13][33] = 535;
1626 | Big5Freq[14][87] = 534;
1627 | Big5Freq[3][126] = 533;
1628 | Big5Freq[4][53] = 532;
1629 | Big5Freq[4][40] = 531;
1630 | Big5Freq[9][93] = 530;
1631 | Big5Freq[15][137] = 529;
1632 | Big5Freq[10][123] = 528;
1633 | Big5Freq[4][56] = 527;
1634 | Big5Freq[5][71] = 526;
1635 | Big5Freq[10][8] = 525;
1636 | Big5Freq[5][16] = 524;
1637 | Big5Freq[5][146] = 523;
1638 | Big5Freq[18][88] = 522;
1639 | Big5Freq[24][4] = 521;
1640 | Big5Freq[20][47] = 520;
1641 | Big5Freq[5][33] = 519;
1642 | Big5Freq[9][43] = 518;
1643 | Big5Freq[20][12] = 517;
1644 | Big5Freq[20][13] = 516;
1645 | Big5Freq[5][156] = 515;
1646 | Big5Freq[22][140] = 514;
1647 | Big5Freq[8][146] = 513;
1648 | Big5Freq[21][123] = 512;
1649 | Big5Freq[4][90] = 511;
1650 | Big5Freq[5][62] = 510;
1651 | Big5Freq[17][59] = 509;
1652 | Big5Freq[10][37] = 508;
1653 | Big5Freq[18][107] = 507;
1654 | Big5Freq[14][53] = 506;
1655 | Big5Freq[22][51] = 505;
1656 | Big5Freq[8][13] = 504;
1657 | Big5Freq[5][29] = 503;
1658 | Big5Freq[9][7] = 502;
1659 | Big5Freq[22][14] = 501;
1660 | Big5Freq[8][55] = 500;
1661 | Big5Freq[33][9] = 499;
1662 | Big5Freq[16][64] = 498;
1663 | Big5Freq[7][131] = 497;
1664 | Big5Freq[34][4] = 496;
1665 | Big5Freq[7][101] = 495;
1666 | Big5Freq[11][139] = 494;
1667 | Big5Freq[3][135] = 493;
1668 | Big5Freq[7][102] = 492;
1669 | Big5Freq[17][13] = 491;
1670 | Big5Freq[3][20] = 490;
1671 | Big5Freq[27][106] = 489;
1672 | Big5Freq[5][88] = 488;
1673 | Big5Freq[6][33] = 487;
1674 | Big5Freq[5][139] = 486;
1675 | Big5Freq[6][0] = 485;
1676 | Big5Freq[17][58] = 484;
1677 | Big5Freq[5][133] = 483;
1678 | Big5Freq[9][107] = 482;
1679 | Big5Freq[23][39] = 481;
1680 | Big5Freq[5][23] = 480;
1681 | Big5Freq[3][79] = 479;
1682 | Big5Freq[32][97] = 478;
1683 | Big5Freq[3][136] = 477;
1684 | Big5Freq[4][94] = 476;
1685 | Big5Freq[21][61] = 475;
1686 | Big5Freq[23][123] = 474;
1687 | Big5Freq[26][16] = 473;
1688 | Big5Freq[24][137] = 472;
1689 | Big5Freq[22][18] = 471;
1690 | Big5Freq[5][1] = 470;
1691 | Big5Freq[20][119] = 469;
1692 | Big5Freq[3][7] = 468;
1693 | Big5Freq[10][79] = 467;
1694 | Big5Freq[15][105] = 466;
1695 | Big5Freq[3][144] = 465;
1696 | Big5Freq[12][80] = 464;
1697 | Big5Freq[15][73] = 463;
1698 | Big5Freq[3][19] = 462;
1699 | Big5Freq[8][109] = 461;
1700 | Big5Freq[3][15] = 460;
1701 | Big5Freq[31][82] = 459;
1702 | Big5Freq[3][43] = 458;
1703 | Big5Freq[25][119] = 457;
1704 | Big5Freq[16][111] = 456;
1705 | Big5Freq[7][77] = 455;
1706 | Big5Freq[3][95] = 454;
1707 | Big5Freq[24][82] = 453;
1708 | Big5Freq[7][52] = 452;
1709 | Big5Freq[9][151] = 451;
1710 | Big5Freq[3][129] = 450;
1711 | Big5Freq[5][87] = 449;
1712 | Big5Freq[3][55] = 448;
1713 | Big5Freq[8][153] = 447;
1714 | Big5Freq[4][83] = 446;
1715 | Big5Freq[3][114] = 445;
1716 | Big5Freq[23][147] = 444;
1717 | Big5Freq[15][31] = 443;
1718 | Big5Freq[3][54] = 442;
1719 | Big5Freq[11][122] = 441;
1720 | Big5Freq[4][4] = 440;
1721 | Big5Freq[34][149] = 439;
1722 | Big5Freq[3][17] = 438;
1723 | Big5Freq[21][64] = 437;
1724 | Big5Freq[26][144] = 436;
1725 | Big5Freq[4][62] = 435;
1726 | Big5Freq[8][15] = 434;
1727 | Big5Freq[35][80] = 433;
1728 | Big5Freq[7][110] = 432;
1729 | Big5Freq[23][114] = 431;
1730 | Big5Freq[3][108] = 430;
1731 | Big5Freq[3][62] = 429;
1732 | Big5Freq[21][41] = 428;
1733 | Big5Freq[15][99] = 427;
1734 | Big5Freq[5][47] = 426;
1735 | Big5Freq[4][96] = 425;
1736 | Big5Freq[20][122] = 424;
1737 | Big5Freq[5][21] = 423;
1738 | Big5Freq[4][157] = 422;
1739 | Big5Freq[16][14] = 421;
1740 | Big5Freq[3][117] = 420;
1741 | Big5Freq[7][129] = 419;
1742 | Big5Freq[4][27] = 418;
1743 | Big5Freq[5][30] = 417;
1744 | Big5Freq[22][16] = 416;
1745 | Big5Freq[5][64] = 415;
1746 | Big5Freq[17][99] = 414;
1747 | Big5Freq[17][57] = 413;
1748 | Big5Freq[8][105] = 412;
1749 | Big5Freq[5][112] = 411;
1750 | Big5Freq[20][59] = 410;
1751 | Big5Freq[6][129] = 409;
1752 | Big5Freq[18][17] = 408;
1753 | Big5Freq[3][92] = 407;
1754 | Big5Freq[28][118] = 406;
1755 | Big5Freq[3][109] = 405;
1756 | Big5Freq[31][51] = 404;
1757 | Big5Freq[13][116] = 403;
1758 | Big5Freq[6][15] = 402;
1759 | Big5Freq[36][136] = 401;
1760 | Big5Freq[12][74] = 400;
1761 | Big5Freq[20][88] = 399;
1762 | Big5Freq[36][68] = 398;
1763 | Big5Freq[3][147] = 397;
1764 | Big5Freq[15][84] = 396;
1765 | Big5Freq[16][32] = 395;
1766 | Big5Freq[16][58] = 394;
1767 | Big5Freq[7][66] = 393;
1768 | Big5Freq[23][107] = 392;
1769 | Big5Freq[9][6] = 391;
1770 | Big5Freq[12][86] = 390;
1771 | Big5Freq[23][112] = 389;
1772 | Big5Freq[37][23] = 388;
1773 | Big5Freq[3][138] = 387;
1774 | Big5Freq[20][68] = 386;
1775 | Big5Freq[15][116] = 385;
1776 | Big5Freq[18][64] = 384;
1777 | Big5Freq[12][139] = 383;
1778 | Big5Freq[11][155] = 382;
1779 | Big5Freq[4][156] = 381;
1780 | Big5Freq[12][84] = 380;
1781 | Big5Freq[18][49] = 379;
1782 | Big5Freq[25][125] = 378;
1783 | Big5Freq[25][147] = 377;
1784 | Big5Freq[15][110] = 376;
1785 | Big5Freq[19][96] = 375;
1786 | Big5Freq[30][152] = 374;
1787 | Big5Freq[6][31] = 373;
1788 | Big5Freq[27][117] = 372;
1789 | Big5Freq[3][10] = 371;
1790 | Big5Freq[6][131] = 370;
1791 | Big5Freq[13][112] = 369;
1792 | Big5Freq[36][156] = 368;
1793 | Big5Freq[4][60] = 367;
1794 | Big5Freq[15][121] = 366;
1795 | Big5Freq[4][112] = 365;
1796 | Big5Freq[30][142] = 364;
1797 | Big5Freq[23][154] = 363;
1798 | Big5Freq[27][101] = 362;
1799 | Big5Freq[9][140] = 361;
1800 | Big5Freq[3][89] = 360;
1801 | Big5Freq[18][148] = 359;
1802 | Big5Freq[4][69] = 358;
1803 | Big5Freq[16][49] = 357;
1804 | Big5Freq[6][117] = 356;
1805 | Big5Freq[36][55] = 355;
1806 | Big5Freq[5][123] = 354;
1807 | Big5Freq[4][126] = 353;
1808 | Big5Freq[4][119] = 352;
1809 | Big5Freq[9][95] = 351;
1810 | Big5Freq[5][24] = 350;
1811 | Big5Freq[16][133] = 349;
1812 | Big5Freq[10][134] = 348;
1813 | Big5Freq[26][59] = 347;
1814 | Big5Freq[6][41] = 346;
1815 | Big5Freq[6][146] = 345;
1816 | Big5Freq[19][24] = 344;
1817 | Big5Freq[5][113] = 343;
1818 | Big5Freq[10][118] = 342;
1819 | Big5Freq[34][151] = 341;
1820 | Big5Freq[9][72] = 340;
1821 | Big5Freq[31][25] = 339;
1822 | Big5Freq[18][126] = 338;
1823 | Big5Freq[18][28] = 337;
1824 | Big5Freq[4][153] = 336;
1825 | Big5Freq[3][84] = 335;
1826 | Big5Freq[21][18] = 334;
1827 | Big5Freq[25][129] = 333;
1828 | Big5Freq[6][107] = 332;
1829 | Big5Freq[12][25] = 331;
1830 | Big5Freq[17][109] = 330;
1831 | Big5Freq[7][76] = 329;
1832 | Big5Freq[15][15] = 328;
1833 | Big5Freq[4][14] = 327;
1834 | Big5Freq[23][88] = 326;
1835 | Big5Freq[18][2] = 325;
1836 | Big5Freq[6][88] = 324;
1837 | Big5Freq[16][84] = 323;
1838 | Big5Freq[12][48] = 322;
1839 | Big5Freq[7][68] = 321;
1840 | Big5Freq[5][50] = 320;
1841 | Big5Freq[13][54] = 319;
1842 | Big5Freq[7][98] = 318;
1843 | Big5Freq[11][6] = 317;
1844 | Big5Freq[9][80] = 316;
1845 | Big5Freq[16][41] = 315;
1846 | Big5Freq[7][43] = 314;
1847 | Big5Freq[28][117] = 313;
1848 | Big5Freq[3][51] = 312;
1849 | Big5Freq[7][3] = 311;
1850 | Big5Freq[20][81] = 310;
1851 | Big5Freq[4][2] = 309;
1852 | Big5Freq[11][16] = 308;
1853 | Big5Freq[10][4] = 307;
1854 | Big5Freq[10][119] = 306;
1855 | Big5Freq[6][142] = 305;
1856 | Big5Freq[18][51] = 304;
1857 | Big5Freq[8][144] = 303;
1858 | Big5Freq[10][65] = 302;
1859 | Big5Freq[11][64] = 301;
1860 | Big5Freq[11][130] = 300;
1861 | Big5Freq[9][92] = 299;
1862 | Big5Freq[18][29] = 298;
1863 | Big5Freq[18][78] = 297;
1864 | Big5Freq[18][151] = 296;
1865 | Big5Freq[33][127] = 295;
1866 | Big5Freq[35][113] = 294;
1867 | Big5Freq[10][155] = 293;
1868 | Big5Freq[3][76] = 292;
1869 | Big5Freq[36][123] = 291;
1870 | Big5Freq[13][143] = 290;
1871 | Big5Freq[5][135] = 289;
1872 | Big5Freq[23][116] = 288;
1873 | Big5Freq[6][101] = 287;
1874 | Big5Freq[14][74] = 286;
1875 | Big5Freq[7][153] = 285;
1876 | Big5Freq[3][101] = 284;
1877 | Big5Freq[9][74] = 283;
1878 | Big5Freq[3][156] = 282;
1879 | Big5Freq[4][147] = 281;
1880 | Big5Freq[9][12] = 280;
1881 | Big5Freq[18][133] = 279;
1882 | Big5Freq[4][0] = 278;
1883 | Big5Freq[7][155] = 277;
1884 | Big5Freq[9][144] = 276;
1885 | Big5Freq[23][49] = 275;
1886 | Big5Freq[5][89] = 274;
1887 | Big5Freq[10][11] = 273;
1888 | Big5Freq[3][110] = 272;
1889 | Big5Freq[3][40] = 271;
1890 | Big5Freq[29][115] = 270;
1891 | Big5Freq[9][100] = 269;
1892 | Big5Freq[21][67] = 268;
1893 | Big5Freq[23][145] = 267;
1894 | Big5Freq[10][47] = 266;
1895 | Big5Freq[4][31] = 265;
1896 | Big5Freq[4][81] = 264;
1897 | Big5Freq[22][62] = 263;
1898 | Big5Freq[4][28] = 262;
1899 | Big5Freq[27][39] = 261;
1900 | Big5Freq[27][54] = 260;
1901 | Big5Freq[32][46] = 259;
1902 | Big5Freq[4][76] = 258;
1903 | Big5Freq[26][15] = 257;
1904 | Big5Freq[12][154] = 256;
1905 | Big5Freq[9][150] = 255;
1906 | Big5Freq[15][17] = 254;
1907 | Big5Freq[5][129] = 253;
1908 | Big5Freq[10][40] = 252;
1909 | Big5Freq[13][37] = 251;
1910 | Big5Freq[31][104] = 250;
1911 | Big5Freq[3][152] = 249;
1912 | Big5Freq[5][22] = 248;
1913 | Big5Freq[8][48] = 247;
1914 | Big5Freq[4][74] = 246;
1915 | Big5Freq[6][17] = 245;
1916 | Big5Freq[30][82] = 244;
1917 | Big5Freq[4][116] = 243;
1918 | Big5Freq[16][42] = 242;
1919 | Big5Freq[5][55] = 241;
1920 | Big5Freq[4][64] = 240;
1921 | Big5Freq[14][19] = 239;
1922 | Big5Freq[35][82] = 238;
1923 | Big5Freq[30][139] = 237;
1924 | Big5Freq[26][152] = 236;
1925 | Big5Freq[32][32] = 235;
1926 | Big5Freq[21][102] = 234;
1927 | Big5Freq[10][131] = 233;
1928 | Big5Freq[9][128] = 232;
1929 | Big5Freq[3][87] = 231;
1930 | Big5Freq[4][51] = 230;
1931 | Big5Freq[10][15] = 229;
1932 | Big5Freq[4][150] = 228;
1933 | Big5Freq[7][4] = 227;
1934 | Big5Freq[7][51] = 226;
1935 | Big5Freq[7][157] = 225;
1936 | Big5Freq[4][146] = 224;
1937 | Big5Freq[4][91] = 223;
1938 | Big5Freq[7][13] = 222;
1939 | Big5Freq[17][116] = 221;
1940 | Big5Freq[23][21] = 220;
1941 | Big5Freq[5][106] = 219;
1942 | Big5Freq[14][100] = 218;
1943 | Big5Freq[10][152] = 217;
1944 | Big5Freq[14][89] = 216;
1945 | Big5Freq[6][138] = 215;
1946 | Big5Freq[12][157] = 214;
1947 | Big5Freq[10][102] = 213;
1948 | Big5Freq[19][94] = 212;
1949 | Big5Freq[7][74] = 211;
1950 | Big5Freq[18][128] = 210;
1951 | Big5Freq[27][111] = 209;
1952 | Big5Freq[11][57] = 208;
1953 | Big5Freq[3][131] = 207;
1954 | Big5Freq[30][23] = 206;
1955 | Big5Freq[30][126] = 205;
1956 | Big5Freq[4][36] = 204;
1957 | Big5Freq[26][124] = 203;
1958 | Big5Freq[4][19] = 202;
1959 | Big5Freq[9][152] = 201;
1960 | /*
1961 | * Big5Freq[5][0] = 200; Big5Freq[26][57] = 199; Big5Freq[13][155] = 198; Big5Freq[3][38] = 197; Big5Freq[9][155] = 196;
1962 | * Big5Freq[28][53] = 195; Big5Freq[15][71] = 194; Big5Freq[21][95] = 193; Big5Freq[15][112] = 192; Big5Freq[14][138] = 191;
1963 | * Big5Freq[8][18] = 190; Big5Freq[20][151] = 189; Big5Freq[37][27] = 188; Big5Freq[32][48] = 187; Big5Freq[23][66] = 186;
1964 | * Big5Freq[9][2] = 185; Big5Freq[13][133] = 184; Big5Freq[7][127] = 183; Big5Freq[3][11] = 182; Big5Freq[12][118] = 181;
1965 | * Big5Freq[13][101] = 180; Big5Freq[30][153] = 179; Big5Freq[4][65] = 178; Big5Freq[5][25] = 177; Big5Freq[5][140] = 176;
1966 | * Big5Freq[6][25] = 175; Big5Freq[4][52] = 174; Big5Freq[30][156] = 173; Big5Freq[16][13] = 172; Big5Freq[21][8] = 171;
1967 | * Big5Freq[19][74] = 170; Big5Freq[15][145] = 169; Big5Freq[9][15] = 168; Big5Freq[13][82] = 167; Big5Freq[26][86] = 166;
1968 | * Big5Freq[18][52] = 165; Big5Freq[6][109] = 164; Big5Freq[10][99] = 163; Big5Freq[18][101] = 162; Big5Freq[25][49] = 161;
1969 | * Big5Freq[31][79] = 160; Big5Freq[28][20] = 159; Big5Freq[12][115] = 158; Big5Freq[15][66] = 157; Big5Freq[11][104] = 156;
1970 | * Big5Freq[23][106] = 155; Big5Freq[34][157] = 154; Big5Freq[32][94] = 153; Big5Freq[29][88] = 152; Big5Freq[10][46] = 151;
1971 | * Big5Freq[13][118] = 150; Big5Freq[20][37] = 149; Big5Freq[12][30] = 148; Big5Freq[21][4] = 147; Big5Freq[16][33] = 146;
1972 | * Big5Freq[13][52] = 145; Big5Freq[4][7] = 144; Big5Freq[21][49] = 143; Big5Freq[3][27] = 142; Big5Freq[16][91] = 141;
1973 | * Big5Freq[5][155] = 140; Big5Freq[29][130] = 139; Big5Freq[3][125] = 138; Big5Freq[14][26] = 137; Big5Freq[15][39] = 136;
1974 | * Big5Freq[24][110] = 135; Big5Freq[7][141] = 134; Big5Freq[21][15] = 133; Big5Freq[32][104] = 132; Big5Freq[8][31] = 131;
1975 | * Big5Freq[34][112] = 130; Big5Freq[10][75] = 129; Big5Freq[21][23] = 128; Big5Freq[34][131] = 127; Big5Freq[12][3] = 126;
1976 | * Big5Freq[10][62] = 125; Big5Freq[9][120] = 124; Big5Freq[32][149] = 123; Big5Freq[8][44] = 122; Big5Freq[24][2] = 121;
1977 | * Big5Freq[6][148] = 120; Big5Freq[15][103] = 119; Big5Freq[36][54] = 118; Big5Freq[36][134] = 117; Big5Freq[11][7] = 116;
1978 | * Big5Freq[3][90] = 115; Big5Freq[36][73] = 114; Big5Freq[8][102] = 113; Big5Freq[12][87] = 112; Big5Freq[25][64] = 111;
1979 | * Big5Freq[9][1] = 110; Big5Freq[24][121] = 109; Big5Freq[5][75] = 108; Big5Freq[17][83] = 107; Big5Freq[18][57] = 106;
1980 | * Big5Freq[8][95] = 105; Big5Freq[14][36] = 104; Big5Freq[28][113] = 103; Big5Freq[12][56] = 102; Big5Freq[14][61] = 101;
1981 | * Big5Freq[25][138] = 100; Big5Freq[4][34] = 99; Big5Freq[11][152] = 98; Big5Freq[35][0] = 97; Big5Freq[4][15] = 96;
1982 | * Big5Freq[8][82] = 95; Big5Freq[20][73] = 94; Big5Freq[25][52] = 93; Big5Freq[24][6] = 92; Big5Freq[21][78] = 91;
1983 | * Big5Freq[17][32] = 90; Big5Freq[17][91] = 89; Big5Freq[5][76] = 88; Big5Freq[15][60] = 87; Big5Freq[15][150] = 86;
1984 | * Big5Freq[5][80] = 85; Big5Freq[15][81] = 84; Big5Freq[28][108] = 83; Big5Freq[18][14] = 82; Big5Freq[19][109] = 81;
1985 | * Big5Freq[28][133] = 80; Big5Freq[21][97] = 79; Big5Freq[5][105] = 78; Big5Freq[18][114] = 77; Big5Freq[16][95] = 76;
1986 | * Big5Freq[5][51] = 75; Big5Freq[3][148] = 74; Big5Freq[22][102] = 73; Big5Freq[4][123] = 72; Big5Freq[8][88] = 71;
1987 | * Big5Freq[25][111] = 70; Big5Freq[8][149] = 69; Big5Freq[9][48] = 68; Big5Freq[16][126] = 67; Big5Freq[33][150] = 66;
1988 | * Big5Freq[9][54] = 65; Big5Freq[29][104] = 64; Big5Freq[3][3] = 63; Big5Freq[11][49] = 62; Big5Freq[24][109] = 61;
1989 | * Big5Freq[28][116] = 60; Big5Freq[34][113] = 59; Big5Freq[5][3] = 58; Big5Freq[21][106] = 57; Big5Freq[4][98] = 56;
1990 | * Big5Freq[12][135] = 55; Big5Freq[16][101] = 54; Big5Freq[12][147] = 53; Big5Freq[27][55] = 52; Big5Freq[3][5] = 51;
1991 | * Big5Freq[11][101] = 50; Big5Freq[16][157] = 49; Big5Freq[22][114] = 48; Big5Freq[18][46] = 47; Big5Freq[4][29] = 46;
1992 | * Big5Freq[8][103] = 45; Big5Freq[16][151] = 44; Big5Freq[8][29] = 43; Big5Freq[15][114] = 42; Big5Freq[22][70] = 41;
1993 | * Big5Freq[13][121] = 40; Big5Freq[7][112] = 39; Big5Freq[20][83] = 38; Big5Freq[3][36] = 37; Big5Freq[10][103] = 36;
1994 | * Big5Freq[3][96] = 35; Big5Freq[21][79] = 34; Big5Freq[25][120] = 33; Big5Freq[29][121] = 32; Big5Freq[23][71] = 31;
1995 | * Big5Freq[21][22] = 30; Big5Freq[18][89] = 29; Big5Freq[25][104] = 28; Big5Freq[10][124] = 27; Big5Freq[26][4] = 26;
1996 | * Big5Freq[21][136] = 25; Big5Freq[6][112] = 24; Big5Freq[12][103] = 23; Big5Freq[17][66] = 22; Big5Freq[13][151] = 21;
1997 | * Big5Freq[33][152] = 20; Big5Freq[11][148] = 19; Big5Freq[13][57] = 18; Big5Freq[13][41] = 17; Big5Freq[7][60] = 16;
1998 | * Big5Freq[21][29] = 15; Big5Freq[9][157] = 14; Big5Freq[24][95] = 13; Big5Freq[15][148] = 12; Big5Freq[15][122] = 11;
1999 | * Big5Freq[6][125] = 10; Big5Freq[11][25] = 9; Big5Freq[20][55] = 8; Big5Freq[19][84] = 7; Big5Freq[21][82] = 6;
2000 | * Big5Freq[24][3] = 5; Big5Freq[13][70] = 4; Big5Freq[6][21] = 3; Big5Freq[21][86] = 2; Big5Freq[12][23] = 1;
2001 | * Big5Freq[3][85] = 0; EUC_TWFreq[45][90] = 600;
2002 | */
2003 | Big5PFreq[41][122] = 600;
2004 | Big5PFreq[35][0] = 599;
2005 | Big5PFreq[43][15] = 598;
2006 | Big5PFreq[35][99] = 597;
2007 | Big5PFreq[35][6] = 596;
2008 | Big5PFreq[35][8] = 595;
2009 | Big5PFreq[38][154] = 594;
2010 | Big5PFreq[37][34] = 593;
2011 | Big5PFreq[37][115] = 592;
2012 | Big5PFreq[36][12] = 591;
2013 | Big5PFreq[18][77] = 590;
2014 | Big5PFreq[35][100] = 589;
2015 | Big5PFreq[35][42] = 588;
2016 | Big5PFreq[120][75] = 587;
2017 | Big5PFreq[35][23] = 586;
2018 | Big5PFreq[13][72] = 585;
2019 | Big5PFreq[0][67] = 584;
2020 | Big5PFreq[39][172] = 583;
2021 | Big5PFreq[22][182] = 582;
2022 | Big5PFreq[15][186] = 581;
2023 | Big5PFreq[15][165] = 580;
2024 | Big5PFreq[35][44] = 579;
2025 | Big5PFreq[40][13] = 578;
2026 | Big5PFreq[38][1] = 577;
2027 | Big5PFreq[37][33] = 576;
2028 | Big5PFreq[36][24] = 575;
2029 | Big5PFreq[56][4] = 574;
2030 | Big5PFreq[35][29] = 573;
2031 | Big5PFreq[9][96] = 572;
2032 | Big5PFreq[37][62] = 571;
2033 | Big5PFreq[48][47] = 570;
2034 | Big5PFreq[51][14] = 569;
2035 | Big5PFreq[39][122] = 568;
2036 | Big5PFreq[44][46] = 567;
2037 | Big5PFreq[35][21] = 566;
2038 | Big5PFreq[36][8] = 565;
2039 | Big5PFreq[36][141] = 564;
2040 | Big5PFreq[3][81] = 563;
2041 | Big5PFreq[37][155] = 562;
2042 | Big5PFreq[42][84] = 561;
2043 | Big5PFreq[36][40] = 560;
2044 | Big5PFreq[35][103] = 559;
2045 | Big5PFreq[11][84] = 558;
2046 | Big5PFreq[45][33] = 557;
2047 | Big5PFreq[121][79] = 556;
2048 | Big5PFreq[2][77] = 555;
2049 | Big5PFreq[36][41] = 554;
2050 | Big5PFreq[37][47] = 553;
2051 | Big5PFreq[39][125] = 552;
2052 | Big5PFreq[37][26] = 551;
2053 | Big5PFreq[35][48] = 550;
2054 | Big5PFreq[35][28] = 549;
2055 | Big5PFreq[35][159] = 548;
2056 | Big5PFreq[37][40] = 547;
2057 | Big5PFreq[35][145] = 546;
2058 | Big5PFreq[37][147] = 545;
2059 | Big5PFreq[46][160] = 544;
2060 | Big5PFreq[37][46] = 543;
2061 | Big5PFreq[50][99] = 542;
2062 | Big5PFreq[52][13] = 541;
2063 | Big5PFreq[10][82] = 540;
2064 | Big5PFreq[35][169] = 539;
2065 | Big5PFreq[35][31] = 538;
2066 | Big5PFreq[47][31] = 537;
2067 | Big5PFreq[18][79] = 536;
2068 | Big5PFreq[16][113] = 535;
2069 | Big5PFreq[37][104] = 534;
2070 | Big5PFreq[39][134] = 533;
2071 | Big5PFreq[36][53] = 532;
2072 | Big5PFreq[38][0] = 531;
2073 | Big5PFreq[4][86] = 530;
2074 | Big5PFreq[54][17] = 529;
2075 | Big5PFreq[43][157] = 528;
2076 | Big5PFreq[35][165] = 527;
2077 | Big5PFreq[69][147] = 526;
2078 | Big5PFreq[117][95] = 525;
2079 | Big5PFreq[35][162] = 524;
2080 | Big5PFreq[35][17] = 523;
2081 | Big5PFreq[36][142] = 522;
2082 | Big5PFreq[36][4] = 521;
2083 | Big5PFreq[37][166] = 520;
2084 | Big5PFreq[35][168] = 519;
2085 | Big5PFreq[35][19] = 518;
2086 | Big5PFreq[37][48] = 517;
2087 | Big5PFreq[42][37] = 516;
2088 | Big5PFreq[40][146] = 515;
2089 | Big5PFreq[36][123] = 514;
2090 | Big5PFreq[22][41] = 513;
2091 | Big5PFreq[20][119] = 512;
2092 | Big5PFreq[2][74] = 511;
2093 | Big5PFreq[44][113] = 510;
2094 | Big5PFreq[35][125] = 509;
2095 | Big5PFreq[37][16] = 508;
2096 | Big5PFreq[35][20] = 507;
2097 | Big5PFreq[35][55] = 506;
2098 | Big5PFreq[37][145] = 505;
2099 | Big5PFreq[0][88] = 504;
2100 | Big5PFreq[3][94] = 503;
2101 | Big5PFreq[6][65] = 502;
2102 | Big5PFreq[26][15] = 501;
2103 | Big5PFreq[41][126] = 500;
2104 | Big5PFreq[36][129] = 499;
2105 | Big5PFreq[31][75] = 498;
2106 | Big5PFreq[19][61] = 497;
2107 | Big5PFreq[35][128] = 496;
2108 | Big5PFreq[29][79] = 495;
2109 | Big5PFreq[36][62] = 494;
2110 | Big5PFreq[37][189] = 493;
2111 | Big5PFreq[39][109] = 492;
2112 | Big5PFreq[39][135] = 491;
2113 | Big5PFreq[72][15] = 490;
2114 | Big5PFreq[47][106] = 489;
2115 | Big5PFreq[54][14] = 488;
2116 | Big5PFreq[24][52] = 487;
2117 | Big5PFreq[38][162] = 486;
2118 | Big5PFreq[41][43] = 485;
2119 | Big5PFreq[37][121] = 484;
2120 | Big5PFreq[14][66] = 483;
2121 | Big5PFreq[37][30] = 482;
2122 | Big5PFreq[35][7] = 481;
2123 | Big5PFreq[49][58] = 480;
2124 | Big5PFreq[43][188] = 479;
2125 | Big5PFreq[24][66] = 478;
2126 | Big5PFreq[35][171] = 477;
2127 | Big5PFreq[40][186] = 476;
2128 | Big5PFreq[39][164] = 475;
2129 | Big5PFreq[78][186] = 474;
2130 | Big5PFreq[8][72] = 473;
2131 | Big5PFreq[36][190] = 472;
2132 | Big5PFreq[35][53] = 471;
2133 | Big5PFreq[35][54] = 470;
2134 | Big5PFreq[22][159] = 469;
2135 | Big5PFreq[35][9] = 468;
2136 | Big5PFreq[41][140] = 467;
2137 | Big5PFreq[37][22] = 466;
2138 | Big5PFreq[48][97] = 465;
2139 | Big5PFreq[50][97] = 464;
2140 | Big5PFreq[36][127] = 463;
2141 | Big5PFreq[37][23] = 462;
2142 | Big5PFreq[40][55] = 461;
2143 | Big5PFreq[35][43] = 460;
2144 | Big5PFreq[26][22] = 459;
2145 | Big5PFreq[35][15] = 458;
2146 | Big5PFreq[72][179] = 457;
2147 | Big5PFreq[20][129] = 456;
2148 | Big5PFreq[52][101] = 455;
2149 | Big5PFreq[35][12] = 454;
2150 | Big5PFreq[42][156] = 453;
2151 | Big5PFreq[15][157] = 452;
2152 | Big5PFreq[50][140] = 451;
2153 | Big5PFreq[26][28] = 450;
2154 | Big5PFreq[54][51] = 449;
2155 | Big5PFreq[35][112] = 448;
2156 | Big5PFreq[36][116] = 447;
2157 | Big5PFreq[42][11] = 446;
2158 | Big5PFreq[37][172] = 445;
2159 | Big5PFreq[37][29] = 444;
2160 | Big5PFreq[44][107] = 443;
2161 | Big5PFreq[50][17] = 442;
2162 | Big5PFreq[39][107] = 441;
2163 | Big5PFreq[19][109] = 440;
2164 | Big5PFreq[36][60] = 439;
2165 | Big5PFreq[49][132] = 438;
2166 | Big5PFreq[26][16] = 437;
2167 | Big5PFreq[43][155] = 436;
2168 | Big5PFreq[37][120] = 435;
2169 | Big5PFreq[15][159] = 434;
2170 | Big5PFreq[43][6] = 433;
2171 | Big5PFreq[45][188] = 432;
2172 | Big5PFreq[35][38] = 431;
2173 | Big5PFreq[39][143] = 430;
2174 | Big5PFreq[48][144] = 429;
2175 | Big5PFreq[37][168] = 428;
2176 | Big5PFreq[37][1] = 427;
2177 | Big5PFreq[36][109] = 426;
2178 | Big5PFreq[46][53] = 425;
2179 | Big5PFreq[38][54] = 424;
2180 | Big5PFreq[36][0] = 423;
2181 | Big5PFreq[72][33] = 422;
2182 | Big5PFreq[42][8] = 421;
2183 | Big5PFreq[36][31] = 420;
2184 | Big5PFreq[35][150] = 419;
2185 | Big5PFreq[118][93] = 418;
2186 | Big5PFreq[37][61] = 417;
2187 | Big5PFreq[0][85] = 416;
2188 | Big5PFreq[36][27] = 415;
2189 | Big5PFreq[35][134] = 414;
2190 | Big5PFreq[36][145] = 413;
2191 | Big5PFreq[6][96] = 412;
2192 | Big5PFreq[36][14] = 411;
2193 | Big5PFreq[16][36] = 410;
2194 | Big5PFreq[15][175] = 409;
2195 | Big5PFreq[35][10] = 408;
2196 | Big5PFreq[36][189] = 407;
2197 | Big5PFreq[35][51] = 406;
2198 | Big5PFreq[35][109] = 405;
2199 | Big5PFreq[35][147] = 404;
2200 | Big5PFreq[35][180] = 403;
2201 | Big5PFreq[72][5] = 402;
2202 | Big5PFreq[36][107] = 401;
2203 | Big5PFreq[49][116] = 400;
2204 | Big5PFreq[73][30] = 399;
2205 | Big5PFreq[6][90] = 398;
2206 | Big5PFreq[2][70] = 397;
2207 | Big5PFreq[17][141] = 396;
2208 | Big5PFreq[35][62] = 395;
2209 | Big5PFreq[16][180] = 394;
2210 | Big5PFreq[4][91] = 393;
2211 | Big5PFreq[15][171] = 392;
2212 | Big5PFreq[35][177] = 391;
2213 | Big5PFreq[37][173] = 390;
2214 | Big5PFreq[16][121] = 389;
2215 | Big5PFreq[35][5] = 388;
2216 | Big5PFreq[46][122] = 387;
2217 | Big5PFreq[40][138] = 386;
2218 | Big5PFreq[50][49] = 385;
2219 | Big5PFreq[36][152] = 384;
2220 | Big5PFreq[13][43] = 383;
2221 | Big5PFreq[9][88] = 382;
2222 | Big5PFreq[36][159] = 381;
2223 | Big5PFreq[27][62] = 380;
2224 | Big5PFreq[40][18] = 379;
2225 | Big5PFreq[17][129] = 378;
2226 | Big5PFreq[43][97] = 377;
2227 | Big5PFreq[13][131] = 376;
2228 | Big5PFreq[46][107] = 375;
2229 | Big5PFreq[60][64] = 374;
2230 | Big5PFreq[36][179] = 373;
2231 | Big5PFreq[37][55] = 372;
2232 | Big5PFreq[41][173] = 371;
2233 | Big5PFreq[44][172] = 370;
2234 | Big5PFreq[23][187] = 369;
2235 | Big5PFreq[36][149] = 368;
2236 | Big5PFreq[17][125] = 367;
2237 | Big5PFreq[55][180] = 366;
2238 | Big5PFreq[51][129] = 365;
2239 | Big5PFreq[36][51] = 364;
2240 | Big5PFreq[37][122] = 363;
2241 | Big5PFreq[48][32] = 362;
2242 | Big5PFreq[51][99] = 361;
2243 | Big5PFreq[54][16] = 360;
2244 | Big5PFreq[41][183] = 359;
2245 | Big5PFreq[37][179] = 358;
2246 | Big5PFreq[38][179] = 357;
2247 | Big5PFreq[35][143] = 356;
2248 | Big5PFreq[37][24] = 355;
2249 | Big5PFreq[40][177] = 354;
2250 | Big5PFreq[47][117] = 353;
2251 | Big5PFreq[39][52] = 352;
2252 | Big5PFreq[22][99] = 351;
2253 | Big5PFreq[40][142] = 350;
2254 | Big5PFreq[36][49] = 349;
2255 | Big5PFreq[38][17] = 348;
2256 | Big5PFreq[39][188] = 347;
2257 | Big5PFreq[36][186] = 346;
2258 | Big5PFreq[35][189] = 345;
2259 | Big5PFreq[41][7] = 344;
2260 | Big5PFreq[18][91] = 343;
2261 | Big5PFreq[43][137] = 342;
2262 | Big5PFreq[35][142] = 341;
2263 | Big5PFreq[35][117] = 340;
2264 | Big5PFreq[39][138] = 339;
2265 | Big5PFreq[16][59] = 338;
2266 | Big5PFreq[39][174] = 337;
2267 | Big5PFreq[55][145] = 336;
2268 | Big5PFreq[37][21] = 335;
2269 | Big5PFreq[36][180] = 334;
2270 | Big5PFreq[37][156] = 333;
2271 | Big5PFreq[49][13] = 332;
2272 | Big5PFreq[41][107] = 331;
2273 | Big5PFreq[36][56] = 330;
2274 | Big5PFreq[53][8] = 329;
2275 | Big5PFreq[22][114] = 328;
2276 | Big5PFreq[5][95] = 327;
2277 | Big5PFreq[37][0] = 326;
2278 | Big5PFreq[26][183] = 325;
2279 | Big5PFreq[22][66] = 324;
2280 | Big5PFreq[35][58] = 323;
2281 | Big5PFreq[48][117] = 322;
2282 | Big5PFreq[36][102] = 321;
2283 | Big5PFreq[22][122] = 320;
2284 | Big5PFreq[35][11] = 319;
2285 | Big5PFreq[46][19] = 318;
2286 | Big5PFreq[22][49] = 317;
2287 | Big5PFreq[48][166] = 316;
2288 | Big5PFreq[41][125] = 315;
2289 | Big5PFreq[41][1] = 314;
2290 | Big5PFreq[35][178] = 313;
2291 | Big5PFreq[41][12] = 312;
2292 | Big5PFreq[26][167] = 311;
2293 | Big5PFreq[42][152] = 310;
2294 | Big5PFreq[42][46] = 309;
2295 | Big5PFreq[42][151] = 308;
2296 | Big5PFreq[20][135] = 307;
2297 | Big5PFreq[37][162] = 306;
2298 | Big5PFreq[37][50] = 305;
2299 | Big5PFreq[22][185] = 304;
2300 | Big5PFreq[36][166] = 303;
2301 | Big5PFreq[19][40] = 302;
2302 | Big5PFreq[22][107] = 301;
2303 | Big5PFreq[22][102] = 300;
2304 | Big5PFreq[57][162] = 299;
2305 | Big5PFreq[22][124] = 298;
2306 | Big5PFreq[37][138] = 297;
2307 | Big5PFreq[37][25] = 296;
2308 | Big5PFreq[0][69] = 295;
2309 | Big5PFreq[43][172] = 294;
2310 | Big5PFreq[42][167] = 293;
2311 | Big5PFreq[35][120] = 292;
2312 | Big5PFreq[41][128] = 291;
2313 | Big5PFreq[2][88] = 290;
2314 | Big5PFreq[20][123] = 289;
2315 | Big5PFreq[35][123] = 288;
2316 | Big5PFreq[36][28] = 287;
2317 | Big5PFreq[42][188] = 286;
2318 | Big5PFreq[42][164] = 285;
2319 | Big5PFreq[42][4] = 284;
2320 | Big5PFreq[43][57] = 283;
2321 | Big5PFreq[39][3] = 282;
2322 | Big5PFreq[42][3] = 281;
2323 | Big5PFreq[57][158] = 280;
2324 | Big5PFreq[35][146] = 279;
2325 | Big5PFreq[24][54] = 278;
2326 | Big5PFreq[13][110] = 277;
2327 | Big5PFreq[23][132] = 276;
2328 | Big5PFreq[26][102] = 275;
2329 | Big5PFreq[55][178] = 274;
2330 | Big5PFreq[17][117] = 273;
2331 | Big5PFreq[41][161] = 272;
2332 | Big5PFreq[38][150] = 271;
2333 | Big5PFreq[10][71] = 270;
2334 | Big5PFreq[47][60] = 269;
2335 | Big5PFreq[16][114] = 268;
2336 | Big5PFreq[21][47] = 267;
2337 | Big5PFreq[39][101] = 266;
2338 | Big5PFreq[18][45] = 265;
2339 | Big5PFreq[40][121] = 264;
2340 | Big5PFreq[45][41] = 263;
2341 | Big5PFreq[22][167] = 262;
2342 | Big5PFreq[26][149] = 261;
2343 | Big5PFreq[15][189] = 260;
2344 | Big5PFreq[41][177] = 259;
2345 | Big5PFreq[46][36] = 258;
2346 | Big5PFreq[20][40] = 257;
2347 | Big5PFreq[41][54] = 256;
2348 | Big5PFreq[3][87] = 255;
2349 | Big5PFreq[40][16] = 254;
2350 | Big5PFreq[42][15] = 253;
2351 | Big5PFreq[11][83] = 252;
2352 | Big5PFreq[0][94] = 251;
2353 | Big5PFreq[122][81] = 250;
2354 | Big5PFreq[41][26] = 249;
2355 | Big5PFreq[36][34] = 248;
2356 | Big5PFreq[44][148] = 247;
2357 | Big5PFreq[35][3] = 246;
2358 | Big5PFreq[36][114] = 245;
2359 | Big5PFreq[42][112] = 244;
2360 | Big5PFreq[35][183] = 243;
2361 | Big5PFreq[49][73] = 242;
2362 | Big5PFreq[39][2] = 241;
2363 | Big5PFreq[38][121] = 240;
2364 | Big5PFreq[44][114] = 239;
2365 | Big5PFreq[49][32] = 238;
2366 | Big5PFreq[1][65] = 237;
2367 | Big5PFreq[38][25] = 236;
2368 | Big5PFreq[39][4] = 235;
2369 | Big5PFreq[42][62] = 234;
2370 | Big5PFreq[35][40] = 233;
2371 | Big5PFreq[24][2] = 232;
2372 | Big5PFreq[53][49] = 231;
2373 | Big5PFreq[41][133] = 230;
2374 | Big5PFreq[43][134] = 229;
2375 | Big5PFreq[3][83] = 228;
2376 | Big5PFreq[38][158] = 227;
2377 | Big5PFreq[24][17] = 226;
2378 | Big5PFreq[52][59] = 225;
2379 | Big5PFreq[38][41] = 224;
2380 | Big5PFreq[37][127] = 223;
2381 | Big5PFreq[22][175] = 222;
2382 | Big5PFreq[44][30] = 221;
2383 | Big5PFreq[47][178] = 220;
2384 | Big5PFreq[43][99] = 219;
2385 | Big5PFreq[19][4] = 218;
2386 | Big5PFreq[37][97] = 217;
2387 | Big5PFreq[38][181] = 216;
2388 | Big5PFreq[45][103] = 215;
2389 | Big5PFreq[1][86] = 214;
2390 | Big5PFreq[40][15] = 213;
2391 | Big5PFreq[22][136] = 212;
2392 | Big5PFreq[75][165] = 211;
2393 | Big5PFreq[36][15] = 210;
2394 | Big5PFreq[46][80] = 209;
2395 | Big5PFreq[59][55] = 208;
2396 | Big5PFreq[37][108] = 207;
2397 | Big5PFreq[21][109] = 206;
2398 | Big5PFreq[24][165] = 205;
2399 | Big5PFreq[79][158] = 204;
2400 | Big5PFreq[44][139] = 203;
2401 | Big5PFreq[36][124] = 202;
2402 | Big5PFreq[42][185] = 201;
2403 | Big5PFreq[39][186] = 200;
2404 | Big5PFreq[22][128] = 199;
2405 | Big5PFreq[40][44] = 198;
2406 | Big5PFreq[41][105] = 197;
2407 | Big5PFreq[1][70] = 196;
2408 | Big5PFreq[1][68] = 195;
2409 | Big5PFreq[53][22] = 194;
2410 | Big5PFreq[36][54] = 193;
2411 | Big5PFreq[47][147] = 192;
2412 | Big5PFreq[35][36] = 191;
2413 | Big5PFreq[35][185] = 190;
2414 | Big5PFreq[45][37] = 189;
2415 | Big5PFreq[43][163] = 188;
2416 | Big5PFreq[56][115] = 187;
2417 | Big5PFreq[38][164] = 186;
2418 | Big5PFreq[35][141] = 185;
2419 | Big5PFreq[42][132] = 184;
2420 | Big5PFreq[46][120] = 183;
2421 | Big5PFreq[69][142] = 182;
2422 | Big5PFreq[38][175] = 181;
2423 | Big5PFreq[22][112] = 180;
2424 | Big5PFreq[38][142] = 179;
2425 | Big5PFreq[40][37] = 178;
2426 | Big5PFreq[37][109] = 177;
2427 | Big5PFreq[40][144] = 176;
2428 | Big5PFreq[44][117] = 175;
2429 | Big5PFreq[35][181] = 174;
2430 | Big5PFreq[26][105] = 173;
2431 | Big5PFreq[16][48] = 172;
2432 | Big5PFreq[44][122] = 171;
2433 | Big5PFreq[12][86] = 170;
2434 | Big5PFreq[84][53] = 169;
2435 | Big5PFreq[17][44] = 168;
2436 | Big5PFreq[59][54] = 167;
2437 | Big5PFreq[36][98] = 166;
2438 | Big5PFreq[45][115] = 165;
2439 | Big5PFreq[73][9] = 164;
2440 | Big5PFreq[44][123] = 163;
2441 | Big5PFreq[37][188] = 162;
2442 | Big5PFreq[51][117] = 161;
2443 | Big5PFreq[15][156] = 160;
2444 | Big5PFreq[36][155] = 159;
2445 | Big5PFreq[44][25] = 158;
2446 | Big5PFreq[38][12] = 157;
2447 | Big5PFreq[38][140] = 156;
2448 | Big5PFreq[23][4] = 155;
2449 | Big5PFreq[45][149] = 154;
2450 | Big5PFreq[22][189] = 153;
2451 | Big5PFreq[38][147] = 152;
2452 | Big5PFreq[27][5] = 151;
2453 | Big5PFreq[22][42] = 150;
2454 | Big5PFreq[3][68] = 149;
2455 | Big5PFreq[39][51] = 148;
2456 | Big5PFreq[36][29] = 147;
2457 | Big5PFreq[20][108] = 146;
2458 | Big5PFreq[50][57] = 145;
2459 | Big5PFreq[55][104] = 144;
2460 | Big5PFreq[22][46] = 143;
2461 | Big5PFreq[18][164] = 142;
2462 | Big5PFreq[50][159] = 141;
2463 | Big5PFreq[85][131] = 140;
2464 | Big5PFreq[26][79] = 139;
2465 | Big5PFreq[38][100] = 138;
2466 | Big5PFreq[53][112] = 137;
2467 | Big5PFreq[20][190] = 136;
2468 | Big5PFreq[14][69] = 135;
2469 | Big5PFreq[23][11] = 134;
2470 | Big5PFreq[40][114] = 133;
2471 | Big5PFreq[40][148] = 132;
2472 | Big5PFreq[53][130] = 131;
2473 | Big5PFreq[36][2] = 130;
2474 | Big5PFreq[66][82] = 129;
2475 | Big5PFreq[45][166] = 128;
2476 | Big5PFreq[4][88] = 127;
2477 | Big5PFreq[16][57] = 126;
2478 | Big5PFreq[22][116] = 125;
2479 | Big5PFreq[36][108] = 124;
2480 | Big5PFreq[13][48] = 123;
2481 | Big5PFreq[54][12] = 122;
2482 | Big5PFreq[40][136] = 121;
2483 | Big5PFreq[36][128] = 120;
2484 | Big5PFreq[23][6] = 119;
2485 | Big5PFreq[38][125] = 118;
2486 | Big5PFreq[45][154] = 117;
2487 | Big5PFreq[51][127] = 116;
2488 | Big5PFreq[44][163] = 115;
2489 | Big5PFreq[16][173] = 114;
2490 | Big5PFreq[43][49] = 113;
2491 | Big5PFreq[20][112] = 112;
2492 | Big5PFreq[15][168] = 111;
2493 | Big5PFreq[35][129] = 110;
2494 | Big5PFreq[20][45] = 109;
2495 | Big5PFreq[38][10] = 108;
2496 | Big5PFreq[57][171] = 107;
2497 | Big5PFreq[44][190] = 106;
2498 | Big5PFreq[40][56] = 105;
2499 | Big5PFreq[36][156] = 104;
2500 | Big5PFreq[3][88] = 103;
2501 | Big5PFreq[50][122] = 102;
2502 | Big5PFreq[36][7] = 101;
2503 | Big5PFreq[39][43] = 100;
2504 | Big5PFreq[15][166] = 99;
2505 | Big5PFreq[42][136] = 98;
2506 | Big5PFreq[22][131] = 97;
2507 | Big5PFreq[44][23] = 96;
2508 | Big5PFreq[54][147] = 95;
2509 | Big5PFreq[41][32] = 94;
2510 | Big5PFreq[23][121] = 93;
2511 | Big5PFreq[39][108] = 92;
2512 | Big5PFreq[2][78] = 91;
2513 | Big5PFreq[40][155] = 90;
2514 | Big5PFreq[55][51] = 89;
2515 | Big5PFreq[19][34] = 88;
2516 | Big5PFreq[48][128] = 87;
2517 | Big5PFreq[48][159] = 86;
2518 | Big5PFreq[20][70] = 85;
2519 | Big5PFreq[34][71] = 84;
2520 | Big5PFreq[16][31] = 83;
2521 | Big5PFreq[42][157] = 82;
2522 | Big5PFreq[20][44] = 81;
2523 | Big5PFreq[11][92] = 80;
2524 | Big5PFreq[44][180] = 79;
2525 | Big5PFreq[84][33] = 78;
2526 | Big5PFreq[16][116] = 77;
2527 | Big5PFreq[61][163] = 76;
2528 | Big5PFreq[35][164] = 75;
2529 | Big5PFreq[36][42] = 74;
2530 | Big5PFreq[13][40] = 73;
2531 | Big5PFreq[43][176] = 72;
2532 | Big5PFreq[2][66] = 71;
2533 | Big5PFreq[20][133] = 70;
2534 | Big5PFreq[36][65] = 69;
2535 | Big5PFreq[38][33] = 68;
2536 | Big5PFreq[12][91] = 67;
2537 | Big5PFreq[36][26] = 66;
2538 | Big5PFreq[15][174] = 65;
2539 | Big5PFreq[77][32] = 64;
2540 | Big5PFreq[16][1] = 63;
2541 | Big5PFreq[25][86] = 62;
2542 | Big5PFreq[17][13] = 61;
2543 | Big5PFreq[5][75] = 60;
2544 | Big5PFreq[36][52] = 59;
2545 | Big5PFreq[51][164] = 58;
2546 | Big5PFreq[12][85] = 57;
2547 | Big5PFreq[39][168] = 56;
2548 | Big5PFreq[43][16] = 55;
2549 | Big5PFreq[40][69] = 54;
2550 | Big5PFreq[26][108] = 53;
2551 | Big5PFreq[51][56] = 52;
2552 | Big5PFreq[16][37] = 51;
2553 | Big5PFreq[40][29] = 50;
2554 | Big5PFreq[46][171] = 49;
2555 | Big5PFreq[40][128] = 48;
2556 | Big5PFreq[72][114] = 47;
2557 | Big5PFreq[21][103] = 46;
2558 | Big5PFreq[22][44] = 45;
2559 | Big5PFreq[40][115] = 44;
2560 | Big5PFreq[43][7] = 43;
2561 | Big5PFreq[43][153] = 42;
2562 | Big5PFreq[17][20] = 41;
2563 | Big5PFreq[16][49] = 40;
2564 | Big5PFreq[36][57] = 39;
2565 | Big5PFreq[18][38] = 38;
2566 | Big5PFreq[45][184] = 37;
2567 | Big5PFreq[37][167] = 36;
2568 | Big5PFreq[26][106] = 35;
2569 | Big5PFreq[61][121] = 34;
2570 | Big5PFreq[89][140] = 33;
2571 | Big5PFreq[46][61] = 32;
2572 | Big5PFreq[39][163] = 31;
2573 | Big5PFreq[40][62] = 30;
2574 | Big5PFreq[38][165] = 29;
2575 | Big5PFreq[47][37] = 28;
2576 | Big5PFreq[18][155] = 27;
2577 | Big5PFreq[20][33] = 26;
2578 | Big5PFreq[29][90] = 25;
2579 | Big5PFreq[20][103] = 24;
2580 | Big5PFreq[37][51] = 23;
2581 | Big5PFreq[57][0] = 22;
2582 | Big5PFreq[40][31] = 21;
2583 | Big5PFreq[45][32] = 20;
2584 | Big5PFreq[59][23] = 19;
2585 | Big5PFreq[18][47] = 18;
2586 | Big5PFreq[45][134] = 17;
2587 | Big5PFreq[37][59] = 16;
2588 | Big5PFreq[21][128] = 15;
2589 | Big5PFreq[36][106] = 14;
2590 | Big5PFreq[31][39] = 13;
2591 | Big5PFreq[40][182] = 12;
2592 | Big5PFreq[52][155] = 11;
2593 | Big5PFreq[42][166] = 10;
2594 | Big5PFreq[35][27] = 9;
2595 | Big5PFreq[38][3] = 8;
2596 | Big5PFreq[13][44] = 7;
2597 | Big5PFreq[58][157] = 6;
2598 | Big5PFreq[47][51] = 5;
2599 | Big5PFreq[41][37] = 4;
2600 | Big5PFreq[41][172] = 3;
2601 | Big5PFreq[51][165] = 2;
2602 | Big5PFreq[15][161] = 1;
2603 | Big5PFreq[24][181] = 0;
2604 | EUC_TWFreq[48][49] = 599;
2605 | EUC_TWFreq[35][65] = 598;
2606 | EUC_TWFreq[41][27] = 597;
2607 | EUC_TWFreq[35][0] = 596;
2608 | EUC_TWFreq[39][19] = 595;
2609 | EUC_TWFreq[35][42] = 594;
2610 | EUC_TWFreq[38][66] = 593;
2611 | EUC_TWFreq[35][8] = 592;
2612 | EUC_TWFreq[35][6] = 591;
2613 | EUC_TWFreq[35][66] = 590;
2614 | EUC_TWFreq[43][14] = 589;
2615 | EUC_TWFreq[69][80] = 588;
2616 | EUC_TWFreq[50][48] = 587;
2617 | EUC_TWFreq[36][71] = 586;
2618 | EUC_TWFreq[37][10] = 585;
2619 | EUC_TWFreq[60][52] = 584;
2620 | EUC_TWFreq[51][21] = 583;
2621 | EUC_TWFreq[40][2] = 582;
2622 | EUC_TWFreq[67][35] = 581;
2623 | EUC_TWFreq[38][78] = 580;
2624 | EUC_TWFreq[49][18] = 579;
2625 | EUC_TWFreq[35][23] = 578;
2626 | EUC_TWFreq[42][83] = 577;
2627 | EUC_TWFreq[79][47] = 576;
2628 | EUC_TWFreq[61][82] = 575;
2629 | EUC_TWFreq[38][7] = 574;
2630 | EUC_TWFreq[35][29] = 573;
2631 | EUC_TWFreq[37][77] = 572;
2632 | EUC_TWFreq[54][67] = 571;
2633 | EUC_TWFreq[38][80] = 570;
2634 | EUC_TWFreq[52][74] = 569;
2635 | EUC_TWFreq[36][37] = 568;
2636 | EUC_TWFreq[74][8] = 567;
2637 | EUC_TWFreq[41][83] = 566;
2638 | EUC_TWFreq[36][75] = 565;
2639 | EUC_TWFreq[49][63] = 564;
2640 | EUC_TWFreq[42][58] = 563;
2641 | EUC_TWFreq[56][33] = 562;
2642 | EUC_TWFreq[37][76] = 561;
2643 | EUC_TWFreq[62][39] = 560;
2644 | EUC_TWFreq[35][21] = 559;
2645 | EUC_TWFreq[70][19] = 558;
2646 | EUC_TWFreq[77][88] = 557;
2647 | EUC_TWFreq[51][14] = 556;
2648 | EUC_TWFreq[36][17] = 555;
2649 | EUC_TWFreq[44][51] = 554;
2650 | EUC_TWFreq[38][72] = 553;
2651 | EUC_TWFreq[74][90] = 552;
2652 | EUC_TWFreq[35][48] = 551;
2653 | EUC_TWFreq[35][69] = 550;
2654 | EUC_TWFreq[66][86] = 549;
2655 | EUC_TWFreq[57][20] = 548;
2656 | EUC_TWFreq[35][53] = 547;
2657 | EUC_TWFreq[36][87] = 546;
2658 | EUC_TWFreq[84][67] = 545;
2659 | EUC_TWFreq[70][56] = 544;
2660 | EUC_TWFreq[71][54] = 543;
2661 | EUC_TWFreq[60][70] = 542;
2662 | EUC_TWFreq[80][1] = 541;
2663 | EUC_TWFreq[39][59] = 540;
2664 | EUC_TWFreq[39][51] = 539;
2665 | EUC_TWFreq[35][44] = 538;
2666 | EUC_TWFreq[48][4] = 537;
2667 | EUC_TWFreq[55][24] = 536;
2668 | EUC_TWFreq[52][4] = 535;
2669 | EUC_TWFreq[54][26] = 534;
2670 | EUC_TWFreq[36][31] = 533;
2671 | EUC_TWFreq[37][22] = 532;
2672 | EUC_TWFreq[37][9] = 531;
2673 | EUC_TWFreq[46][0] = 530;
2674 | EUC_TWFreq[56][46] = 529;
2675 | EUC_TWFreq[47][93] = 528;
2676 | EUC_TWFreq[37][25] = 527;
2677 | EUC_TWFreq[39][8] = 526;
2678 | EUC_TWFreq[46][73] = 525;
2679 | EUC_TWFreq[38][48] = 524;
2680 | EUC_TWFreq[39][83] = 523;
2681 | EUC_TWFreq[60][92] = 522;
2682 | EUC_TWFreq[70][11] = 521;
2683 | EUC_TWFreq[63][84] = 520;
2684 | EUC_TWFreq[38][65] = 519;
2685 | EUC_TWFreq[45][45] = 518;
2686 | EUC_TWFreq[63][49] = 517;
2687 | EUC_TWFreq[63][50] = 516;
2688 | EUC_TWFreq[39][93] = 515;
2689 | EUC_TWFreq[68][20] = 514;
2690 | EUC_TWFreq[44][84] = 513;
2691 | EUC_TWFreq[66][34] = 512;
2692 | EUC_TWFreq[37][58] = 511;
2693 | EUC_TWFreq[39][0] = 510;
2694 | EUC_TWFreq[59][1] = 509;
2695 | EUC_TWFreq[47][8] = 508;
2696 | EUC_TWFreq[61][17] = 507;
2697 | EUC_TWFreq[53][87] = 506;
2698 | EUC_TWFreq[67][26] = 505;
2699 | EUC_TWFreq[43][46] = 504;
2700 | EUC_TWFreq[38][61] = 503;
2701 | EUC_TWFreq[45][9] = 502;
2702 | EUC_TWFreq[66][83] = 501;
2703 | EUC_TWFreq[43][88] = 500;
2704 | EUC_TWFreq[85][20] = 499;
2705 | EUC_TWFreq[57][36] = 498;
2706 | EUC_TWFreq[43][6] = 497;
2707 | EUC_TWFreq[86][77] = 496;
2708 | EUC_TWFreq[42][70] = 495;
2709 | EUC_TWFreq[49][78] = 494;
2710 | EUC_TWFreq[36][40] = 493;
2711 | EUC_TWFreq[42][71] = 492;
2712 | EUC_TWFreq[58][49] = 491;
2713 | EUC_TWFreq[35][20] = 490;
2714 | EUC_TWFreq[76][20] = 489;
2715 | EUC_TWFreq[39][25] = 488;
2716 | EUC_TWFreq[40][34] = 487;
2717 | EUC_TWFreq[39][76] = 486;
2718 | EUC_TWFreq[40][1] = 485;
2719 | EUC_TWFreq[59][0] = 484;
2720 | EUC_TWFreq[39][70] = 483;
2721 | EUC_TWFreq[46][14] = 482;
2722 | EUC_TWFreq[68][77] = 481;
2723 | EUC_TWFreq[38][55] = 480;
2724 | EUC_TWFreq[35][78] = 479;
2725 | EUC_TWFreq[84][44] = 478;
2726 | EUC_TWFreq[36][41] = 477;
2727 | EUC_TWFreq[37][62] = 476;
2728 | EUC_TWFreq[65][67] = 475;
2729 | EUC_TWFreq[69][66] = 474;
2730 | EUC_TWFreq[73][55] = 473;
2731 | EUC_TWFreq[71][49] = 472;
2732 | EUC_TWFreq[66][87] = 471;
2733 | EUC_TWFreq[38][33] = 470;
2734 | EUC_TWFreq[64][61] = 469;
2735 | EUC_TWFreq[35][7] = 468;
2736 | EUC_TWFreq[47][49] = 467;
2737 | EUC_TWFreq[56][14] = 466;
2738 | EUC_TWFreq[36][49] = 465;
2739 | EUC_TWFreq[50][81] = 464;
2740 | EUC_TWFreq[55][76] = 463;
2741 | EUC_TWFreq[35][19] = 462;
2742 | EUC_TWFreq[44][47] = 461;
2743 | EUC_TWFreq[35][15] = 460;
2744 | EUC_TWFreq[82][59] = 459;
2745 | EUC_TWFreq[35][43] = 458;
2746 | EUC_TWFreq[73][0] = 457;
2747 | EUC_TWFreq[57][83] = 456;
2748 | EUC_TWFreq[42][46] = 455;
2749 | EUC_TWFreq[36][0] = 454;
2750 | EUC_TWFreq[70][88] = 453;
2751 | EUC_TWFreq[42][22] = 452;
2752 | EUC_TWFreq[46][58] = 451;
2753 | EUC_TWFreq[36][34] = 450;
2754 | EUC_TWFreq[39][24] = 449;
2755 | EUC_TWFreq[35][55] = 448;
2756 | EUC_TWFreq[44][91] = 447;
2757 | EUC_TWFreq[37][51] = 446;
2758 | EUC_TWFreq[36][19] = 445;
2759 | EUC_TWFreq[69][90] = 444;
2760 | EUC_TWFreq[55][35] = 443;
2761 | EUC_TWFreq[35][54] = 442;
2762 | EUC_TWFreq[49][61] = 441;
2763 | EUC_TWFreq[36][67] = 440;
2764 | EUC_TWFreq[88][34] = 439;
2765 | EUC_TWFreq[35][17] = 438;
2766 | EUC_TWFreq[65][69] = 437;
2767 | EUC_TWFreq[74][89] = 436;
2768 | EUC_TWFreq[37][31] = 435;
2769 | EUC_TWFreq[43][48] = 434;
2770 | EUC_TWFreq[89][27] = 433;
2771 | EUC_TWFreq[42][79] = 432;
2772 | EUC_TWFreq[69][57] = 431;
2773 | EUC_TWFreq[36][13] = 430;
2774 | EUC_TWFreq[35][62] = 429;
2775 | EUC_TWFreq[65][47] = 428;
2776 | EUC_TWFreq[56][8] = 427;
2777 | EUC_TWFreq[38][79] = 426;
2778 | EUC_TWFreq[37][64] = 425;
2779 | EUC_TWFreq[64][64] = 424;
2780 | EUC_TWFreq[38][53] = 423;
2781 | EUC_TWFreq[38][31] = 422;
2782 | EUC_TWFreq[56][81] = 421;
2783 | EUC_TWFreq[36][22] = 420;
2784 | EUC_TWFreq[43][4] = 419;
2785 | EUC_TWFreq[36][90] = 418;
2786 | EUC_TWFreq[38][62] = 417;
2787 | EUC_TWFreq[66][85] = 416;
2788 | EUC_TWFreq[39][1] = 415;
2789 | EUC_TWFreq[59][40] = 414;
2790 | EUC_TWFreq[58][93] = 413;
2791 | EUC_TWFreq[44][43] = 412;
2792 | EUC_TWFreq[39][49] = 411;
2793 | EUC_TWFreq[64][2] = 410;
2794 | EUC_TWFreq[41][35] = 409;
2795 | EUC_TWFreq[60][22] = 408;
2796 | EUC_TWFreq[35][91] = 407;
2797 | EUC_TWFreq[78][1] = 406;
2798 | EUC_TWFreq[36][14] = 405;
2799 | EUC_TWFreq[82][29] = 404;
2800 | EUC_TWFreq[52][86] = 403;
2801 | EUC_TWFreq[40][16] = 402;
2802 | EUC_TWFreq[91][52] = 401;
2803 | EUC_TWFreq[50][75] = 400;
2804 | EUC_TWFreq[64][30] = 399;
2805 | EUC_TWFreq[90][78] = 398;
2806 | EUC_TWFreq[36][52] = 397;
2807 | EUC_TWFreq[55][87] = 396;
2808 | EUC_TWFreq[57][5] = 395;
2809 | EUC_TWFreq[57][31] = 394;
2810 | EUC_TWFreq[42][35] = 393;
2811 | EUC_TWFreq[69][50] = 392;
2812 | EUC_TWFreq[45][8] = 391;
2813 | EUC_TWFreq[50][87] = 390;
2814 | EUC_TWFreq[69][55] = 389;
2815 | EUC_TWFreq[92][3] = 388;
2816 | EUC_TWFreq[36][43] = 387;
2817 | EUC_TWFreq[64][10] = 386;
2818 | EUC_TWFreq[56][25] = 385;
2819 | EUC_TWFreq[60][68] = 384;
2820 | EUC_TWFreq[51][46] = 383;
2821 | EUC_TWFreq[50][0] = 382;
2822 | EUC_TWFreq[38][30] = 381;
2823 | EUC_TWFreq[50][85] = 380;
2824 | EUC_TWFreq[60][54] = 379;
2825 | EUC_TWFreq[73][6] = 378;
2826 | EUC_TWFreq[73][28] = 377;
2827 | EUC_TWFreq[56][19] = 376;
2828 | EUC_TWFreq[62][69] = 375;
2829 | EUC_TWFreq[81][66] = 374;
2830 | EUC_TWFreq[40][32] = 373;
2831 | EUC_TWFreq[76][31] = 372;
2832 | EUC_TWFreq[35][10] = 371;
2833 | EUC_TWFreq[41][37] = 370;
2834 | EUC_TWFreq[52][82] = 369;
2835 | EUC_TWFreq[91][72] = 368;
2836 | EUC_TWFreq[37][29] = 367;
2837 | EUC_TWFreq[56][30] = 366;
2838 | EUC_TWFreq[37][80] = 365;
2839 | EUC_TWFreq[81][56] = 364;
2840 | EUC_TWFreq[70][3] = 363;
2841 | EUC_TWFreq[76][15] = 362;
2842 | EUC_TWFreq[46][47] = 361;
2843 | EUC_TWFreq[35][88] = 360;
2844 | EUC_TWFreq[61][58] = 359;
2845 | EUC_TWFreq[37][37] = 358;
2846 | EUC_TWFreq[57][22] = 357;
2847 | EUC_TWFreq[41][23] = 356;
2848 | EUC_TWFreq[90][66] = 355;
2849 | EUC_TWFreq[39][60] = 354;
2850 | EUC_TWFreq[38][0] = 353;
2851 | EUC_TWFreq[37][87] = 352;
2852 | EUC_TWFreq[46][2] = 351;
2853 | EUC_TWFreq[38][56] = 350;
2854 | EUC_TWFreq[58][11] = 349;
2855 | EUC_TWFreq[48][10] = 348;
2856 | EUC_TWFreq[74][4] = 347;
2857 | EUC_TWFreq[40][42] = 346;
2858 | EUC_TWFreq[41][52] = 345;
2859 | EUC_TWFreq[61][92] = 344;
2860 | EUC_TWFreq[39][50] = 343;
2861 | EUC_TWFreq[47][88] = 342;
2862 | EUC_TWFreq[88][36] = 341;
2863 | EUC_TWFreq[45][73] = 340;
2864 | EUC_TWFreq[82][3] = 339;
2865 | EUC_TWFreq[61][36] = 338;
2866 | EUC_TWFreq[60][33] = 337;
2867 | EUC_TWFreq[38][27] = 336;
2868 | EUC_TWFreq[35][83] = 335;
2869 | EUC_TWFreq[65][24] = 334;
2870 | EUC_TWFreq[73][10] = 333;
2871 | EUC_TWFreq[41][13] = 332;
2872 | EUC_TWFreq[50][27] = 331;
2873 | EUC_TWFreq[59][50] = 330;
2874 | EUC_TWFreq[42][45] = 329;
2875 | EUC_TWFreq[55][19] = 328;
2876 | EUC_TWFreq[36][77] = 327;
2877 | EUC_TWFreq[69][31] = 326;
2878 | EUC_TWFreq[60][7] = 325;
2879 | EUC_TWFreq[40][88] = 324;
2880 | EUC_TWFreq[57][56] = 323;
2881 | EUC_TWFreq[50][50] = 322;
2882 | EUC_TWFreq[42][37] = 321;
2883 | EUC_TWFreq[38][82] = 320;
2884 | EUC_TWFreq[52][25] = 319;
2885 | EUC_TWFreq[42][67] = 318;
2886 | EUC_TWFreq[48][40] = 317;
2887 | EUC_TWFreq[45][81] = 316;
2888 | EUC_TWFreq[57][14] = 315;
2889 | EUC_TWFreq[42][13] = 314;
2890 | EUC_TWFreq[78][0] = 313;
2891 | EUC_TWFreq[35][51] = 312;
2892 | EUC_TWFreq[41][67] = 311;
2893 | EUC_TWFreq[64][23] = 310;
2894 | EUC_TWFreq[36][65] = 309;
2895 | EUC_TWFreq[48][50] = 308;
2896 | EUC_TWFreq[46][69] = 307;
2897 | EUC_TWFreq[47][89] = 306;
2898 | EUC_TWFreq[41][48] = 305;
2899 | EUC_TWFreq[60][56] = 304;
2900 | EUC_TWFreq[44][82] = 303;
2901 | EUC_TWFreq[47][35] = 302;
2902 | EUC_TWFreq[49][3] = 301;
2903 | EUC_TWFreq[49][69] = 300;
2904 | EUC_TWFreq[45][93] = 299;
2905 | EUC_TWFreq[60][34] = 298;
2906 | EUC_TWFreq[60][82] = 297;
2907 | EUC_TWFreq[61][61] = 296;
2908 | EUC_TWFreq[86][42] = 295;
2909 | EUC_TWFreq[89][60] = 294;
2910 | EUC_TWFreq[48][31] = 293;
2911 | EUC_TWFreq[35][75] = 292;
2912 | EUC_TWFreq[91][39] = 291;
2913 | EUC_TWFreq[53][19] = 290;
2914 | EUC_TWFreq[39][72] = 289;
2915 | EUC_TWFreq[69][59] = 288;
2916 | EUC_TWFreq[41][7] = 287;
2917 | EUC_TWFreq[54][13] = 286;
2918 | EUC_TWFreq[43][28] = 285;
2919 | EUC_TWFreq[36][6] = 284;
2920 | EUC_TWFreq[45][75] = 283;
2921 | EUC_TWFreq[36][61] = 282;
2922 | EUC_TWFreq[38][21] = 281;
2923 | EUC_TWFreq[45][14] = 280;
2924 | EUC_TWFreq[61][43] = 279;
2925 | EUC_TWFreq[36][63] = 278;
2926 | EUC_TWFreq[43][30] = 277;
2927 | EUC_TWFreq[46][51] = 276;
2928 | EUC_TWFreq[68][87] = 275;
2929 | EUC_TWFreq[39][26] = 274;
2930 | EUC_TWFreq[46][76] = 273;
2931 | EUC_TWFreq[36][15] = 272;
2932 | EUC_TWFreq[35][40] = 271;
2933 | EUC_TWFreq[79][60] = 270;
2934 | EUC_TWFreq[46][7] = 269;
2935 | EUC_TWFreq[65][72] = 268;
2936 | EUC_TWFreq[69][88] = 267;
2937 | EUC_TWFreq[47][18] = 266;
2938 | EUC_TWFreq[37][0] = 265;
2939 | EUC_TWFreq[37][49] = 264;
2940 | EUC_TWFreq[67][37] = 263;
2941 | EUC_TWFreq[36][91] = 262;
2942 | EUC_TWFreq[75][48] = 261;
2943 | EUC_TWFreq[75][63] = 260;
2944 | EUC_TWFreq[83][87] = 259;
2945 | EUC_TWFreq[37][44] = 258;
2946 | EUC_TWFreq[73][54] = 257;
2947 | EUC_TWFreq[51][61] = 256;
2948 | EUC_TWFreq[46][57] = 255;
2949 | EUC_TWFreq[55][21] = 254;
2950 | EUC_TWFreq[39][66] = 253;
2951 | EUC_TWFreq[47][11] = 252;
2952 | EUC_TWFreq[52][8] = 251;
2953 | EUC_TWFreq[82][81] = 250;
2954 | EUC_TWFreq[36][57] = 249;
2955 | EUC_TWFreq[38][54] = 248;
2956 | EUC_TWFreq[43][81] = 247;
2957 | EUC_TWFreq[37][42] = 246;
2958 | EUC_TWFreq[40][18] = 245;
2959 | EUC_TWFreq[80][90] = 244;
2960 | EUC_TWFreq[37][84] = 243;
2961 | EUC_TWFreq[57][15] = 242;
2962 | EUC_TWFreq[38][87] = 241;
2963 | EUC_TWFreq[37][32] = 240;
2964 | EUC_TWFreq[53][53] = 239;
2965 | EUC_TWFreq[89][29] = 238;
2966 | EUC_TWFreq[81][53] = 237;
2967 | EUC_TWFreq[75][3] = 236;
2968 | EUC_TWFreq[83][73] = 235;
2969 | EUC_TWFreq[66][13] = 234;
2970 | EUC_TWFreq[48][7] = 233;
2971 | EUC_TWFreq[46][35] = 232;
2972 | EUC_TWFreq[35][86] = 231;
2973 | EUC_TWFreq[37][20] = 230;
2974 | EUC_TWFreq[46][80] = 229;
2975 | EUC_TWFreq[38][24] = 228;
2976 | EUC_TWFreq[41][68] = 227;
2977 | EUC_TWFreq[42][21] = 226;
2978 | EUC_TWFreq[43][32] = 225;
2979 | EUC_TWFreq[38][20] = 224;
2980 | EUC_TWFreq[37][59] = 223;
2981 | EUC_TWFreq[41][77] = 222;
2982 | EUC_TWFreq[59][57] = 221;
2983 | EUC_TWFreq[68][59] = 220;
2984 | EUC_TWFreq[39][43] = 219;
2985 | EUC_TWFreq[54][39] = 218;
2986 | EUC_TWFreq[48][28] = 217;
2987 | EUC_TWFreq[54][28] = 216;
2988 | EUC_TWFreq[41][44] = 215;
2989 | EUC_TWFreq[51][64] = 214;
2990 | EUC_TWFreq[47][72] = 213;
2991 | EUC_TWFreq[62][67] = 212;
2992 | EUC_TWFreq[42][43] = 211;
2993 | EUC_TWFreq[61][38] = 210;
2994 | EUC_TWFreq[76][25] = 209;
2995 | EUC_TWFreq[48][91] = 208;
2996 | EUC_TWFreq[36][36] = 207;
2997 | EUC_TWFreq[80][32] = 206;
2998 | EUC_TWFreq[81][40] = 205;
2999 | EUC_TWFreq[37][5] = 204;
3000 | EUC_TWFreq[74][69] = 203;
3001 | EUC_TWFreq[36][82] = 202;
3002 | EUC_TWFreq[46][59] = 201;
3003 | /*
3004 | * EUC_TWFreq[38][32] = 200; EUC_TWFreq[74][2] = 199; EUC_TWFreq[53][31] = 198; EUC_TWFreq[35][38] = 197; EUC_TWFreq[46][62] =
3005 | * 196; EUC_TWFreq[77][31] = 195; EUC_TWFreq[55][74] = 194; EUC_TWFreq[66][6] = 193; EUC_TWFreq[56][21] = 192;
3006 | * EUC_TWFreq[54][78] = 191; EUC_TWFreq[43][51] = 190; EUC_TWFreq[64][93] = 189; EUC_TWFreq[92][7] = 188; EUC_TWFreq[83][89] =
3007 | * 187; EUC_TWFreq[69][9] = 186; EUC_TWFreq[45][4] = 185; EUC_TWFreq[53][9] = 184; EUC_TWFreq[43][2] = 183;
3008 | * EUC_TWFreq[35][11] = 182; EUC_TWFreq[51][25] = 181; EUC_TWFreq[52][71] = 180; EUC_TWFreq[81][67] = 179;
3009 | * EUC_TWFreq[37][33] = 178; EUC_TWFreq[38][57] = 177; EUC_TWFreq[39][77] = 176; EUC_TWFreq[40][26] = 175;
3010 | * EUC_TWFreq[37][21] = 174; EUC_TWFreq[81][70] = 173; EUC_TWFreq[56][80] = 172; EUC_TWFreq[65][14] = 171;
3011 | * EUC_TWFreq[62][47] = 170; EUC_TWFreq[56][54] = 169; EUC_TWFreq[45][17] = 168; EUC_TWFreq[52][52] = 167;
3012 | * EUC_TWFreq[74][30] = 166; EUC_TWFreq[60][57] = 165; EUC_TWFreq[41][15] = 164; EUC_TWFreq[47][69] = 163;
3013 | * EUC_TWFreq[61][11] = 162; EUC_TWFreq[72][25] = 161; EUC_TWFreq[82][56] = 160; EUC_TWFreq[76][92] = 159;
3014 | * EUC_TWFreq[51][22] = 158; EUC_TWFreq[55][69] = 157; EUC_TWFreq[49][43] = 156; EUC_TWFreq[69][49] = 155;
3015 | * EUC_TWFreq[88][42] = 154; EUC_TWFreq[84][41] = 153; EUC_TWFreq[79][33] = 152; EUC_TWFreq[47][17] = 151;
3016 | * EUC_TWFreq[52][88] = 150; EUC_TWFreq[63][74] = 149; EUC_TWFreq[50][32] = 148; EUC_TWFreq[65][10] = 147; EUC_TWFreq[57][6] =
3017 | * 146; EUC_TWFreq[52][23] = 145; EUC_TWFreq[36][70] = 144; EUC_TWFreq[65][55] = 143; EUC_TWFreq[35][27] = 142;
3018 | * EUC_TWFreq[57][63] = 141; EUC_TWFreq[39][92] = 140; EUC_TWFreq[79][75] = 139; EUC_TWFreq[36][30] = 138;
3019 | * EUC_TWFreq[53][60] = 137; EUC_TWFreq[55][43] = 136; EUC_TWFreq[71][22] = 135; EUC_TWFreq[43][16] = 134;
3020 | * EUC_TWFreq[65][21] = 133; EUC_TWFreq[84][51] = 132; EUC_TWFreq[43][64] = 131; EUC_TWFreq[87][91] = 130;
3021 | * EUC_TWFreq[47][45] = 129; EUC_TWFreq[65][29] = 128; EUC_TWFreq[88][16] = 127; EUC_TWFreq[50][5] = 126; EUC_TWFreq[47][33] =
3022 | * 125; EUC_TWFreq[46][27] = 124; EUC_TWFreq[85][2] = 123; EUC_TWFreq[43][77] = 122; EUC_TWFreq[70][9] = 121;
3023 | * EUC_TWFreq[41][54] = 120; EUC_TWFreq[56][12] = 119; EUC_TWFreq[90][65] = 118; EUC_TWFreq[91][50] = 117;
3024 | * EUC_TWFreq[48][41] = 116; EUC_TWFreq[35][89] = 115; EUC_TWFreq[90][83] = 114; EUC_TWFreq[44][40] = 113;
3025 | * EUC_TWFreq[50][88] = 112; EUC_TWFreq[72][39] = 111; EUC_TWFreq[45][3] = 110; EUC_TWFreq[71][33] = 109; EUC_TWFreq[39][12] =
3026 | * 108; EUC_TWFreq[59][24] = 107; EUC_TWFreq[60][62] = 106; EUC_TWFreq[44][33] = 105; EUC_TWFreq[53][70] = 104;
3027 | * EUC_TWFreq[77][90] = 103; EUC_TWFreq[50][58] = 102; EUC_TWFreq[54][1] = 101; EUC_TWFreq[73][19] = 100; EUC_TWFreq[37][3] =
3028 | * 99; EUC_TWFreq[49][91] = 98; EUC_TWFreq[88][43] = 97; EUC_TWFreq[36][78] = 96; EUC_TWFreq[44][20] = 95;
3029 | * EUC_TWFreq[64][15] = 94; EUC_TWFreq[72][28] = 93; EUC_TWFreq[70][13] = 92; EUC_TWFreq[65][83] = 91; EUC_TWFreq[58][68] =
3030 | * 90; EUC_TWFreq[59][32] = 89; EUC_TWFreq[39][13] = 88; EUC_TWFreq[55][64] = 87; EUC_TWFreq[56][59] = 86;
3031 | * EUC_TWFreq[39][17] = 85; EUC_TWFreq[55][84] = 84; EUC_TWFreq[77][85] = 83; EUC_TWFreq[60][19] = 82; EUC_TWFreq[62][82] =
3032 | * 81; EUC_TWFreq[78][16] = 80; EUC_TWFreq[66][8] = 79; EUC_TWFreq[39][42] = 78; EUC_TWFreq[61][24] = 77; EUC_TWFreq[57][67] =
3033 | * 76; EUC_TWFreq[38][83] = 75; EUC_TWFreq[36][53] = 74; EUC_TWFreq[67][76] = 73; EUC_TWFreq[37][91] = 72;
3034 | * EUC_TWFreq[44][26] = 71; EUC_TWFreq[72][86] = 70; EUC_TWFreq[44][87] = 69; EUC_TWFreq[45][50] = 68; EUC_TWFreq[58][4] =
3035 | * 67; EUC_TWFreq[86][65] = 66; EUC_TWFreq[45][56] = 65; EUC_TWFreq[79][49] = 64; EUC_TWFreq[35][3] = 63; EUC_TWFreq[48][83] =
3036 | * 62; EUC_TWFreq[71][21] = 61; EUC_TWFreq[77][93] = 60; EUC_TWFreq[87][92] = 59; EUC_TWFreq[38][35] = 58;
3037 | * EUC_TWFreq[66][17] = 57; EUC_TWFreq[37][66] = 56; EUC_TWFreq[51][42] = 55; EUC_TWFreq[57][73] = 54; EUC_TWFreq[51][54] =
3038 | * 53; EUC_TWFreq[75][64] = 52; EUC_TWFreq[35][5] = 51; EUC_TWFreq[49][40] = 50; EUC_TWFreq[58][35] = 49; EUC_TWFreq[67][88] =
3039 | * 48; EUC_TWFreq[60][51] = 47; EUC_TWFreq[36][92] = 46; EUC_TWFreq[44][41] = 45; EUC_TWFreq[58][29] = 44;
3040 | * EUC_TWFreq[43][62] = 43; EUC_TWFreq[56][23] = 42; EUC_TWFreq[67][44] = 41; EUC_TWFreq[52][91] = 40; EUC_TWFreq[42][81] =
3041 | * 39; EUC_TWFreq[64][25] = 38; EUC_TWFreq[35][36] = 37; EUC_TWFreq[47][73] = 36; EUC_TWFreq[36][1] = 35; EUC_TWFreq[65][84] =
3042 | * 34; EUC_TWFreq[73][1] = 33; EUC_TWFreq[79][66] = 32; EUC_TWFreq[69][14] = 31; EUC_TWFreq[65][28] = 30; EUC_TWFreq[60][93] =
3043 | * 29; EUC_TWFreq[72][79] = 28; EUC_TWFreq[48][0] = 27; EUC_TWFreq[73][43] = 26; EUC_TWFreq[66][47] = 25; EUC_TWFreq[41][18] =
3044 | * 24; EUC_TWFreq[51][10] = 23; EUC_TWFreq[59][7] = 22; EUC_TWFreq[53][27] = 21; EUC_TWFreq[86][67] = 20; EUC_TWFreq[49][87] =
3045 | * 19; EUC_TWFreq[52][28] = 18; EUC_TWFreq[52][12] = 17; EUC_TWFreq[42][30] = 16; EUC_TWFreq[65][35] = 15;
3046 | * EUC_TWFreq[46][64] = 14; EUC_TWFreq[71][7] = 13; EUC_TWFreq[56][57] = 12; EUC_TWFreq[56][31] = 11; EUC_TWFreq[41][31] =
3047 | * 10; EUC_TWFreq[48][59] = 9; EUC_TWFreq[63][92] = 8; EUC_TWFreq[62][57] = 7; EUC_TWFreq[65][87] = 6; EUC_TWFreq[70][10] =
3048 | * 5; EUC_TWFreq[52][40] = 4; EUC_TWFreq[40][22] = 3; EUC_TWFreq[65][91] = 2; EUC_TWFreq[50][25] = 1; EUC_TWFreq[35][84] =
3049 | * 0;
3050 | */
3051 | GBKFreq[52][132] = 600;
3052 | GBKFreq[73][135] = 599;
3053 | GBKFreq[49][123] = 598;
3054 | GBKFreq[77][146] = 597;
3055 | GBKFreq[81][123] = 596;
3056 | GBKFreq[82][144] = 595;
3057 | GBKFreq[51][179] = 594;
3058 | GBKFreq[83][154] = 593;
3059 | GBKFreq[71][139] = 592;
3060 | GBKFreq[64][139] = 591;
3061 | GBKFreq[85][144] = 590;
3062 | GBKFreq[52][125] = 589;
3063 | GBKFreq[88][25] = 588;
3064 | GBKFreq[81][106] = 587;
3065 | GBKFreq[81][148] = 586;
3066 | GBKFreq[62][137] = 585;
3067 | GBKFreq[94][0] = 584;
3068 | GBKFreq[1][64] = 583;
3069 | GBKFreq[67][163] = 582;
3070 | GBKFreq[20][190] = 581;
3071 | GBKFreq[57][131] = 580;
3072 | GBKFreq[29][169] = 579;
3073 | GBKFreq[72][143] = 578;
3074 | GBKFreq[0][173] = 577;
3075 | GBKFreq[11][23] = 576;
3076 | GBKFreq[61][141] = 575;
3077 | GBKFreq[60][123] = 574;
3078 | GBKFreq[81][114] = 573;
3079 | GBKFreq[82][131] = 572;
3080 | GBKFreq[67][156] = 571;
3081 | GBKFreq[71][167] = 570;
3082 | GBKFreq[20][50] = 569;
3083 | GBKFreq[77][132] = 568;
3084 | GBKFreq[84][38] = 567;
3085 | GBKFreq[26][29] = 566;
3086 | GBKFreq[74][187] = 565;
3087 | GBKFreq[62][116] = 564;
3088 | GBKFreq[67][135] = 563;
3089 | GBKFreq[5][86] = 562;
3090 | GBKFreq[72][186] = 561;
3091 | GBKFreq[75][161] = 560;
3092 | GBKFreq[78][130] = 559;
3093 | GBKFreq[94][30] = 558;
3094 | GBKFreq[84][72] = 557;
3095 | GBKFreq[1][67] = 556;
3096 | GBKFreq[75][172] = 555;
3097 | GBKFreq[74][185] = 554;
3098 | GBKFreq[53][160] = 553;
3099 | GBKFreq[123][14] = 552;
3100 | GBKFreq[79][97] = 551;
3101 | GBKFreq[85][110] = 550;
3102 | GBKFreq[78][171] = 549;
3103 | GBKFreq[52][131] = 548;
3104 | GBKFreq[56][100] = 547;
3105 | GBKFreq[50][182] = 546;
3106 | GBKFreq[94][64] = 545;
3107 | GBKFreq[106][74] = 544;
3108 | GBKFreq[11][102] = 543;
3109 | GBKFreq[53][124] = 542;
3110 | GBKFreq[24][3] = 541;
3111 | GBKFreq[86][148] = 540;
3112 | GBKFreq[53][184] = 539;
3113 | GBKFreq[86][147] = 538;
3114 | GBKFreq[96][161] = 537;
3115 | GBKFreq[82][77] = 536;
3116 | GBKFreq[59][146] = 535;
3117 | GBKFreq[84][126] = 534;
3118 | GBKFreq[79][132] = 533;
3119 | GBKFreq[85][123] = 532;
3120 | GBKFreq[71][101] = 531;
3121 | GBKFreq[85][106] = 530;
3122 | GBKFreq[6][184] = 529;
3123 | GBKFreq[57][156] = 528;
3124 | GBKFreq[75][104] = 527;
3125 | GBKFreq[50][137] = 526;
3126 | GBKFreq[79][133] = 525;
3127 | GBKFreq[76][108] = 524;
3128 | GBKFreq[57][142] = 523;
3129 | GBKFreq[84][130] = 522;
3130 | GBKFreq[52][128] = 521;
3131 | GBKFreq[47][44] = 520;
3132 | GBKFreq[52][152] = 519;
3133 | GBKFreq[54][104] = 518;
3134 | GBKFreq[30][47] = 517;
3135 | GBKFreq[71][123] = 516;
3136 | GBKFreq[52][107] = 515;
3137 | GBKFreq[45][84] = 514;
3138 | GBKFreq[107][118] = 513;
3139 | GBKFreq[5][161] = 512;
3140 | GBKFreq[48][126] = 511;
3141 | GBKFreq[67][170] = 510;
3142 | GBKFreq[43][6] = 509;
3143 | GBKFreq[70][112] = 508;
3144 | GBKFreq[86][174] = 507;
3145 | GBKFreq[84][166] = 506;
3146 | GBKFreq[79][130] = 505;
3147 | GBKFreq[57][141] = 504;
3148 | GBKFreq[81][178] = 503;
3149 | GBKFreq[56][187] = 502;
3150 | GBKFreq[81][162] = 501;
3151 | GBKFreq[53][104] = 500;
3152 | GBKFreq[123][35] = 499;
3153 | GBKFreq[70][169] = 498;
3154 | GBKFreq[69][164] = 497;
3155 | GBKFreq[109][61] = 496;
3156 | GBKFreq[73][130] = 495;
3157 | GBKFreq[62][134] = 494;
3158 | GBKFreq[54][125] = 493;
3159 | GBKFreq[79][105] = 492;
3160 | GBKFreq[70][165] = 491;
3161 | GBKFreq[71][189] = 490;
3162 | GBKFreq[23][147] = 489;
3163 | GBKFreq[51][139] = 488;
3164 | GBKFreq[47][137] = 487;
3165 | GBKFreq[77][123] = 486;
3166 | GBKFreq[86][183] = 485;
3167 | GBKFreq[63][173] = 484;
3168 | GBKFreq[79][144] = 483;
3169 | GBKFreq[84][159] = 482;
3170 | GBKFreq[60][91] = 481;
3171 | GBKFreq[66][187] = 480;
3172 | GBKFreq[73][114] = 479;
3173 | GBKFreq[85][56] = 478;
3174 | GBKFreq[71][149] = 477;
3175 | GBKFreq[84][189] = 476;
3176 | GBKFreq[104][31] = 475;
3177 | GBKFreq[83][82] = 474;
3178 | GBKFreq[68][35] = 473;
3179 | GBKFreq[11][77] = 472;
3180 | GBKFreq[15][155] = 471;
3181 | GBKFreq[83][153] = 470;
3182 | GBKFreq[71][1] = 469;
3183 | GBKFreq[53][190] = 468;
3184 | GBKFreq[50][135] = 467;
3185 | GBKFreq[3][147] = 466;
3186 | GBKFreq[48][136] = 465;
3187 | GBKFreq[66][166] = 464;
3188 | GBKFreq[55][159] = 463;
3189 | GBKFreq[82][150] = 462;
3190 | GBKFreq[58][178] = 461;
3191 | GBKFreq[64][102] = 460;
3192 | GBKFreq[16][106] = 459;
3193 | GBKFreq[68][110] = 458;
3194 | GBKFreq[54][14] = 457;
3195 | GBKFreq[60][140] = 456;
3196 | GBKFreq[91][71] = 455;
3197 | GBKFreq[54][150] = 454;
3198 | GBKFreq[78][177] = 453;
3199 | GBKFreq[78][117] = 452;
3200 | GBKFreq[104][12] = 451;
3201 | GBKFreq[73][150] = 450;
3202 | GBKFreq[51][142] = 449;
3203 | GBKFreq[81][145] = 448;
3204 | GBKFreq[66][183] = 447;
3205 | GBKFreq[51][178] = 446;
3206 | GBKFreq[75][107] = 445;
3207 | GBKFreq[65][119] = 444;
3208 | GBKFreq[69][176] = 443;
3209 | GBKFreq[59][122] = 442;
3210 | GBKFreq[78][160] = 441;
3211 | GBKFreq[85][183] = 440;
3212 | GBKFreq[105][16] = 439;
3213 | GBKFreq[73][110] = 438;
3214 | GBKFreq[104][39] = 437;
3215 | GBKFreq[119][16] = 436;
3216 | GBKFreq[76][162] = 435;
3217 | GBKFreq[67][152] = 434;
3218 | GBKFreq[82][24] = 433;
3219 | GBKFreq[73][121] = 432;
3220 | GBKFreq[83][83] = 431;
3221 | GBKFreq[82][145] = 430;
3222 | GBKFreq[49][133] = 429;
3223 | GBKFreq[94][13] = 428;
3224 | GBKFreq[58][139] = 427;
3225 | GBKFreq[74][189] = 426;
3226 | GBKFreq[66][177] = 425;
3227 | GBKFreq[85][184] = 424;
3228 | GBKFreq[55][183] = 423;
3229 | GBKFreq[71][107] = 422;
3230 | GBKFreq[11][98] = 421;
3231 | GBKFreq[72][153] = 420;
3232 | GBKFreq[2][137] = 419;
3233 | GBKFreq[59][147] = 418;
3234 | GBKFreq[58][152] = 417;
3235 | GBKFreq[55][144] = 416;
3236 | GBKFreq[73][125] = 415;
3237 | GBKFreq[52][154] = 414;
3238 | GBKFreq[70][178] = 413;
3239 | GBKFreq[79][148] = 412;
3240 | GBKFreq[63][143] = 411;
3241 | GBKFreq[50][140] = 410;
3242 | GBKFreq[47][145] = 409;
3243 | GBKFreq[48][123] = 408;
3244 | GBKFreq[56][107] = 407;
3245 | GBKFreq[84][83] = 406;
3246 | GBKFreq[59][112] = 405;
3247 | GBKFreq[124][72] = 404;
3248 | GBKFreq[79][99] = 403;
3249 | GBKFreq[3][37] = 402;
3250 | GBKFreq[114][55] = 401;
3251 | GBKFreq[85][152] = 400;
3252 | GBKFreq[60][47] = 399;
3253 | GBKFreq[65][96] = 398;
3254 | GBKFreq[74][110] = 397;
3255 | GBKFreq[86][182] = 396;
3256 | GBKFreq[50][99] = 395;
3257 | GBKFreq[67][186] = 394;
3258 | GBKFreq[81][74] = 393;
3259 | GBKFreq[80][37] = 392;
3260 | GBKFreq[21][60] = 391;
3261 | GBKFreq[110][12] = 390;
3262 | GBKFreq[60][162] = 389;
3263 | GBKFreq[29][115] = 388;
3264 | GBKFreq[83][130] = 387;
3265 | GBKFreq[52][136] = 386;
3266 | GBKFreq[63][114] = 385;
3267 | GBKFreq[49][127] = 384;
3268 | GBKFreq[83][109] = 383;
3269 | GBKFreq[66][128] = 382;
3270 | GBKFreq[78][136] = 381;
3271 | GBKFreq[81][180] = 380;
3272 | GBKFreq[76][104] = 379;
3273 | GBKFreq[56][156] = 378;
3274 | GBKFreq[61][23] = 377;
3275 | GBKFreq[4][30] = 376;
3276 | GBKFreq[69][154] = 375;
3277 | GBKFreq[100][37] = 374;
3278 | GBKFreq[54][177] = 373;
3279 | GBKFreq[23][119] = 372;
3280 | GBKFreq[71][171] = 371;
3281 | GBKFreq[84][146] = 370;
3282 | GBKFreq[20][184] = 369;
3283 | GBKFreq[86][76] = 368;
3284 | GBKFreq[74][132] = 367;
3285 | GBKFreq[47][97] = 366;
3286 | GBKFreq[82][137] = 365;
3287 | GBKFreq[94][56] = 364;
3288 | GBKFreq[92][30] = 363;
3289 | GBKFreq[19][117] = 362;
3290 | GBKFreq[48][173] = 361;
3291 | GBKFreq[2][136] = 360;
3292 | GBKFreq[7][182] = 359;
3293 | GBKFreq[74][188] = 358;
3294 | GBKFreq[14][132] = 357;
3295 | GBKFreq[62][172] = 356;
3296 | GBKFreq[25][39] = 355;
3297 | GBKFreq[85][129] = 354;
3298 | GBKFreq[64][98] = 353;
3299 | GBKFreq[67][127] = 352;
3300 | GBKFreq[72][167] = 351;
3301 | GBKFreq[57][143] = 350;
3302 | GBKFreq[76][187] = 349;
3303 | GBKFreq[83][181] = 348;
3304 | GBKFreq[84][10] = 347;
3305 | GBKFreq[55][166] = 346;
3306 | GBKFreq[55][188] = 345;
3307 | GBKFreq[13][151] = 344;
3308 | GBKFreq[62][124] = 343;
3309 | GBKFreq[53][136] = 342;
3310 | GBKFreq[106][57] = 341;
3311 | GBKFreq[47][166] = 340;
3312 | GBKFreq[109][30] = 339;
3313 | GBKFreq[78][114] = 338;
3314 | GBKFreq[83][19] = 337;
3315 | GBKFreq[56][162] = 336;
3316 | GBKFreq[60][177] = 335;
3317 | GBKFreq[88][9] = 334;
3318 | GBKFreq[74][163] = 333;
3319 | GBKFreq[52][156] = 332;
3320 | GBKFreq[71][180] = 331;
3321 | GBKFreq[60][57] = 330;
3322 | GBKFreq[72][173] = 329;
3323 | GBKFreq[82][91] = 328;
3324 | GBKFreq[51][186] = 327;
3325 | GBKFreq[75][86] = 326;
3326 | GBKFreq[75][78] = 325;
3327 | GBKFreq[76][170] = 324;
3328 | GBKFreq[60][147] = 323;
3329 | GBKFreq[82][75] = 322;
3330 | GBKFreq[80][148] = 321;
3331 | GBKFreq[86][150] = 320;
3332 | GBKFreq[13][95] = 319;
3333 | GBKFreq[0][11] = 318;
3334 | GBKFreq[84][190] = 317;
3335 | GBKFreq[76][166] = 316;
3336 | GBKFreq[14][72] = 315;
3337 | GBKFreq[67][144] = 314;
3338 | GBKFreq[84][44] = 313;
3339 | GBKFreq[72][125] = 312;
3340 | GBKFreq[66][127] = 311;
3341 | GBKFreq[60][25] = 310;
3342 | GBKFreq[70][146] = 309;
3343 | GBKFreq[79][135] = 308;
3344 | GBKFreq[54][135] = 307;
3345 | GBKFreq[60][104] = 306;
3346 | GBKFreq[55][132] = 305;
3347 | GBKFreq[94][2] = 304;
3348 | GBKFreq[54][133] = 303;
3349 | GBKFreq[56][190] = 302;
3350 | GBKFreq[58][174] = 301;
3351 | GBKFreq[80][144] = 300;
3352 | GBKFreq[85][113] = 299;
3353 | /*
3354 | * GBKFreq[83][15] = 298; GBKFreq[105][80] = 297; GBKFreq[7][179] = 296; GBKFreq[93][4] = 295; GBKFreq[123][40] = 294;
3355 | * GBKFreq[85][120] = 293; GBKFreq[77][165] = 292; GBKFreq[86][67] = 291; GBKFreq[25][162] = 290; GBKFreq[77][183] = 289;
3356 | * GBKFreq[83][71] = 288; GBKFreq[78][99] = 287; GBKFreq[72][177] = 286; GBKFreq[71][97] = 285; GBKFreq[58][111] = 284;
3357 | * GBKFreq[77][175] = 283; GBKFreq[76][181] = 282; GBKFreq[71][142] = 281; GBKFreq[64][150] = 280; GBKFreq[5][142] = 279;
3358 | * GBKFreq[73][128] = 278; GBKFreq[73][156] = 277; GBKFreq[60][188] = 276; GBKFreq[64][56] = 275; GBKFreq[74][128] = 274;
3359 | * GBKFreq[48][163] = 273; GBKFreq[54][116] = 272; GBKFreq[73][127] = 271; GBKFreq[16][176] = 270; GBKFreq[62][149] = 269;
3360 | * GBKFreq[105][96] = 268; GBKFreq[55][186] = 267; GBKFreq[4][51] = 266; GBKFreq[48][113] = 265; GBKFreq[48][152] = 264;
3361 | * GBKFreq[23][9] = 263; GBKFreq[56][102] = 262; GBKFreq[11][81] = 261; GBKFreq[82][112] = 260; GBKFreq[65][85] = 259;
3362 | * GBKFreq[69][125] = 258; GBKFreq[68][31] = 257; GBKFreq[5][20] = 256; GBKFreq[60][176] = 255; GBKFreq[82][81] = 254;
3363 | * GBKFreq[72][107] = 253; GBKFreq[3][52] = 252; GBKFreq[71][157] = 251; GBKFreq[24][46] = 250; GBKFreq[69][108] = 249;
3364 | * GBKFreq[78][178] = 248; GBKFreq[9][69] = 247; GBKFreq[73][144] = 246; GBKFreq[63][187] = 245; GBKFreq[68][36] = 244;
3365 | * GBKFreq[47][151] = 243; GBKFreq[14][74] = 242; GBKFreq[47][114] = 241; GBKFreq[80][171] = 240; GBKFreq[75][152] = 239;
3366 | * GBKFreq[86][40] = 238; GBKFreq[93][43] = 237; GBKFreq[2][50] = 236; GBKFreq[62][66] = 235; GBKFreq[1][183] = 234;
3367 | * GBKFreq[74][124] = 233; GBKFreq[58][104] = 232; GBKFreq[83][106] = 231; GBKFreq[60][144] = 230; GBKFreq[48][99] = 229;
3368 | * GBKFreq[54][157] = 228; GBKFreq[70][179] = 227; GBKFreq[61][127] = 226; GBKFreq[57][135] = 225; GBKFreq[59][190] = 224;
3369 | * GBKFreq[77][116] = 223; GBKFreq[26][17] = 222; GBKFreq[60][13] = 221; GBKFreq[71][38] = 220; GBKFreq[85][177] = 219;
3370 | * GBKFreq[59][73] = 218; GBKFreq[50][150] = 217; GBKFreq[79][102] = 216; GBKFreq[76][118] = 215; GBKFreq[67][132] = 214;
3371 | * GBKFreq[73][146] = 213; GBKFreq[83][184] = 212; GBKFreq[86][159] = 211; GBKFreq[95][120] = 210; GBKFreq[23][139] = 209;
3372 | * GBKFreq[64][183] = 208; GBKFreq[85][103] = 207; GBKFreq[41][90] = 206; GBKFreq[87][72] = 205; GBKFreq[62][104] = 204;
3373 | * GBKFreq[79][168] = 203; GBKFreq[79][150] = 202; GBKFreq[104][20] = 201; GBKFreq[56][114] = 200; GBKFreq[84][26] = 199;
3374 | * GBKFreq[57][99] = 198; GBKFreq[62][154] = 197; GBKFreq[47][98] = 196; GBKFreq[61][64] = 195; GBKFreq[112][18] = 194;
3375 | * GBKFreq[123][19] = 193; GBKFreq[4][98] = 192; GBKFreq[47][163] = 191; GBKFreq[66][188] = 190; GBKFreq[81][85] = 189;
3376 | * GBKFreq[82][30] = 188; GBKFreq[65][83] = 187; GBKFreq[67][24] = 186; GBKFreq[68][179] = 185; GBKFreq[55][177] = 184;
3377 | * GBKFreq[2][122] = 183; GBKFreq[47][139] = 182; GBKFreq[79][158] = 181; GBKFreq[64][143] = 180; GBKFreq[100][24] = 179;
3378 | * GBKFreq[73][103] = 178; GBKFreq[50][148] = 177; GBKFreq[86][97] = 176; GBKFreq[59][116] = 175; GBKFreq[64][173] = 174;
3379 | * GBKFreq[99][91] = 173; GBKFreq[11][99] = 172; GBKFreq[78][179] = 171; GBKFreq[18][17] = 170; GBKFreq[58][185] = 169;
3380 | * GBKFreq[47][165] = 168; GBKFreq[67][131] = 167; GBKFreq[94][40] = 166; GBKFreq[74][153] = 165; GBKFreq[79][142] = 164;
3381 | * GBKFreq[57][98] = 163; GBKFreq[1][164] = 162; GBKFreq[55][168] = 161; GBKFreq[13][141] = 160; GBKFreq[51][31] = 159;
3382 | * GBKFreq[57][178] = 158; GBKFreq[50][189] = 157; GBKFreq[60][167] = 156; GBKFreq[80][34] = 155; GBKFreq[109][80] = 154;
3383 | * GBKFreq[85][54] = 153; GBKFreq[69][183] = 152; GBKFreq[67][143] = 151; GBKFreq[47][120] = 150; GBKFreq[45][75] = 149;
3384 | * GBKFreq[82][98] = 148; GBKFreq[83][22] = 147; GBKFreq[13][103] = 146; GBKFreq[49][174] = 145; GBKFreq[57][181] = 144;
3385 | * GBKFreq[64][127] = 143; GBKFreq[61][131] = 142; GBKFreq[52][180] = 141; GBKFreq[74][134] = 140; GBKFreq[84][187] = 139;
3386 | * GBKFreq[81][189] = 138; GBKFreq[47][160] = 137; GBKFreq[66][148] = 136; GBKFreq[7][4] = 135; GBKFreq[85][134] = 134;
3387 | * GBKFreq[88][13] = 133; GBKFreq[88][80] = 132; GBKFreq[69][166] = 131; GBKFreq[86][18] = 130; GBKFreq[79][141] = 129;
3388 | * GBKFreq[50][108] = 128; GBKFreq[94][69] = 127; GBKFreq[81][110] = 126; GBKFreq[69][119] = 125; GBKFreq[72][161] = 124;
3389 | * GBKFreq[106][45] = 123; GBKFreq[73][124] = 122; GBKFreq[94][28] = 121; GBKFreq[63][174] = 120; GBKFreq[3][149] = 119;
3390 | * GBKFreq[24][160] = 118; GBKFreq[113][94] = 117; GBKFreq[56][138] = 116; GBKFreq[64][185] = 115; GBKFreq[86][56] = 114;
3391 | * GBKFreq[56][150] = 113; GBKFreq[110][55] = 112; GBKFreq[28][13] = 111; GBKFreq[54][190] = 110; GBKFreq[8][180] = 109;
3392 | * GBKFreq[73][149] = 108; GBKFreq[80][155] = 107; GBKFreq[83][172] = 106; GBKFreq[67][174] = 105; GBKFreq[64][180] = 104;
3393 | * GBKFreq[84][46] = 103; GBKFreq[91][74] = 102; GBKFreq[69][134] = 101; GBKFreq[61][107] = 100; GBKFreq[47][171] = 99;
3394 | * GBKFreq[59][51] = 98; GBKFreq[109][74] = 97; GBKFreq[64][174] = 96; GBKFreq[52][151] = 95; GBKFreq[51][176] = 94;
3395 | * GBKFreq[80][157] = 93; GBKFreq[94][31] = 92; GBKFreq[79][155] = 91; GBKFreq[72][174] = 90; GBKFreq[69][113] = 89;
3396 | * GBKFreq[83][167] = 88; GBKFreq[83][122] = 87; GBKFreq[8][178] = 86; GBKFreq[70][186] = 85; GBKFreq[59][153] = 84;
3397 | * GBKFreq[84][68] = 83; GBKFreq[79][39] = 82; GBKFreq[47][180] = 81; GBKFreq[88][53] = 80; GBKFreq[57][154] = 79;
3398 | * GBKFreq[47][153] = 78; GBKFreq[3][153] = 77; GBKFreq[76][134] = 76; GBKFreq[51][166] = 75; GBKFreq[58][176] = 74;
3399 | * GBKFreq[27][138] = 73; GBKFreq[73][126] = 72; GBKFreq[76][185] = 71; GBKFreq[52][186] = 70; GBKFreq[81][151] = 69;
3400 | * GBKFreq[26][50] = 68; GBKFreq[76][173] = 67; GBKFreq[106][56] = 66; GBKFreq[85][142] = 65; GBKFreq[11][103] = 64;
3401 | * GBKFreq[69][159] = 63; GBKFreq[53][142] = 62; GBKFreq[7][6] = 61; GBKFreq[84][59] = 60; GBKFreq[86][3] = 59;
3402 | * GBKFreq[64][144] = 58; GBKFreq[1][187] = 57; GBKFreq[82][128] = 56; GBKFreq[3][66] = 55; GBKFreq[68][133] = 54;
3403 | * GBKFreq[55][167] = 53; GBKFreq[52][130] = 52; GBKFreq[61][133] = 51; GBKFreq[72][181] = 50; GBKFreq[25][98] = 49;
3404 | * GBKFreq[84][149] = 48; GBKFreq[91][91] = 47; GBKFreq[47][188] = 46; GBKFreq[68][130] = 45; GBKFreq[22][44] = 44;
3405 | * GBKFreq[81][121] = 43; GBKFreq[72][140] = 42; GBKFreq[55][133] = 41; GBKFreq[55][185] = 40; GBKFreq[56][105] = 39;
3406 | * GBKFreq[60][30] = 38; GBKFreq[70][103] = 37; GBKFreq[62][141] = 36; GBKFreq[70][144] = 35; GBKFreq[59][111] = 34;
3407 | * GBKFreq[54][17] = 33; GBKFreq[18][190] = 32; GBKFreq[65][164] = 31; GBKFreq[83][125] = 30; GBKFreq[61][121] = 29;
3408 | * GBKFreq[48][13] = 28; GBKFreq[51][189] = 27; GBKFreq[65][68] = 26; GBKFreq[7][0] = 25; GBKFreq[76][188] = 24;
3409 | * GBKFreq[85][117] = 23; GBKFreq[45][33] = 22; GBKFreq[78][187] = 21; GBKFreq[106][48] = 20; GBKFreq[59][52] = 19;
3410 | * GBKFreq[86][185] = 18; GBKFreq[84][121] = 17; GBKFreq[82][189] = 16; GBKFreq[68][156] = 15; GBKFreq[55][125] = 14;
3411 | * GBKFreq[65][175] = 13; GBKFreq[7][140] = 12; GBKFreq[50][106] = 11; GBKFreq[59][124] = 10; GBKFreq[67][115] = 9;
3412 | * GBKFreq[82][114] = 8; GBKFreq[74][121] = 7; GBKFreq[106][69] = 6; GBKFreq[94][27] = 5; GBKFreq[78][98] = 4;
3413 | * GBKFreq[85][186] = 3; GBKFreq[108][90] = 2; GBKFreq[62][160] = 1; GBKFreq[60][169] = 0;
3414 | */
3415 | KRFreq[31][43] = 600;
3416 | KRFreq[19][56] = 599;
3417 | KRFreq[38][46] = 598;
3418 | KRFreq[3][3] = 597;
3419 | KRFreq[29][77] = 596;
3420 | KRFreq[19][33] = 595;
3421 | KRFreq[30][0] = 594;
3422 | KRFreq[29][89] = 593;
3423 | KRFreq[31][26] = 592;
3424 | KRFreq[31][38] = 591;
3425 | KRFreq[32][85] = 590;
3426 | KRFreq[15][0] = 589;
3427 | KRFreq[16][54] = 588;
3428 | KRFreq[15][76] = 587;
3429 | KRFreq[31][25] = 586;
3430 | KRFreq[23][13] = 585;
3431 | KRFreq[28][34] = 584;
3432 | KRFreq[18][9] = 583;
3433 | KRFreq[29][37] = 582;
3434 | KRFreq[22][45] = 581;
3435 | KRFreq[19][46] = 580;
3436 | KRFreq[16][65] = 579;
3437 | KRFreq[23][5] = 578;
3438 | KRFreq[26][70] = 577;
3439 | KRFreq[31][53] = 576;
3440 | KRFreq[27][12] = 575;
3441 | KRFreq[30][67] = 574;
3442 | KRFreq[31][57] = 573;
3443 | KRFreq[20][20] = 572;
3444 | KRFreq[30][31] = 571;
3445 | KRFreq[20][72] = 570;
3446 | KRFreq[15][51] = 569;
3447 | KRFreq[3][8] = 568;
3448 | KRFreq[32][53] = 567;
3449 | KRFreq[27][85] = 566;
3450 | KRFreq[25][23] = 565;
3451 | KRFreq[15][44] = 564;
3452 | KRFreq[32][3] = 563;
3453 | KRFreq[31][68] = 562;
3454 | KRFreq[30][24] = 561;
3455 | KRFreq[29][49] = 560;
3456 | KRFreq[27][49] = 559;
3457 | KRFreq[23][23] = 558;
3458 | KRFreq[31][91] = 557;
3459 | KRFreq[31][46] = 556;
3460 | KRFreq[19][74] = 555;
3461 | KRFreq[27][27] = 554;
3462 | KRFreq[3][17] = 553;
3463 | KRFreq[20][38] = 552;
3464 | KRFreq[21][82] = 551;
3465 | KRFreq[28][25] = 550;
3466 | KRFreq[32][5] = 549;
3467 | KRFreq[31][23] = 548;
3468 | KRFreq[25][45] = 547;
3469 | KRFreq[32][87] = 546;
3470 | KRFreq[18][26] = 545;
3471 | KRFreq[24][10] = 544;
3472 | KRFreq[26][82] = 543;
3473 | KRFreq[15][89] = 542;
3474 | KRFreq[28][36] = 541;
3475 | KRFreq[28][31] = 540;
3476 | KRFreq[16][23] = 539;
3477 | KRFreq[16][77] = 538;
3478 | KRFreq[19][84] = 537;
3479 | KRFreq[23][72] = 536;
3480 | KRFreq[38][48] = 535;
3481 | KRFreq[23][2] = 534;
3482 | KRFreq[30][20] = 533;
3483 | KRFreq[38][47] = 532;
3484 | KRFreq[39][12] = 531;
3485 | KRFreq[23][21] = 530;
3486 | KRFreq[18][17] = 529;
3487 | KRFreq[30][87] = 528;
3488 | KRFreq[29][62] = 527;
3489 | KRFreq[29][87] = 526;
3490 | KRFreq[34][53] = 525;
3491 | KRFreq[32][29] = 524;
3492 | KRFreq[35][0] = 523;
3493 | KRFreq[24][43] = 522;
3494 | KRFreq[36][44] = 521;
3495 | KRFreq[20][30] = 520;
3496 | KRFreq[39][86] = 519;
3497 | KRFreq[22][14] = 518;
3498 | KRFreq[29][39] = 517;
3499 | KRFreq[28][38] = 516;
3500 | KRFreq[23][79] = 515;
3501 | KRFreq[24][56] = 514;
3502 | KRFreq[29][63] = 513;
3503 | KRFreq[31][45] = 512;
3504 | KRFreq[23][26] = 511;
3505 | KRFreq[15][87] = 510;
3506 | KRFreq[30][74] = 509;
3507 | KRFreq[24][69] = 508;
3508 | KRFreq[20][4] = 507;
3509 | KRFreq[27][50] = 506;
3510 | KRFreq[30][75] = 505;
3511 | KRFreq[24][13] = 504;
3512 | KRFreq[30][8] = 503;
3513 | KRFreq[31][6] = 502;
3514 | KRFreq[25][80] = 501;
3515 | KRFreq[36][8] = 500;
3516 | KRFreq[15][18] = 499;
3517 | KRFreq[39][23] = 498;
3518 | KRFreq[16][24] = 497;
3519 | KRFreq[31][89] = 496;
3520 | KRFreq[15][71] = 495;
3521 | KRFreq[15][57] = 494;
3522 | KRFreq[30][11] = 493;
3523 | KRFreq[15][36] = 492;
3524 | KRFreq[16][60] = 491;
3525 | KRFreq[24][45] = 490;
3526 | KRFreq[37][35] = 489;
3527 | KRFreq[24][87] = 488;
3528 | KRFreq[20][45] = 487;
3529 | KRFreq[31][90] = 486;
3530 | KRFreq[32][21] = 485;
3531 | KRFreq[19][70] = 484;
3532 | KRFreq[24][15] = 483;
3533 | KRFreq[26][92] = 482;
3534 | KRFreq[37][13] = 481;
3535 | KRFreq[39][2] = 480;
3536 | KRFreq[23][70] = 479;
3537 | KRFreq[27][25] = 478;
3538 | KRFreq[15][69] = 477;
3539 | KRFreq[19][61] = 476;
3540 | KRFreq[31][58] = 475;
3541 | KRFreq[24][57] = 474;
3542 | KRFreq[36][74] = 473;
3543 | KRFreq[21][6] = 472;
3544 | KRFreq[30][44] = 471;
3545 | KRFreq[15][91] = 470;
3546 | KRFreq[27][16] = 469;
3547 | KRFreq[29][42] = 468;
3548 | KRFreq[33][86] = 467;
3549 | KRFreq[29][41] = 466;
3550 | KRFreq[20][68] = 465;
3551 | KRFreq[25][47] = 464;
3552 | KRFreq[22][0] = 463;
3553 | KRFreq[18][14] = 462;
3554 | KRFreq[31][28] = 461;
3555 | KRFreq[15][2] = 460;
3556 | KRFreq[23][76] = 459;
3557 | KRFreq[38][32] = 458;
3558 | KRFreq[29][82] = 457;
3559 | KRFreq[21][86] = 456;
3560 | KRFreq[24][62] = 455;
3561 | KRFreq[31][64] = 454;
3562 | KRFreq[38][26] = 453;
3563 | KRFreq[32][86] = 452;
3564 | KRFreq[22][32] = 451;
3565 | KRFreq[19][59] = 450;
3566 | KRFreq[34][18] = 449;
3567 | KRFreq[18][54] = 448;
3568 | KRFreq[38][63] = 447;
3569 | KRFreq[36][23] = 446;
3570 | KRFreq[35][35] = 445;
3571 | KRFreq[32][62] = 444;
3572 | KRFreq[28][35] = 443;
3573 | KRFreq[27][13] = 442;
3574 | KRFreq[31][59] = 441;
3575 | KRFreq[29][29] = 440;
3576 | KRFreq[15][64] = 439;
3577 | KRFreq[26][84] = 438;
3578 | KRFreq[21][90] = 437;
3579 | KRFreq[20][24] = 436;
3580 | KRFreq[16][18] = 435;
3581 | KRFreq[22][23] = 434;
3582 | KRFreq[31][14] = 433;
3583 | KRFreq[15][1] = 432;
3584 | KRFreq[18][63] = 431;
3585 | KRFreq[19][10] = 430;
3586 | KRFreq[25][49] = 429;
3587 | KRFreq[36][57] = 428;
3588 | KRFreq[20][22] = 427;
3589 | KRFreq[15][15] = 426;
3590 | KRFreq[31][51] = 425;
3591 | KRFreq[24][60] = 424;
3592 | KRFreq[31][70] = 423;
3593 | KRFreq[15][7] = 422;
3594 | KRFreq[28][40] = 421;
3595 | KRFreq[18][41] = 420;
3596 | KRFreq[15][38] = 419;
3597 | KRFreq[32][0] = 418;
3598 | KRFreq[19][51] = 417;
3599 | KRFreq[34][62] = 416;
3600 | KRFreq[16][27] = 415;
3601 | KRFreq[20][70] = 414;
3602 | KRFreq[22][33] = 413;
3603 | KRFreq[26][73] = 412;
3604 | KRFreq[20][79] = 411;
3605 | KRFreq[23][6] = 410;
3606 | KRFreq[24][85] = 409;
3607 | KRFreq[38][51] = 408;
3608 | KRFreq[29][88] = 407;
3609 | KRFreq[38][55] = 406;
3610 | KRFreq[32][32] = 405;
3611 | KRFreq[27][18] = 404;
3612 | KRFreq[23][87] = 403;
3613 | KRFreq[35][6] = 402;
3614 | KRFreq[34][27] = 401;
3615 | KRFreq[39][35] = 400;
3616 | KRFreq[30][88] = 399;
3617 | KRFreq[32][92] = 398;
3618 | KRFreq[32][49] = 397;
3619 | KRFreq[24][61] = 396;
3620 | KRFreq[18][74] = 395;
3621 | KRFreq[23][77] = 394;
3622 | KRFreq[23][50] = 393;
3623 | KRFreq[23][32] = 392;
3624 | KRFreq[23][36] = 391;
3625 | KRFreq[38][38] = 390;
3626 | KRFreq[29][86] = 389;
3627 | KRFreq[36][15] = 388;
3628 | KRFreq[31][50] = 387;
3629 | KRFreq[15][86] = 386;
3630 | KRFreq[39][13] = 385;
3631 | KRFreq[34][26] = 384;
3632 | KRFreq[19][34] = 383;
3633 | KRFreq[16][3] = 382;
3634 | KRFreq[26][93] = 381;
3635 | KRFreq[19][67] = 380;
3636 | KRFreq[24][72] = 379;
3637 | KRFreq[29][17] = 378;
3638 | KRFreq[23][24] = 377;
3639 | KRFreq[25][19] = 376;
3640 | KRFreq[18][65] = 375;
3641 | KRFreq[30][78] = 374;
3642 | KRFreq[27][52] = 373;
3643 | KRFreq[22][18] = 372;
3644 | KRFreq[16][38] = 371;
3645 | KRFreq[21][26] = 370;
3646 | KRFreq[34][20] = 369;
3647 | KRFreq[15][42] = 368;
3648 | KRFreq[16][71] = 367;
3649 | KRFreq[17][17] = 366;
3650 | KRFreq[24][71] = 365;
3651 | KRFreq[18][84] = 364;
3652 | KRFreq[15][40] = 363;
3653 | KRFreq[31][62] = 362;
3654 | KRFreq[15][8] = 361;
3655 | KRFreq[16][69] = 360;
3656 | KRFreq[29][79] = 359;
3657 | KRFreq[38][91] = 358;
3658 | KRFreq[31][92] = 357;
3659 | KRFreq[20][77] = 356;
3660 | KRFreq[3][16] = 355;
3661 | KRFreq[27][87] = 354;
3662 | KRFreq[16][25] = 353;
3663 | KRFreq[36][33] = 352;
3664 | KRFreq[37][76] = 351;
3665 | KRFreq[30][12] = 350;
3666 | KRFreq[26][75] = 349;
3667 | KRFreq[25][14] = 348;
3668 | KRFreq[32][26] = 347;
3669 | KRFreq[23][22] = 346;
3670 | KRFreq[20][90] = 345;
3671 | KRFreq[19][8] = 344;
3672 | KRFreq[38][41] = 343;
3673 | KRFreq[34][2] = 342;
3674 | KRFreq[39][4] = 341;
3675 | KRFreq[27][89] = 340;
3676 | KRFreq[28][41] = 339;
3677 | KRFreq[28][44] = 338;
3678 | KRFreq[24][92] = 337;
3679 | KRFreq[34][65] = 336;
3680 | KRFreq[39][14] = 335;
3681 | KRFreq[21][38] = 334;
3682 | KRFreq[19][31] = 333;
3683 | KRFreq[37][39] = 332;
3684 | KRFreq[33][41] = 331;
3685 | KRFreq[38][4] = 330;
3686 | KRFreq[23][80] = 329;
3687 | KRFreq[25][24] = 328;
3688 | KRFreq[37][17] = 327;
3689 | KRFreq[22][16] = 326;
3690 | KRFreq[22][46] = 325;
3691 | KRFreq[33][91] = 324;
3692 | KRFreq[24][89] = 323;
3693 | KRFreq[30][52] = 322;
3694 | KRFreq[29][38] = 321;
3695 | KRFreq[38][85] = 320;
3696 | KRFreq[15][12] = 319;
3697 | KRFreq[27][58] = 318;
3698 | KRFreq[29][52] = 317;
3699 | KRFreq[37][38] = 316;
3700 | KRFreq[34][41] = 315;
3701 | KRFreq[31][65] = 314;
3702 | KRFreq[29][53] = 313;
3703 | KRFreq[22][47] = 312;
3704 | KRFreq[22][19] = 311;
3705 | KRFreq[26][0] = 310;
3706 | KRFreq[37][86] = 309;
3707 | KRFreq[35][4] = 308;
3708 | KRFreq[36][54] = 307;
3709 | KRFreq[20][76] = 306;
3710 | KRFreq[30][9] = 305;
3711 | KRFreq[30][33] = 304;
3712 | KRFreq[23][17] = 303;
3713 | KRFreq[23][33] = 302;
3714 | KRFreq[38][52] = 301;
3715 | KRFreq[15][19] = 300;
3716 | KRFreq[28][45] = 299;
3717 | KRFreq[29][78] = 298;
3718 | KRFreq[23][15] = 297;
3719 | KRFreq[33][5] = 296;
3720 | KRFreq[17][40] = 295;
3721 | KRFreq[30][83] = 294;
3722 | KRFreq[18][1] = 293;
3723 | KRFreq[30][81] = 292;
3724 | KRFreq[19][40] = 291;
3725 | KRFreq[24][47] = 290;
3726 | KRFreq[17][56] = 289;
3727 | KRFreq[39][80] = 288;
3728 | KRFreq[30][46] = 287;
3729 | KRFreq[16][61] = 286;
3730 | KRFreq[26][78] = 285;
3731 | KRFreq[26][57] = 284;
3732 | KRFreq[20][46] = 283;
3733 | KRFreq[25][15] = 282;
3734 | KRFreq[25][91] = 281;
3735 | KRFreq[21][83] = 280;
3736 | KRFreq[30][77] = 279;
3737 | KRFreq[35][30] = 278;
3738 | KRFreq[30][34] = 277;
3739 | KRFreq[20][69] = 276;
3740 | KRFreq[35][10] = 275;
3741 | KRFreq[29][70] = 274;
3742 | KRFreq[22][50] = 273;
3743 | KRFreq[18][0] = 272;
3744 | KRFreq[22][64] = 271;
3745 | KRFreq[38][65] = 270;
3746 | KRFreq[22][70] = 269;
3747 | KRFreq[24][58] = 268;
3748 | KRFreq[19][66] = 267;
3749 | KRFreq[30][59] = 266;
3750 | KRFreq[37][14] = 265;
3751 | KRFreq[16][56] = 264;
3752 | KRFreq[29][85] = 263;
3753 | KRFreq[31][15] = 262;
3754 | KRFreq[36][84] = 261;
3755 | KRFreq[39][15] = 260;
3756 | KRFreq[39][90] = 259;
3757 | KRFreq[18][12] = 258;
3758 | KRFreq[21][93] = 257;
3759 | KRFreq[24][66] = 256;
3760 | KRFreq[27][90] = 255;
3761 | KRFreq[25][90] = 254;
3762 | KRFreq[22][24] = 253;
3763 | KRFreq[36][67] = 252;
3764 | KRFreq[33][90] = 251;
3765 | KRFreq[15][60] = 250;
3766 | KRFreq[23][85] = 249;
3767 | KRFreq[34][1] = 248;
3768 | KRFreq[39][37] = 247;
3769 | KRFreq[21][18] = 246;
3770 | KRFreq[34][4] = 245;
3771 | KRFreq[28][33] = 244;
3772 | KRFreq[15][13] = 243;
3773 | KRFreq[32][22] = 242;
3774 | KRFreq[30][76] = 241;
3775 | KRFreq[20][21] = 240;
3776 | KRFreq[38][66] = 239;
3777 | KRFreq[32][55] = 238;
3778 | KRFreq[32][89] = 237;
3779 | KRFreq[25][26] = 236;
3780 | KRFreq[16][80] = 235;
3781 | KRFreq[15][43] = 234;
3782 | KRFreq[38][54] = 233;
3783 | KRFreq[39][68] = 232;
3784 | KRFreq[22][88] = 231;
3785 | KRFreq[21][84] = 230;
3786 | KRFreq[21][17] = 229;
3787 | KRFreq[20][28] = 228;
3788 | KRFreq[32][1] = 227;
3789 | KRFreq[33][87] = 226;
3790 | KRFreq[38][71] = 225;
3791 | KRFreq[37][47] = 224;
3792 | KRFreq[18][77] = 223;
3793 | KRFreq[37][58] = 222;
3794 | KRFreq[34][74] = 221;
3795 | KRFreq[32][54] = 220;
3796 | KRFreq[27][33] = 219;
3797 | KRFreq[32][93] = 218;
3798 | KRFreq[23][51] = 217;
3799 | KRFreq[20][57] = 216;
3800 | KRFreq[22][37] = 215;
3801 | KRFreq[39][10] = 214;
3802 | KRFreq[39][17] = 213;
3803 | KRFreq[33][4] = 212;
3804 | KRFreq[32][84] = 211;
3805 | KRFreq[34][3] = 210;
3806 | KRFreq[28][27] = 209;
3807 | KRFreq[15][79] = 208;
3808 | KRFreq[34][21] = 207;
3809 | KRFreq[34][69] = 206;
3810 | KRFreq[21][62] = 205;
3811 | KRFreq[36][24] = 204;
3812 | KRFreq[16][89] = 203;
3813 | KRFreq[18][48] = 202;
3814 | KRFreq[38][15] = 201;
3815 | KRFreq[36][58] = 200;
3816 | KRFreq[21][56] = 199;
3817 | KRFreq[34][48] = 198;
3818 | KRFreq[21][15] = 197;
3819 | KRFreq[39][3] = 196;
3820 | KRFreq[16][44] = 195;
3821 | KRFreq[18][79] = 194;
3822 | KRFreq[25][13] = 193;
3823 | KRFreq[29][47] = 192;
3824 | KRFreq[38][88] = 191;
3825 | KRFreq[20][71] = 190;
3826 | KRFreq[16][58] = 189;
3827 | KRFreq[35][57] = 188;
3828 | KRFreq[29][30] = 187;
3829 | KRFreq[29][23] = 186;
3830 | KRFreq[34][93] = 185;
3831 | KRFreq[30][85] = 184;
3832 | KRFreq[15][80] = 183;
3833 | KRFreq[32][78] = 182;
3834 | KRFreq[37][82] = 181;
3835 | KRFreq[22][40] = 180;
3836 | KRFreq[21][69] = 179;
3837 | KRFreq[26][85] = 178;
3838 | KRFreq[31][31] = 177;
3839 | KRFreq[28][64] = 176;
3840 | KRFreq[38][13] = 175;
3841 | KRFreq[25][2] = 174;
3842 | KRFreq[22][34] = 173;
3843 | KRFreq[28][28] = 172;
3844 | KRFreq[24][91] = 171;
3845 | KRFreq[33][74] = 170;
3846 | KRFreq[29][40] = 169;
3847 | KRFreq[15][77] = 168;
3848 | KRFreq[32][80] = 167;
3849 | KRFreq[30][41] = 166;
3850 | KRFreq[23][30] = 165;
3851 | KRFreq[24][63] = 164;
3852 | KRFreq[30][53] = 163;
3853 | KRFreq[39][70] = 162;
3854 | KRFreq[23][61] = 161;
3855 | KRFreq[37][27] = 160;
3856 | KRFreq[16][55] = 159;
3857 | KRFreq[22][74] = 158;
3858 | KRFreq[26][50] = 157;
3859 | KRFreq[16][10] = 156;
3860 | KRFreq[34][63] = 155;
3861 | KRFreq[35][14] = 154;
3862 | KRFreq[17][7] = 153;
3863 | KRFreq[15][59] = 152;
3864 | KRFreq[27][23] = 151;
3865 | KRFreq[18][70] = 150;
3866 | KRFreq[32][56] = 149;
3867 | KRFreq[37][87] = 148;
3868 | KRFreq[17][61] = 147;
3869 | KRFreq[18][83] = 146;
3870 | KRFreq[23][86] = 145;
3871 | KRFreq[17][31] = 144;
3872 | KRFreq[23][83] = 143;
3873 | KRFreq[35][2] = 142;
3874 | KRFreq[18][64] = 141;
3875 | KRFreq[27][43] = 140;
3876 | KRFreq[32][42] = 139;
3877 | KRFreq[25][76] = 138;
3878 | KRFreq[19][85] = 137;
3879 | KRFreq[37][81] = 136;
3880 | KRFreq[38][83] = 135;
3881 | KRFreq[35][7] = 134;
3882 | KRFreq[16][51] = 133;
3883 | KRFreq[27][22] = 132;
3884 | KRFreq[16][76] = 131;
3885 | KRFreq[22][4] = 130;
3886 | KRFreq[38][84] = 129;
3887 | KRFreq[17][83] = 128;
3888 | KRFreq[24][46] = 127;
3889 | KRFreq[33][15] = 126;
3890 | KRFreq[20][48] = 125;
3891 | KRFreq[17][30] = 124;
3892 | KRFreq[30][93] = 123;
3893 | KRFreq[28][11] = 122;
3894 | KRFreq[28][30] = 121;
3895 | KRFreq[15][62] = 120;
3896 | KRFreq[17][87] = 119;
3897 | KRFreq[32][81] = 118;
3898 | KRFreq[23][37] = 117;
3899 | KRFreq[30][22] = 116;
3900 | KRFreq[32][66] = 115;
3901 | KRFreq[33][78] = 114;
3902 | KRFreq[21][4] = 113;
3903 | KRFreq[31][17] = 112;
3904 | KRFreq[39][61] = 111;
3905 | KRFreq[18][76] = 110;
3906 | KRFreq[15][85] = 109;
3907 | KRFreq[31][47] = 108;
3908 | KRFreq[19][57] = 107;
3909 | KRFreq[23][55] = 106;
3910 | KRFreq[27][29] = 105;
3911 | KRFreq[29][46] = 104;
3912 | KRFreq[33][0] = 103;
3913 | KRFreq[16][83] = 102;
3914 | KRFreq[39][78] = 101;
3915 | KRFreq[32][77] = 100;
3916 | KRFreq[36][25] = 99;
3917 | KRFreq[34][19] = 98;
3918 | KRFreq[38][49] = 97;
3919 | KRFreq[19][25] = 96;
3920 | KRFreq[23][53] = 95;
3921 | KRFreq[28][43] = 94;
3922 | KRFreq[31][44] = 93;
3923 | KRFreq[36][34] = 92;
3924 | KRFreq[16][34] = 91;
3925 | KRFreq[35][1] = 90;
3926 | KRFreq[19][87] = 89;
3927 | KRFreq[18][53] = 88;
3928 | KRFreq[29][54] = 87;
3929 | KRFreq[22][41] = 86;
3930 | KRFreq[38][18] = 85;
3931 | KRFreq[22][2] = 84;
3932 | KRFreq[20][3] = 83;
3933 | KRFreq[39][69] = 82;
3934 | KRFreq[30][29] = 81;
3935 | KRFreq[28][19] = 80;
3936 | KRFreq[29][90] = 79;
3937 | KRFreq[17][86] = 78;
3938 | KRFreq[15][9] = 77;
3939 | KRFreq[39][73] = 76;
3940 | KRFreq[15][37] = 75;
3941 | KRFreq[35][40] = 74;
3942 | KRFreq[33][77] = 73;
3943 | KRFreq[27][86] = 72;
3944 | KRFreq[36][79] = 71;
3945 | KRFreq[23][18] = 70;
3946 | KRFreq[34][87] = 69;
3947 | KRFreq[39][24] = 68;
3948 | KRFreq[26][8] = 67;
3949 | KRFreq[33][48] = 66;
3950 | KRFreq[39][30] = 65;
3951 | KRFreq[33][28] = 64;
3952 | KRFreq[16][67] = 63;
3953 | KRFreq[31][78] = 62;
3954 | KRFreq[32][23] = 61;
3955 | KRFreq[24][55] = 60;
3956 | KRFreq[30][68] = 59;
3957 | KRFreq[18][60] = 58;
3958 | KRFreq[15][17] = 57;
3959 | KRFreq[23][34] = 56;
3960 | KRFreq[20][49] = 55;
3961 | KRFreq[15][78] = 54;
3962 | KRFreq[24][14] = 53;
3963 | KRFreq[19][41] = 52;
3964 | KRFreq[31][55] = 51;
3965 | KRFreq[21][39] = 50;
3966 | KRFreq[35][9] = 49;
3967 | KRFreq[30][15] = 48;
3968 | KRFreq[20][52] = 47;
3969 | KRFreq[35][71] = 46;
3970 | KRFreq[20][7] = 45;
3971 | KRFreq[29][72] = 44;
3972 | KRFreq[37][77] = 43;
3973 | KRFreq[22][35] = 42;
3974 | KRFreq[20][61] = 41;
3975 | KRFreq[31][60] = 40;
3976 | KRFreq[20][93] = 39;
3977 | KRFreq[27][92] = 38;
3978 | KRFreq[28][16] = 37;
3979 | KRFreq[36][26] = 36;
3980 | KRFreq[18][89] = 35;
3981 | KRFreq[21][63] = 34;
3982 | KRFreq[22][52] = 33;
3983 | KRFreq[24][65] = 32;
3984 | KRFreq[31][8] = 31;
3985 | KRFreq[31][49] = 30;
3986 | KRFreq[33][30] = 29;
3987 | KRFreq[37][15] = 28;
3988 | KRFreq[18][18] = 27;
3989 | KRFreq[25][50] = 26;
3990 | KRFreq[29][20] = 25;
3991 | KRFreq[35][48] = 24;
3992 | KRFreq[38][75] = 23;
3993 | KRFreq[26][83] = 22;
3994 | KRFreq[21][87] = 21;
3995 | KRFreq[27][71] = 20;
3996 | KRFreq[32][91] = 19;
3997 | KRFreq[25][73] = 18;
3998 | KRFreq[16][84] = 17;
3999 | KRFreq[25][31] = 16;
4000 | KRFreq[17][90] = 15;
4001 | KRFreq[18][40] = 14;
4002 | KRFreq[17][77] = 13;
4003 | KRFreq[17][35] = 12;
4004 | KRFreq[23][52] = 11;
4005 | KRFreq[23][35] = 10;
4006 | KRFreq[16][5] = 9;
4007 | KRFreq[23][58] = 8;
4008 | KRFreq[19][60] = 7;
4009 | KRFreq[30][32] = 6;
4010 | KRFreq[38][34] = 5;
4011 | KRFreq[23][4] = 4;
4012 | KRFreq[23][1] = 3;
4013 | KRFreq[27][57] = 2;
4014 | KRFreq[39][38] = 1;
4015 | KRFreq[32][33] = 0;
4016 | JPFreq[3][74] = 600;
4017 | JPFreq[3][45] = 599;
4018 | JPFreq[3][3] = 598;
4019 | JPFreq[3][24] = 597;
4020 | JPFreq[3][30] = 596;
4021 | JPFreq[3][42] = 595;
4022 | JPFreq[3][46] = 594;
4023 | JPFreq[3][39] = 593;
4024 | JPFreq[3][11] = 592;
4025 | JPFreq[3][37] = 591;
4026 | JPFreq[3][38] = 590;
4027 | JPFreq[3][31] = 589;
4028 | JPFreq[3][41] = 588;
4029 | JPFreq[3][5] = 587;
4030 | JPFreq[3][10] = 586;
4031 | JPFreq[3][75] = 585;
4032 | JPFreq[3][65] = 584;
4033 | JPFreq[3][72] = 583;
4034 | JPFreq[37][91] = 582;
4035 | JPFreq[0][27] = 581;
4036 | JPFreq[3][18] = 580;
4037 | JPFreq[3][22] = 579;
4038 | JPFreq[3][61] = 578;
4039 | JPFreq[3][14] = 577;
4040 | JPFreq[24][80] = 576;
4041 | JPFreq[4][82] = 575;
4042 | JPFreq[17][80] = 574;
4043 | JPFreq[30][44] = 573;
4044 | JPFreq[3][73] = 572;
4045 | JPFreq[3][64] = 571;
4046 | JPFreq[38][14] = 570;
4047 | JPFreq[33][70] = 569;
4048 | JPFreq[3][1] = 568;
4049 | JPFreq[3][16] = 567;
4050 | JPFreq[3][35] = 566;
4051 | JPFreq[3][40] = 565;
4052 | JPFreq[4][74] = 564;
4053 | JPFreq[4][24] = 563;
4054 | JPFreq[42][59] = 562;
4055 | JPFreq[3][7] = 561;
4056 | JPFreq[3][71] = 560;
4057 | JPFreq[3][12] = 559;
4058 | JPFreq[15][75] = 558;
4059 | JPFreq[3][20] = 557;
4060 | JPFreq[4][39] = 556;
4061 | JPFreq[34][69] = 555;
4062 | JPFreq[3][28] = 554;
4063 | JPFreq[35][24] = 553;
4064 | JPFreq[3][82] = 552;
4065 | JPFreq[28][47] = 551;
4066 | JPFreq[3][67] = 550;
4067 | JPFreq[37][16] = 549;
4068 | JPFreq[26][93] = 548;
4069 | JPFreq[4][1] = 547;
4070 | JPFreq[26][85] = 546;
4071 | JPFreq[31][14] = 545;
4072 | JPFreq[4][3] = 544;
4073 | JPFreq[4][72] = 543;
4074 | JPFreq[24][51] = 542;
4075 | JPFreq[27][51] = 541;
4076 | JPFreq[27][49] = 540;
4077 | JPFreq[22][77] = 539;
4078 | JPFreq[27][10] = 538;
4079 | JPFreq[29][68] = 537;
4080 | JPFreq[20][35] = 536;
4081 | JPFreq[41][11] = 535;
4082 | JPFreq[24][70] = 534;
4083 | JPFreq[36][61] = 533;
4084 | JPFreq[31][23] = 532;
4085 | JPFreq[43][16] = 531;
4086 | JPFreq[23][68] = 530;
4087 | JPFreq[32][15] = 529;
4088 | JPFreq[3][32] = 528;
4089 | JPFreq[19][53] = 527;
4090 | JPFreq[40][83] = 526;
4091 | JPFreq[4][14] = 525;
4092 | JPFreq[36][9] = 524;
4093 | JPFreq[4][73] = 523;
4094 | JPFreq[23][10] = 522;
4095 | JPFreq[3][63] = 521;
4096 | JPFreq[39][14] = 520;
4097 | JPFreq[3][78] = 519;
4098 | JPFreq[33][47] = 518;
4099 | JPFreq[21][39] = 517;
4100 | JPFreq[34][46] = 516;
4101 | JPFreq[36][75] = 515;
4102 | JPFreq[41][92] = 514;
4103 | JPFreq[37][93] = 513;
4104 | JPFreq[4][34] = 512;
4105 | JPFreq[15][86] = 511;
4106 | JPFreq[46][1] = 510;
4107 | JPFreq[37][65] = 509;
4108 | JPFreq[3][62] = 508;
4109 | JPFreq[32][73] = 507;
4110 | JPFreq[21][65] = 506;
4111 | JPFreq[29][75] = 505;
4112 | JPFreq[26][51] = 504;
4113 | JPFreq[3][34] = 503;
4114 | JPFreq[4][10] = 502;
4115 | JPFreq[30][22] = 501;
4116 | JPFreq[35][73] = 500;
4117 | JPFreq[17][82] = 499;
4118 | JPFreq[45][8] = 498;
4119 | JPFreq[27][73] = 497;
4120 | JPFreq[18][55] = 496;
4121 | JPFreq[25][2] = 495;
4122 | JPFreq[3][26] = 494;
4123 | JPFreq[45][46] = 493;
4124 | JPFreq[4][22] = 492;
4125 | JPFreq[4][40] = 491;
4126 | JPFreq[18][10] = 490;
4127 | JPFreq[32][9] = 489;
4128 | JPFreq[26][49] = 488;
4129 | JPFreq[3][47] = 487;
4130 | JPFreq[24][65] = 486;
4131 | JPFreq[4][76] = 485;
4132 | JPFreq[43][67] = 484;
4133 | JPFreq[3][9] = 483;
4134 | JPFreq[41][37] = 482;
4135 | JPFreq[33][68] = 481;
4136 | JPFreq[43][31] = 480;
4137 | JPFreq[19][55] = 479;
4138 | JPFreq[4][30] = 478;
4139 | JPFreq[27][33] = 477;
4140 | JPFreq[16][62] = 476;
4141 | JPFreq[36][35] = 475;
4142 | JPFreq[37][15] = 474;
4143 | JPFreq[27][70] = 473;
4144 | JPFreq[22][71] = 472;
4145 | JPFreq[33][45] = 471;
4146 | JPFreq[31][78] = 470;
4147 | JPFreq[43][59] = 469;
4148 | JPFreq[32][19] = 468;
4149 | JPFreq[17][28] = 467;
4150 | JPFreq[40][28] = 466;
4151 | JPFreq[20][93] = 465;
4152 | JPFreq[18][15] = 464;
4153 | JPFreq[4][23] = 463;
4154 | JPFreq[3][23] = 462;
4155 | JPFreq[26][64] = 461;
4156 | JPFreq[44][92] = 460;
4157 | JPFreq[17][27] = 459;
4158 | JPFreq[3][56] = 458;
4159 | JPFreq[25][38] = 457;
4160 | JPFreq[23][31] = 456;
4161 | JPFreq[35][43] = 455;
4162 | JPFreq[4][54] = 454;
4163 | JPFreq[35][19] = 453;
4164 | JPFreq[22][47] = 452;
4165 | JPFreq[42][0] = 451;
4166 | JPFreq[23][28] = 450;
4167 | JPFreq[46][33] = 449;
4168 | JPFreq[36][85] = 448;
4169 | JPFreq[31][12] = 447;
4170 | JPFreq[3][76] = 446;
4171 | JPFreq[4][75] = 445;
4172 | JPFreq[36][56] = 444;
4173 | JPFreq[4][64] = 443;
4174 | JPFreq[25][77] = 442;
4175 | JPFreq[15][52] = 441;
4176 | JPFreq[33][73] = 440;
4177 | JPFreq[3][55] = 439;
4178 | JPFreq[43][82] = 438;
4179 | JPFreq[27][82] = 437;
4180 | JPFreq[20][3] = 436;
4181 | JPFreq[40][51] = 435;
4182 | JPFreq[3][17] = 434;
4183 | JPFreq[27][71] = 433;
4184 | JPFreq[4][52] = 432;
4185 | JPFreq[44][48] = 431;
4186 | JPFreq[27][2] = 430;
4187 | JPFreq[17][39] = 429;
4188 | JPFreq[31][8] = 428;
4189 | JPFreq[44][54] = 427;
4190 | JPFreq[43][18] = 426;
4191 | JPFreq[43][77] = 425;
4192 | JPFreq[4][61] = 424;
4193 | JPFreq[19][91] = 423;
4194 | JPFreq[31][13] = 422;
4195 | JPFreq[44][71] = 421;
4196 | JPFreq[20][0] = 420;
4197 | JPFreq[23][87] = 419;
4198 | JPFreq[21][14] = 418;
4199 | JPFreq[29][13] = 417;
4200 | JPFreq[3][58] = 416;
4201 | JPFreq[26][18] = 415;
4202 | JPFreq[4][47] = 414;
4203 | JPFreq[4][18] = 413;
4204 | JPFreq[3][53] = 412;
4205 | JPFreq[26][92] = 411;
4206 | JPFreq[21][7] = 410;
4207 | JPFreq[4][37] = 409;
4208 | JPFreq[4][63] = 408;
4209 | JPFreq[36][51] = 407;
4210 | JPFreq[4][32] = 406;
4211 | JPFreq[28][73] = 405;
4212 | JPFreq[4][50] = 404;
4213 | JPFreq[41][60] = 403;
4214 | JPFreq[23][1] = 402;
4215 | JPFreq[36][92] = 401;
4216 | JPFreq[15][41] = 400;
4217 | JPFreq[21][71] = 399;
4218 | JPFreq[41][30] = 398;
4219 | JPFreq[32][76] = 397;
4220 | JPFreq[17][34] = 396;
4221 | JPFreq[26][15] = 395;
4222 | JPFreq[26][25] = 394;
4223 | JPFreq[31][77] = 393;
4224 | JPFreq[31][3] = 392;
4225 | JPFreq[46][34] = 391;
4226 | JPFreq[27][84] = 390;
4227 | JPFreq[23][8] = 389;
4228 | JPFreq[16][0] = 388;
4229 | JPFreq[28][80] = 387;
4230 | JPFreq[26][54] = 386;
4231 | JPFreq[33][18] = 385;
4232 | JPFreq[31][20] = 384;
4233 | JPFreq[31][62] = 383;
4234 | JPFreq[30][41] = 382;
4235 | JPFreq[33][30] = 381;
4236 | JPFreq[45][45] = 380;
4237 | JPFreq[37][82] = 379;
4238 | JPFreq[15][33] = 378;
4239 | JPFreq[20][12] = 377;
4240 | JPFreq[18][5] = 376;
4241 | JPFreq[28][86] = 375;
4242 | JPFreq[30][19] = 374;
4243 | JPFreq[42][43] = 373;
4244 | JPFreq[36][31] = 372;
4245 | JPFreq[17][93] = 371;
4246 | JPFreq[4][15] = 370;
4247 | JPFreq[21][20] = 369;
4248 | JPFreq[23][21] = 368;
4249 | JPFreq[28][72] = 367;
4250 | JPFreq[4][20] = 366;
4251 | JPFreq[26][55] = 365;
4252 | JPFreq[21][5] = 364;
4253 | JPFreq[19][16] = 363;
4254 | JPFreq[23][64] = 362;
4255 | JPFreq[40][59] = 361;
4256 | JPFreq[37][26] = 360;
4257 | JPFreq[26][56] = 359;
4258 | JPFreq[4][12] = 358;
4259 | JPFreq[33][71] = 357;
4260 | JPFreq[32][39] = 356;
4261 | JPFreq[38][40] = 355;
4262 | JPFreq[22][74] = 354;
4263 | JPFreq[3][25] = 353;
4264 | JPFreq[15][48] = 352;
4265 | JPFreq[41][82] = 351;
4266 | JPFreq[41][9] = 350;
4267 | JPFreq[25][48] = 349;
4268 | JPFreq[31][71] = 348;
4269 | JPFreq[43][29] = 347;
4270 | JPFreq[26][80] = 346;
4271 | JPFreq[4][5] = 345;
4272 | JPFreq[18][71] = 344;
4273 | JPFreq[29][0] = 343;
4274 | JPFreq[43][43] = 342;
4275 | JPFreq[23][81] = 341;
4276 | JPFreq[4][42] = 340;
4277 | JPFreq[44][28] = 339;
4278 | JPFreq[23][93] = 338;
4279 | JPFreq[17][81] = 337;
4280 | JPFreq[25][25] = 336;
4281 | JPFreq[41][23] = 335;
4282 | JPFreq[34][35] = 334;
4283 | JPFreq[4][53] = 333;
4284 | JPFreq[28][36] = 332;
4285 | JPFreq[4][41] = 331;
4286 | JPFreq[25][60] = 330;
4287 | JPFreq[23][20] = 329;
4288 | JPFreq[3][43] = 328;
4289 | JPFreq[24][79] = 327;
4290 | JPFreq[29][41] = 326;
4291 | JPFreq[30][83] = 325;
4292 | JPFreq[3][50] = 324;
4293 | JPFreq[22][18] = 323;
4294 | JPFreq[18][3] = 322;
4295 | JPFreq[39][30] = 321;
4296 | JPFreq[4][28] = 320;
4297 | JPFreq[21][64] = 319;
4298 | JPFreq[4][68] = 318;
4299 | JPFreq[17][71] = 317;
4300 | JPFreq[27][0] = 316;
4301 | JPFreq[39][28] = 315;
4302 | JPFreq[30][13] = 314;
4303 | JPFreq[36][70] = 313;
4304 | JPFreq[20][82] = 312;
4305 | JPFreq[33][38] = 311;
4306 | JPFreq[44][87] = 310;
4307 | JPFreq[34][45] = 309;
4308 | JPFreq[4][26] = 308;
4309 | JPFreq[24][44] = 307;
4310 | JPFreq[38][67] = 306;
4311 | JPFreq[38][6] = 305;
4312 | JPFreq[30][68] = 304;
4313 | JPFreq[15][89] = 303;
4314 | JPFreq[24][93] = 302;
4315 | JPFreq[40][41] = 301;
4316 | JPFreq[38][3] = 300;
4317 | JPFreq[28][23] = 299;
4318 | JPFreq[26][17] = 298;
4319 | JPFreq[4][38] = 297;
4320 | JPFreq[22][78] = 296;
4321 | JPFreq[15][37] = 295;
4322 | JPFreq[25][85] = 294;
4323 | JPFreq[4][9] = 293;
4324 | JPFreq[4][7] = 292;
4325 | JPFreq[27][53] = 291;
4326 | JPFreq[39][29] = 290;
4327 | JPFreq[41][43] = 289;
4328 | JPFreq[25][62] = 288;
4329 | JPFreq[4][48] = 287;
4330 | JPFreq[28][28] = 286;
4331 | JPFreq[21][40] = 285;
4332 | JPFreq[36][73] = 284;
4333 | JPFreq[26][39] = 283;
4334 | JPFreq[22][54] = 282;
4335 | JPFreq[33][5] = 281;
4336 | JPFreq[19][21] = 280;
4337 | JPFreq[46][31] = 279;
4338 | JPFreq[20][64] = 278;
4339 | JPFreq[26][63] = 277;
4340 | JPFreq[22][23] = 276;
4341 | JPFreq[25][81] = 275;
4342 | JPFreq[4][62] = 274;
4343 | JPFreq[37][31] = 273;
4344 | JPFreq[40][52] = 272;
4345 | JPFreq[29][79] = 271;
4346 | JPFreq[41][48] = 270;
4347 | JPFreq[31][57] = 269;
4348 | JPFreq[32][92] = 268;
4349 | JPFreq[36][36] = 267;
4350 | JPFreq[27][7] = 266;
4351 | JPFreq[35][29] = 265;
4352 | JPFreq[37][34] = 264;
4353 | JPFreq[34][42] = 263;
4354 | JPFreq[27][15] = 262;
4355 | JPFreq[33][27] = 261;
4356 | JPFreq[31][38] = 260;
4357 | JPFreq[19][79] = 259;
4358 | JPFreq[4][31] = 258;
4359 | JPFreq[4][66] = 257;
4360 | JPFreq[17][32] = 256;
4361 | JPFreq[26][67] = 255;
4362 | JPFreq[16][30] = 254;
4363 | JPFreq[26][46] = 253;
4364 | JPFreq[24][26] = 252;
4365 | JPFreq[35][10] = 251;
4366 | JPFreq[18][37] = 250;
4367 | JPFreq[3][19] = 249;
4368 | JPFreq[33][69] = 248;
4369 | JPFreq[31][9] = 247;
4370 | JPFreq[45][29] = 246;
4371 | JPFreq[3][15] = 245;
4372 | JPFreq[18][54] = 244;
4373 | JPFreq[3][44] = 243;
4374 | JPFreq[31][29] = 242;
4375 | JPFreq[18][45] = 241;
4376 | JPFreq[38][28] = 240;
4377 | JPFreq[24][12] = 239;
4378 | JPFreq[35][82] = 238;
4379 | JPFreq[17][43] = 237;
4380 | JPFreq[28][9] = 236;
4381 | JPFreq[23][25] = 235;
4382 | JPFreq[44][37] = 234;
4383 | JPFreq[23][75] = 233;
4384 | JPFreq[23][92] = 232;
4385 | JPFreq[0][24] = 231;
4386 | JPFreq[19][74] = 230;
4387 | JPFreq[45][32] = 229;
4388 | JPFreq[16][72] = 228;
4389 | JPFreq[16][93] = 227;
4390 | JPFreq[45][13] = 226;
4391 | JPFreq[24][8] = 225;
4392 | JPFreq[25][47] = 224;
4393 | JPFreq[28][26] = 223;
4394 | JPFreq[43][81] = 222;
4395 | JPFreq[32][71] = 221;
4396 | JPFreq[18][41] = 220;
4397 | JPFreq[26][62] = 219;
4398 | JPFreq[41][24] = 218;
4399 | JPFreq[40][11] = 217;
4400 | JPFreq[43][57] = 216;
4401 | JPFreq[34][53] = 215;
4402 | JPFreq[20][32] = 214;
4403 | JPFreq[34][43] = 213;
4404 | JPFreq[41][91] = 212;
4405 | JPFreq[29][57] = 211;
4406 | JPFreq[15][43] = 210;
4407 | JPFreq[22][89] = 209;
4408 | JPFreq[33][83] = 208;
4409 | JPFreq[43][20] = 207;
4410 | JPFreq[25][58] = 206;
4411 | JPFreq[30][30] = 205;
4412 | JPFreq[4][56] = 204;
4413 | JPFreq[17][64] = 203;
4414 | JPFreq[23][0] = 202;
4415 | JPFreq[44][12] = 201;
4416 | JPFreq[25][37] = 200;
4417 | JPFreq[35][13] = 199;
4418 | JPFreq[20][30] = 198;
4419 | JPFreq[21][84] = 197;
4420 | JPFreq[29][14] = 196;
4421 | JPFreq[30][5] = 195;
4422 | JPFreq[37][2] = 194;
4423 | JPFreq[4][78] = 193;
4424 | JPFreq[29][78] = 192;
4425 | JPFreq[29][84] = 191;
4426 | JPFreq[32][86] = 190;
4427 | JPFreq[20][68] = 189;
4428 | JPFreq[30][39] = 188;
4429 | JPFreq[15][69] = 187;
4430 | JPFreq[4][60] = 186;
4431 | JPFreq[20][61] = 185;
4432 | JPFreq[41][67] = 184;
4433 | JPFreq[16][35] = 183;
4434 | JPFreq[36][57] = 182;
4435 | JPFreq[39][80] = 181;
4436 | JPFreq[4][59] = 180;
4437 | JPFreq[4][44] = 179;
4438 | JPFreq[40][54] = 178;
4439 | JPFreq[30][8] = 177;
4440 | JPFreq[44][30] = 176;
4441 | JPFreq[31][93] = 175;
4442 | JPFreq[31][47] = 174;
4443 | JPFreq[16][70] = 173;
4444 | JPFreq[21][0] = 172;
4445 | JPFreq[17][35] = 171;
4446 | JPFreq[21][67] = 170;
4447 | JPFreq[44][18] = 169;
4448 | JPFreq[36][29] = 168;
4449 | JPFreq[18][67] = 167;
4450 | JPFreq[24][28] = 166;
4451 | JPFreq[36][24] = 165;
4452 | JPFreq[23][5] = 164;
4453 | JPFreq[31][65] = 163;
4454 | JPFreq[26][59] = 162;
4455 | JPFreq[28][2] = 161;
4456 | JPFreq[39][69] = 160;
4457 | JPFreq[42][40] = 159;
4458 | JPFreq[37][80] = 158;
4459 | JPFreq[15][66] = 157;
4460 | JPFreq[34][38] = 156;
4461 | JPFreq[28][48] = 155;
4462 | JPFreq[37][77] = 154;
4463 | JPFreq[29][34] = 153;
4464 | JPFreq[33][12] = 152;
4465 | JPFreq[4][65] = 151;
4466 | JPFreq[30][31] = 150;
4467 | JPFreq[27][92] = 149;
4468 | JPFreq[4][2] = 148;
4469 | JPFreq[4][51] = 147;
4470 | JPFreq[23][77] = 146;
4471 | JPFreq[4][35] = 145;
4472 | JPFreq[3][13] = 144;
4473 | JPFreq[26][26] = 143;
4474 | JPFreq[44][4] = 142;
4475 | JPFreq[39][53] = 141;
4476 | JPFreq[20][11] = 140;
4477 | JPFreq[40][33] = 139;
4478 | JPFreq[45][7] = 138;
4479 | JPFreq[4][70] = 137;
4480 | JPFreq[3][49] = 136;
4481 | JPFreq[20][59] = 135;
4482 | JPFreq[21][12] = 134;
4483 | JPFreq[33][53] = 133;
4484 | JPFreq[20][14] = 132;
4485 | JPFreq[37][18] = 131;
4486 | JPFreq[18][17] = 130;
4487 | JPFreq[36][23] = 129;
4488 | JPFreq[18][57] = 128;
4489 | JPFreq[26][74] = 127;
4490 | JPFreq[35][2] = 126;
4491 | JPFreq[38][58] = 125;
4492 | JPFreq[34][68] = 124;
4493 | JPFreq[29][81] = 123;
4494 | JPFreq[20][69] = 122;
4495 | JPFreq[39][86] = 121;
4496 | JPFreq[4][16] = 120;
4497 | JPFreq[16][49] = 119;
4498 | JPFreq[15][72] = 118;
4499 | JPFreq[26][35] = 117;
4500 | JPFreq[32][14] = 116;
4501 | JPFreq[40][90] = 115;
4502 | JPFreq[33][79] = 114;
4503 | JPFreq[35][4] = 113;
4504 | JPFreq[23][33] = 112;
4505 | JPFreq[19][19] = 111;
4506 | JPFreq[31][41] = 110;
4507 | JPFreq[44][1] = 109;
4508 | JPFreq[22][56] = 108;
4509 | JPFreq[31][27] = 107;
4510 | JPFreq[32][18] = 106;
4511 | JPFreq[27][32] = 105;
4512 | JPFreq[37][39] = 104;
4513 | JPFreq[42][11] = 103;
4514 | JPFreq[29][71] = 102;
4515 | JPFreq[32][58] = 101;
4516 | JPFreq[46][10] = 100;
4517 | JPFreq[17][30] = 99;
4518 | JPFreq[38][15] = 98;
4519 | JPFreq[29][60] = 97;
4520 | JPFreq[4][11] = 96;
4521 | JPFreq[38][31] = 95;
4522 | JPFreq[40][79] = 94;
4523 | JPFreq[28][49] = 93;
4524 | JPFreq[28][84] = 92;
4525 | JPFreq[26][77] = 91;
4526 | JPFreq[22][32] = 90;
4527 | JPFreq[33][17] = 89;
4528 | JPFreq[23][18] = 88;
4529 | JPFreq[32][64] = 87;
4530 | JPFreq[4][6] = 86;
4531 | JPFreq[33][51] = 85;
4532 | JPFreq[44][77] = 84;
4533 | JPFreq[29][5] = 83;
4534 | JPFreq[46][25] = 82;
4535 | JPFreq[19][58] = 81;
4536 | JPFreq[4][46] = 80;
4537 | JPFreq[15][71] = 79;
4538 | JPFreq[18][58] = 78;
4539 | JPFreq[26][45] = 77;
4540 | JPFreq[45][66] = 76;
4541 | JPFreq[34][10] = 75;
4542 | JPFreq[19][37] = 74;
4543 | JPFreq[33][65] = 73;
4544 | JPFreq[44][52] = 72;
4545 | JPFreq[16][38] = 71;
4546 | JPFreq[36][46] = 70;
4547 | JPFreq[20][26] = 69;
4548 | JPFreq[30][37] = 68;
4549 | JPFreq[4][58] = 67;
4550 | JPFreq[43][2] = 66;
4551 | JPFreq[30][18] = 65;
4552 | JPFreq[19][35] = 64;
4553 | JPFreq[15][68] = 63;
4554 | JPFreq[3][36] = 62;
4555 | JPFreq[35][40] = 61;
4556 | JPFreq[36][32] = 60;
4557 | JPFreq[37][14] = 59;
4558 | JPFreq[17][11] = 58;
4559 | JPFreq[19][78] = 57;
4560 | JPFreq[37][11] = 56;
4561 | JPFreq[28][63] = 55;
4562 | JPFreq[29][61] = 54;
4563 | JPFreq[33][3] = 53;
4564 | JPFreq[41][52] = 52;
4565 | JPFreq[33][63] = 51;
4566 | JPFreq[22][41] = 50;
4567 | JPFreq[4][19] = 49;
4568 | JPFreq[32][41] = 48;
4569 | JPFreq[24][4] = 47;
4570 | JPFreq[31][28] = 46;
4571 | JPFreq[43][30] = 45;
4572 | JPFreq[17][3] = 44;
4573 | JPFreq[43][70] = 43;
4574 | JPFreq[34][19] = 42;
4575 | JPFreq[20][77] = 41;
4576 | JPFreq[18][83] = 40;
4577 | JPFreq[17][15] = 39;
4578 | JPFreq[23][61] = 38;
4579 | JPFreq[40][27] = 37;
4580 | JPFreq[16][48] = 36;
4581 | JPFreq[39][78] = 35;
4582 | JPFreq[41][53] = 34;
4583 | JPFreq[40][91] = 33;
4584 | JPFreq[40][72] = 32;
4585 | JPFreq[18][52] = 31;
4586 | JPFreq[35][66] = 30;
4587 | JPFreq[39][93] = 29;
4588 | JPFreq[19][48] = 28;
4589 | JPFreq[26][36] = 27;
4590 | JPFreq[27][25] = 26;
4591 | JPFreq[42][71] = 25;
4592 | JPFreq[42][85] = 24;
4593 | JPFreq[26][48] = 23;
4594 | JPFreq[28][15] = 22;
4595 | JPFreq[3][66] = 21;
4596 | JPFreq[25][24] = 20;
4597 | JPFreq[27][43] = 19;
4598 | JPFreq[27][78] = 18;
4599 | JPFreq[45][43] = 17;
4600 | JPFreq[27][72] = 16;
4601 | JPFreq[40][29] = 15;
4602 | JPFreq[41][0] = 14;
4603 | JPFreq[19][57] = 13;
4604 | JPFreq[15][59] = 12;
4605 | JPFreq[29][29] = 11;
4606 | JPFreq[4][25] = 10;
4607 | JPFreq[21][42] = 9;
4608 | JPFreq[23][35] = 8;
4609 | JPFreq[33][1] = 7;
4610 | JPFreq[4][57] = 6;
4611 | JPFreq[17][60] = 5;
4612 | JPFreq[25][19] = 4;
4613 | JPFreq[22][65] = 3;
4614 | JPFreq[42][29] = 2;
4615 | JPFreq[27][66] = 1;
4616 | JPFreq[26][89] = 0;
4617 | }
4618 | }
4619 |
4620 | class Encoding {
4621 | // Supported Encoding Types
4622 | public static int GB2312 = 0;
4623 |
4624 | public static int GBK = 1;
4625 |
4626 | public static int GB18030 = 2;
4627 |
4628 | public static int HZ = 3;
4629 |
4630 | public static int BIG5 = 4;
4631 |
4632 | public static int CNS11643 = 5;
4633 |
4634 | public static int UTF8 = 6;
4635 |
4636 | public static int UTF8T = 7;
4637 |
4638 | public static int UTF8S = 8;
4639 |
4640 | public static int UNICODE = 9;
4641 |
4642 | public static int UNICODET = 10;
4643 |
4644 | public static int UNICODES = 11;
4645 |
4646 | public static int ISO2022CN = 12;
4647 |
4648 | public static int ISO2022CN_CNS = 13;
4649 |
4650 | public static int ISO2022CN_GB = 14;
4651 |
4652 | public static int EUC_KR = 15;
4653 |
4654 | public static int CP949 = 16;
4655 |
4656 | public static int ISO2022KR = 17;
4657 |
4658 | public static int JOHAB = 18;
4659 |
4660 | public static int SJIS = 19;
4661 |
4662 | public static int EUC_JP = 20;
4663 |
4664 | public static int ISO2022JP = 21;
4665 |
4666 | public static int ASCII = 22;
4667 |
4668 | public static int OTHER = 23;
4669 |
4670 | public static int TOTALTYPES = 24;
4671 |
4672 | public final static int SIMP = 0;
4673 |
4674 | public final static int TRAD = 1;
4675 |
4676 | // Names of the encodings as understood by Java
4677 | public static String[] javaname;
4678 |
4679 | // Names of the encodings for human viewing
4680 | public static String[] nicename;
4681 |
4682 | // Names of charsets as used in charset parameter of HTML Meta tag
4683 | public static String[] htmlname;
4684 |
4685 | // Constructor
4686 | public Encoding() {
4687 | javaname = new String[TOTALTYPES];
4688 | nicename = new String[TOTALTYPES];
4689 | htmlname = new String[TOTALTYPES];
4690 | // Assign encoding names
4691 | javaname[GB2312] = "GB2312";
4692 | javaname[GBK] = "GBK";
4693 | javaname[GB18030] = "GB18030";
4694 | javaname[HZ] = "ASCII"; // What to put here? Sun doesn't support HZ
4695 | javaname[ISO2022CN_GB] = "ISO2022CN_GB";
4696 | javaname[BIG5] = "BIG5";
4697 | javaname[CNS11643] = "EUC-TW";
4698 | javaname[ISO2022CN_CNS] = "ISO2022CN_CNS";
4699 | javaname[ISO2022CN] = "ISO2022CN";
4700 | javaname[UTF8] = "UTF-8";
4701 | javaname[UTF8T] = "UTF-8";
4702 | javaname[UTF8S] = "UTF-8";
4703 | javaname[UNICODE] = "Unicode";
4704 | javaname[UNICODET] = "Unicode";
4705 | javaname[UNICODES] = "Unicode";
4706 | javaname[EUC_KR] = "EUC_KR";
4707 | javaname[CP949] = "MS949";
4708 | javaname[ISO2022KR] = "ISO2022KR";
4709 | javaname[JOHAB] = "Johab";
4710 | javaname[SJIS] = "SJIS";
4711 | javaname[EUC_JP] = "EUC_JP";
4712 | javaname[ISO2022JP] = "ISO2022JP";
4713 | javaname[ASCII] = "ASCII";
4714 | javaname[OTHER] = "ISO8859_1";
4715 | // Assign encoding names
4716 | htmlname[GB2312] = "GB2312";
4717 | htmlname[GBK] = "GBK";
4718 | htmlname[GB18030] = "GB18030";
4719 | htmlname[HZ] = "HZ-GB-2312";
4720 | htmlname[ISO2022CN_GB] = "ISO-2022-CN-EXT";
4721 | htmlname[BIG5] = "BIG5";
4722 | htmlname[CNS11643] = "EUC-TW";
4723 | htmlname[ISO2022CN_CNS] = "ISO-2022-CN-EXT";
4724 | htmlname[ISO2022CN] = "ISO-2022-CN";
4725 | htmlname[UTF8] = "UTF-8";
4726 | htmlname[UTF8T] = "UTF-8";
4727 | htmlname[UTF8S] = "UTF-8";
4728 | htmlname[UNICODE] = "UTF-16";
4729 | htmlname[UNICODET] = "UTF-16";
4730 | htmlname[UNICODES] = "UTF-16";
4731 | htmlname[EUC_KR] = "EUC-KR";
4732 | htmlname[CP949] = "x-windows-949";
4733 | htmlname[ISO2022KR] = "ISO-2022-KR";
4734 | htmlname[JOHAB] = "x-Johab";
4735 | htmlname[SJIS] = "Shift_JIS";
4736 | htmlname[EUC_JP] = "EUC-JP";
4737 | htmlname[ISO2022JP] = "ISO-2022-JP";
4738 | htmlname[ASCII] = "ASCII";
4739 | htmlname[OTHER] = "ISO8859-1";
4740 | // Assign Human readable names
4741 | nicename[GB2312] = "GB-2312";
4742 | nicename[GBK] = "GBK";
4743 | nicename[GB18030] = "GB18030";
4744 | nicename[HZ] = "HZ";
4745 | nicename[ISO2022CN_GB] = "ISO2022CN-GB";
4746 | nicename[BIG5] = "Big5";
4747 | nicename[CNS11643] = "CNS11643";
4748 | nicename[ISO2022CN_CNS] = "ISO2022CN-CNS";
4749 | nicename[ISO2022CN] = "ISO2022 CN";
4750 | nicename[UTF8] = "UTF-8";
4751 | nicename[UTF8T] = "UTF-8 (Trad)";
4752 | nicename[UTF8S] = "UTF-8 (Simp)";
4753 | nicename[UNICODE] = "Unicode";
4754 | nicename[UNICODET] = "Unicode (Trad)";
4755 | nicename[UNICODES] = "Unicode (Simp)";
4756 | nicename[EUC_KR] = "EUC-KR";
4757 | nicename[CP949] = "CP949";
4758 | nicename[ISO2022KR] = "ISO 2022 KR";
4759 | nicename[JOHAB] = "Johab";
4760 | nicename[SJIS] = "Shift-JIS";
4761 | nicename[EUC_JP] = "EUC-JP";
4762 | nicename[ISO2022JP] = "ISO 2022 JP";
4763 | nicename[ASCII] = "ASCII";
4764 | nicename[OTHER] = "OTHER";
4765 | }
4766 |
4767 | }
--------------------------------------------------------------------------------
/src/com/wk/main/FilesCodingConvert.java:
--------------------------------------------------------------------------------
1 | package com.wk.main;
2 |
3 | import java.io.File;
4 | import java.io.FileFilter;
5 | import java.io.FileInputStream;
6 | import java.io.FileNotFoundException;
7 | import java.io.FileOutputStream;
8 | import java.io.IOException;
9 | import java.io.InputStream;
10 | import java.io.OutputStream;
11 | import java.util.Collection;
12 |
13 | import org.apache.commons.io.IOUtils;
14 | import org.apache.commons.io.filefilter.DirectoryFileFilter;
15 | import org.apache.commons.io.filefilter.FalseFileFilter;
16 | import org.apache.commons.io.filefilter.FileFilterUtils;
17 | import org.apache.commons.io.filefilter.IOFileFilter;
18 | import org.apache.commons.io.filefilter.SuffixFileFilter;
19 | import org.apache.commons.io.filefilter.TrueFileFilter;
20 | import org.dom4j.Document;
21 | import org.dom4j.Element;
22 | import org.dom4j.io.SAXReader;
23 |
24 | /**
25 | *
26 | * Title: Main
27 | *
28 | *
29 | * Description:将GBK和UTF-8格式的工程格式互转,可替换特定后缀名的文件,替换后的文件目录仍然与源文件目录结构相同,默认是GBK转UTF-8
30 | *
31 | *
32 | * version 20190522
33 | *
34 | *
35 | */
36 | public class FilesCodingConvert {
37 |
38 | /**
39 | * fileFolderPath 源文件存储路径
40 | *
41 | * 此目录必须存在
42 | */
43 | public static String sourceFolderPath = File.separator;
44 | /**
45 | * outputFolderPath 输出文件存储路径
46 | *
47 | * 如果 输出文件存储路径与源目录路径相同,则源文件会被替换为UTF-8格式
48 | *
49 | * 此目录可以不存在,程序会自动创建
50 | */
51 | public static String outputFolderPath = File.separator;
52 | /**
53 | * extensions 要转换的文件后缀名
54 | */
55 | public static String[] extensions = new String[] { "java", "xml" };
56 |
57 | /**
58 | * sourceCodingType 源文件编码格式
59 | */
60 | public static String sourceCodingType = "GBK";
61 | /**
62 | * outputCodingType 目标文件编码格式
63 | */
64 | public static String outputCodingType = "UTF-8";
65 |
66 | /**
67 | *
68 | * Title: main
69 | *
70 | *
71 | * Description:main方法,程序的入口
72 | *
73 | *
74 | * @param args
75 | */
76 | public static void main(String[] args) {
77 |
78 | try {
79 | MyLogger.log.info("Version 20190522 ! Thx for use and please contact wangkun.it@qq.com if you have any problem!");
80 | File f = new File(System.getProperty("user.dir") + "/config.xml");
81 | SAXReader reader = new SAXReader();
82 | Document doc = reader.read(f);
83 | Element root = doc.getRootElement();
84 | sourceFolderPath = root.elementText("sourceFolderPath");
85 | outputFolderPath = root.elementText("outputFolderPath");
86 | extensions = root.elementText("extensions").split("\\ ");
87 | sourceCodingType = root.elementText("sourceCodingType");
88 | outputCodingType = root.elementText("outputCodingType");
89 |
90 | String srcDirPath = sourceFolderPath;
91 | // 转为UTF-8编码格式源码路径
92 | String utf8DirPath = outputFolderPath;
93 | if (utf8DirPath.equals("") || utf8DirPath == null) {
94 | // add default output place
95 | utf8DirPath = sourceFolderPath;
96 | }
97 |
98 | // 获取所有java文件
99 | Collection javaGbkFileCol = listFiles(new File(srcDirPath), extensions, true);
100 | if (javaGbkFileCol == null) {
101 | return;
102 | }
103 |
104 | BytesEncodingDetect s = new BytesEncodingDetect();
105 |
106 | boolean autoDetect = sourceCodingType.equalsIgnoreCase("auto");
107 |
108 | for (File javaGbkFile : javaGbkFileCol) {
109 | // UTF8格式文件路径
110 | String utf8FilePath = utf8DirPath
111 | + ((File) javaGbkFile).getAbsolutePath().substring(srcDirPath.length());
112 |
113 | if (autoDetect) {
114 | sourceCodingType = BytesEncodingDetect.javaname[s.detectEncoding(javaGbkFile)];
115 | }
116 | MyLogger.log.info("The file " + javaGbkFile.getName() + " encoding:" + sourceCodingType);
117 | // 使用GBK读取数据,然后用UTF-8写入数据
118 | if (sourceCodingType.equalsIgnoreCase(outputCodingType)) {
119 | MyLogger.log.info("The file needn't convert!");
120 | continue;// 原编码不变
121 | }
122 | writeLines(new File(utf8FilePath), readLines(((File) javaGbkFile), sourceCodingType), outputCodingType);
123 | MyLogger.log.info("Convert " + javaGbkFile + " from " + sourceCodingType + " to " + outputCodingType
124 | + " convert success.");
125 |
126 | }
127 | MyLogger.log.info("Finished!");
128 | } catch (Exception e) {
129 | MyLogger.log.error("error");
130 | e.printStackTrace();
131 | }
132 | }
133 |
134 | /**
135 | * 查找一个目录下面符合对应扩展名的文件的集合listFiles(File directory, String[]extensions,
136 | * boolean recursive)
137 | *
138 | * @param directory
139 | * @param extensions
140 | * @param recursive
141 | * @return
142 | */
143 | public static Collection listFiles(File directory, String[] extensions, boolean recursive) {
144 |
145 | IOFileFilter filter;
146 |
147 | if (directory == null || !directory.isDirectory()) {
148 | MyLogger.log.warn("directory is not right.");
149 | return null;
150 | }
151 | if (extensions == null) {
152 |
153 | filter = TrueFileFilter.INSTANCE;
154 |
155 | } else {
156 |
157 | String[] suffixes = toSuffixes(extensions);
158 |
159 | filter = new SuffixFileFilter(suffixes);
160 |
161 | }
162 |
163 | return listFiles(directory, filter,
164 |
165 | (recursive ? TrueFileFilter.INSTANCE : FalseFileFilter.INSTANCE));
166 |
167 | }
168 |
169 | /**
170 | * 把文件中的内容逐行的拷贝到一个对应编码的list中去
171 | *
172 | * @param file
173 | * @param encoding
174 | * @return
175 | * @throws IOException
176 | */
177 | public static String readLines(File file, String encoding) throws IOException {
178 |
179 | InputStream in = null;
180 |
181 | try {
182 |
183 | in = openInputStream(file);
184 |
185 | return IOUtils.toString(in, encoding);
186 |
187 | } finally {
188 |
189 | IOUtils.closeQuietly(in);
190 |
191 | }
192 |
193 | }
194 |
195 | /**
196 | * 把集合中的内容根据对应字符编码和行编码逐项插入到文件中
197 | *
198 | * @param file
199 | * @param data
200 | * @param encoding
201 | * @throws IOException
202 | */
203 | public static void writeLines(File file, String data, String encoding) throws IOException {
204 |
205 | OutputStream out = null;
206 |
207 | try {
208 |
209 | out = openOutputStream(file);
210 |
211 | IOUtils.write(data, out, encoding);
212 | // IOUtils.write(data, out);
213 |
214 | } finally {
215 |
216 | IOUtils.closeQuietly(out);
217 |
218 | }
219 |
220 | }
221 |
222 | /**
223 | * 根据指定的文件获取一个新的文件输出流:openOutputStream (File file)
224 | *
225 | * @param file
226 | * @return
227 | * @throws IOException
228 | */
229 | public static FileOutputStream openOutputStream(File file) throws IOException {
230 |
231 | if (file.exists()) {
232 |
233 | if (file.isDirectory()) {
234 |
235 | throw new IOException("File'" + file + "' exists but is a directory");
236 |
237 | }
238 |
239 | if (file.canWrite() == false) {
240 |
241 | throw new IOException("File '" + file + "' cannot be written to");
242 |
243 | }
244 |
245 | } else {
246 |
247 | File parent = file.getParentFile();
248 |
249 | if (parent != null && parent.exists() == false) {
250 |
251 | if (parent.mkdirs() == false) {
252 |
253 | throw new IOException("File '" + file + "' could not be created");
254 |
255 | }
256 |
257 | }
258 |
259 | }
260 |
261 | return new FileOutputStream(file);
262 |
263 | }
264 |
265 | /**
266 | * 根据指定的文件获取一个新的文件输入流:openInputStream(File file)
267 | *
268 | * @param file
269 | * @return
270 | * @throws IOException
271 | */
272 | public static FileInputStream openInputStream(File file) throws IOException {
273 |
274 | if (file.exists()) {
275 |
276 | if (file.isDirectory()) {
277 |
278 | throw new IOException("File '" + file + "' exists but is adirectory");
279 |
280 | }
281 |
282 | if (file.canRead() == false) {
283 |
284 | throw new IOException("File '" + file + "' cannot be read");
285 |
286 | }
287 |
288 | } else {
289 |
290 | throw new FileNotFoundException("File '" + file + "' does notexist");
291 |
292 | }
293 |
294 | return new FileInputStream(file);
295 |
296 | }
297 |
298 | /**
299 | * 查找一个目录下面符合对应扩展名的文件的集合
300 | *
301 | * @param directory
302 | * @param fileFilter
303 | * @param dirFilter
304 | * @return
305 | */
306 | public static Collection listFiles(
307 |
308 | File directory, IOFileFilter fileFilter, IOFileFilter dirFilter) {
309 |
310 | if (!directory.isDirectory()) {
311 |
312 | throw new IllegalArgumentException(
313 |
314 | "Parameter'directory' is not a directory");
315 |
316 | }
317 |
318 | if (fileFilter == null) {
319 |
320 | throw new NullPointerException("Parameter 'fileFilter' is null");
321 |
322 | }
323 |
324 | // Setup effective file filter
325 |
326 | IOFileFilter effFileFilter = FileFilterUtils.and(fileFilter,
327 |
328 | FileFilterUtils.notFileFilter(DirectoryFileFilter.INSTANCE));
329 |
330 | // Setup effective directory filter
331 |
332 | IOFileFilter effDirFilter;
333 |
334 | if (dirFilter == null) {
335 |
336 | effDirFilter = FalseFileFilter.INSTANCE;
337 |
338 | } else {
339 |
340 | effDirFilter = FileFilterUtils.and(dirFilter,
341 |
342 | DirectoryFileFilter.INSTANCE);
343 |
344 | }
345 |
346 | // Find files
347 |
348 | Collection files = new java.util.LinkedList();
349 |
350 | innerListFiles(files, directory,
351 |
352 | FileFilterUtils.or(effFileFilter, effDirFilter));
353 |
354 | return files;
355 |
356 | }
357 |
358 | /**
359 | * 根据一个过滤规则获取一个目录下的文件
360 | *
361 | * @param files
362 | * @param directory
363 | * @param filter
364 | */
365 | private static void innerListFiles(Collection files, File directory,
366 |
367 | IOFileFilter filter) {
368 |
369 | File[] found = directory.listFiles((FileFilter) filter);
370 |
371 | if (found != null) {
372 |
373 | for (File file : found) {
374 |
375 | if (file.isDirectory()) {
376 |
377 | innerListFiles(files, file, filter);
378 |
379 | } else {
380 |
381 | files.add(file);
382 |
383 | }
384 |
385 | }
386 |
387 | }
388 |
389 | }
390 |
391 | /**
392 | * 把指定的字符串数组变成后缀名格式字符串数组
393 | *
394 | * @param extensions
395 | * @return
396 | */
397 | public static String[] toSuffixes(String[] extensions) {
398 |
399 | String[] suffixes = new String[extensions.length];
400 |
401 | for (int i = 0; i < extensions.length; i++) {
402 |
403 | suffixes[i] = "." + extensions[i];
404 |
405 | }
406 |
407 | return suffixes;
408 |
409 | }
410 | }
411 |
--------------------------------------------------------------------------------
/src/com/wk/main/MyLogger.java:
--------------------------------------------------------------------------------
1 | package com.wk.main;
2 |
3 | import org.apache.log4j.Logger;
4 | import org.apache.log4j.PropertyConfigurator;
5 |
6 | public class MyLogger {
7 |
8 | private static String strLoggerPath = "log4j.properties";
9 |
10 | // private static String strLoggerPath = "PPFSlog4j.cfg";//ppfs
11 |
12 | public static void setLoggerPath(String strPath) {
13 |
14 | strLoggerPath = strPath;
15 | }
16 |
17 | /**
18 | * public static Logger getMyLogger(Class> cls) {
19 | *
20 | * Logger log = Logger.getLogger(cls);
21 | * PropertyConfigurator.configureAndWatch(strLoggerPath, 5); return log; }
22 | */
23 |
24 | // static Logger log = null;
25 |
26 | public static Logger log = null;
27 |
28 | static {
29 | log = Logger.getLogger(MyLogger.class);
30 | PropertyConfigurator.configureAndWatch(strLoggerPath, 5);
31 | }
32 |
33 | public static Logger getMyLogger(Class> cls) {
34 |
35 | if (null == log) {
36 | log = Logger.getLogger(MyLogger.class);
37 | PropertyConfigurator.configureAndWatch(strLoggerPath, 5);
38 | }
39 |
40 | return log;
41 | }
42 |
43 | public static Logger getMyLogger(Class> cls, String propertiesFilePath) {
44 | strLoggerPath = propertiesFilePath;
45 | if (null == log) {
46 | log = Logger.getLogger(MyLogger.class);
47 | PropertyConfigurator.configureAndWatch(strLoggerPath, 5);
48 | }
49 |
50 | return log;
51 | }
52 |
53 | public static void main(String[] args) {
54 |
55 | String msg = "aaa";
56 | Logger log = MyLogger.getMyLogger(String.class);
57 | Logger log2 = MyLogger.getMyLogger(String.class, "redis.properties");
58 |
59 | log.info(msg);
60 | log2.info(msg);
61 | }
62 | }
63 |
--------------------------------------------------------------------------------