﻿/***************************************************************************************************\
*                                                                                                                                                                                                       *
* Author : Tam CK                                                                                                                                                                       *
* Version 1.0                                                                                                                                                                           *
* Date created : 29/09/2000                                                                                                                                                     *
*                                                                                                                                                                                                       *
* Version 1.1                                                                                                                                                                           *
* Done by : Tam CK                                                                                                                                                                      *
* Date Modify : 07/10/2000                                                                                                                                                      *

* Purpose : To enable the checking to be done to the object that belong to the form being                       *
*                       submitted. Previously, checking is done to all the objects on the page, regardless of   *
*                       how many forms are there on the page.                                                                                                   *
*                                                                                                                                                                                                       *
* Version 1.2                                                                                                                                                                           *
* Done by : Tam CK                                                                                                                                                                      *
* Date Modify : 10/10/2000                                                                                                                                                      *
* Purpose : Added some method for each type of control such as String, Checkbox, Radio button...        *
*                                                                                                                                                                                                       *
* Version 1.3                                                                                                                                                                           *
* Done by : Tam CK                                                                                                                                                                      *
* Date Modify : 10/10/2000                                                                                                                                                      *
* Purpose : Modified function name to avoid     duplicate function name. Netscape does not support              *
*                       overloading in JavaScript. Changes are as follow :                                                                              *
*                       1. checkSelectionBox => checkSelectionBoxField                                                                                  *
*                       2. checkInteger => checkIntegerField                                                                                                    *
*                       3. checkDouble => checkDoubleField                                                                                                              *
*                       4. checkPassword => checkPasswordField                                                                                                  *
*                       5. checkConfirmPassword => checkConfirmPasswordField                                                                    *
*                       6. checkRadio => checkRadioField                                                                                                                *
*                       7. checkCheckBox => checkCheckBoxField                                                                                                  *
*                       8. checkDate => checkDateField                                                                                                                  *
*                       9. checkEmail => checkEmailField                                                                                                                *
*                       10. checkString => checkStringField                                                                                                             *
*                       11. function 'validateForm(sFormName)' has been remarked to avoid duplicate function    *
*                       name.                                                                                                                                                                   *
*                                                                                                                                                                                                       *
* Version 1.4                                                                                                                                                                           *
* Done by : Tam CK                                                                                                                                                                      *
* Date Modify : 30/10/2000                                                                                                                                                      *
* Purpose : Changes in date format. Initially, the acceptable date format is 'yyyy/mm/dd'. This         *
*                       is changed to 'dd/mm/yyyy'.                                                                                                                             *
*                                                                                                                                                                                                       *
* Version 1.5                                                                                                                                                                           *
* Done by : Tam CK                                                                                                                                                                      *
* Date Modify : 29/11/2000                                                                                                                                                      *
* Purpose : Bug fix in date validation checking.                                                                                                        *
*                                                                                                                                                                                                       *
* Version 1.6                                                                                                                                                                           *
* Done by : Tam CK                                                                                                                                                                      *
* Date Modify : 14/12/2000                                                                                                                                                      *
* Purpose : Bug fix in check double value               .                                                                                                       *
*                                                                                                                                                                                                       *
* Version 1.7
* Done by : Philip Wong
* Date Modify : 31/08/2001
* Purpose : Added function checkAlphaNumeric
*
* Version 1.8
* Done by : David Leung
* Date Modify : 31/08/2001
* Purpose : Added function isWhiteSpace, compareDate
*
* Version 1.9
* Done by : Philip Wong
* Date Modify : 31/08/2001
* Purpose : Added function trim
*
* Version 1.10
* Done by : Nick Kwok
* Date Modify : 23/08/2001
* Purpose : Added function isKeyboardCharacter
*
* Version 1.11
* Done by : Jenny Cheung
* Date Modify : 23/06/2002
* Purpose : bug fix
*
* Version 1.12
* Done by : Michael So
* Date Modify : 12/12/2005
* Purpose : add function isEnglishCharacter
*
* Version 1.13
* Done by : Water Chan
* Date Modify : 27/06/2006
* Purpose : added function isCTString
*
*
* Version 1.14
* Done by : River He
* Date Modify : 25/06/2010
* Purpose : added function checkMaliciousCharsWithRegExp(str) and 
* function replaceMaliciousChars(str)
* 
* Version 1.15
* Done by : Oliver Su
* Date Modify : 24/06/2011
* Purpose : add function for XSS
*
\***************************************************************************************************/

var alphaNumericPattern = /[^A-Za-z0-9]/
var englishPattern = /^[a-zA-Z_ ]*$/
var emailPattern = /^\w+((-\w+)|(\.\w+)|(\/\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/
var datePattern = /\d\d\/\d\d\/\d\d\d\d/
var shortDatePattern = /\d\d\/\d\d\d\d/
var yyyymmddhhmmssPattern = /\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d/
var integerPattern = /[^0-9]+/
var integerPatternWithNegative = /-d/
var doublePattern = /[^0-9.]+/

var DROPDOWNBOX = "dropdownbox"
var SELECTIONBOX = "selectionbox"
var INTEGER = "integer"
var DOUBLE = "double"
var PASSWORD = "password"
var CONFIRMPASSWORD = "confirmpassword"
var RADIO = "radio"
var CHECKBOX = "checkbox"
var DATE = "date"
var EMAIL = "email"
var STRING = "string"

var formControlArr = new Array()
var ctrlCounter = 0

var whitespace = " \t\n\r";

function isEmpty(s) {
		return ((s == null) || (s.length == 0) || trim(s)=="")
}

/**************************************************
* This function will validate the entered string. This function will validate
* the string is space, null or not.
*
* Parameter :
* - s ==> the entered string
*
* Return :
* - true ==> if the string is null or is a whitespace.
* - false ==> if the string is not null and is not a whitespace.
*
**************************************************/
function isWhitespace (s) {
    var i;

    if (isEmpty(s)) return true;

    for (i = 0; i < s.length; i++) {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1)
            return false;
    }

    // All characters are whitespace.
    return true;
}


/*******************
* Number to 2 digit string.
*
* Parameter :
* x: the number
*
* return 0x if x is single digit number
********************/
function LZ(x) { 
  return (x>=10||x<0?"":"0") + x; 
}

/*******************
* Convert date object to 'dd/mm/yyyy' string
*
* Parameter :
* date: the date object
*
* return date in 'dd/mm/yyyy' format
********************/
function convertDtFormat(date){
  var sDate = date.getDate();
  var sMonth = date.getMonth() + 1;
  var sYear = date.getFullYear();
  return LZ(sDate) + "/" + LZ(sMonth) + "/" + sYear;
}



/*******************
* This function will compare 2 dates.
*
* Parameter :
* dateString1 and dateString2 should be in 'dd/mm/yyyy' format
*
* return -1 if dateString1 is earlier than dateString2
*         0 if dateString1 is same as dateString2
*         1 if dateString1 is later than dateString2
********************/

var EARLIER = -1
var SAME = 0
var LATER = 1

function convertDate(dateString) {
        var iDay = parseInt(dateString.substr(0, 2), 10)
        var iMonth = parseInt(dateString.substr(3, 2), 10) - 1
        var iYear = parseInt(dateString.substr(6, 4), 10)
//      alert("year == " + iYear + " iMonth == " + iMonth + " iDay == " + iDay)
        return(new Date(iYear, iMonth, iDay))
}

function compareDate(dateString1, dateString2) {
        var date1 = convertDate(dateString1)
        var date2 = convertDate(dateString2)

        if (date1-date2 < 0)
                return EARLIER
        else if(date1-date2 == 0)
                return SAME
        else
                return LATER
}

/**************************************************
* This function will validate the entered date string. This function will validate
* the date to be in the form of 'yyyy/mm/dd'.
*
* Parameter :
* - value ==> the entered date string
*
* Return :
* - true ==> if the date is in the form of 'yyyy/mm/dd' and the date value is valid.
* - false ==> if the date is not in the form of 'yyyy/mm/dd' or the date value is invalid
*             such as '1900/13/45'.
*
**************************************************/
function checkDate(value)
{
        var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        var status = checkPattern(value, datePattern)

        if(!status)
                return false

        var iDay = parseInt(value.substr(0, 2), 10)
        var iMonth = parseInt(value.substr(3, 2), 10)
        var iYear = parseInt(value.substr(6, 4), 10)

        if(iMonth < 1 || iMonth > 12)
                return false

        var maxDay = iMonth != 2 ? daysInMonth[iMonth - 1] :
                ((iYear % 4 == 0 && iYear % 100 != 0 || iYear % 400 == 0) ? 29 : 28)

        if(iDay > 0 && iDay <= maxDay)
                return true

        return false
}


/**************************************************
* This function will validate the entered date string. This function will validate
* the date to be in the form of 'yyyy-mm-dd hh:mm:ss'.
*
* Parameter :
* - value ==> the entered date string
*
* Return :
* - true ==> if the date is in the form of 'yyyy/mm/dd' and the date value is valid.
* - false ==> if the date is not in the form of 'yyyy/mm/dd' or the date value is invalid
*             such as '1900/13/45'.
*
**************************************************/
function checkYYYYMMDDHHMMSS(value)
{
        var daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        var status = checkPattern(value, yyyymmddhhmmssPattern)

        if(!status)
                return false

        var iDay = parseInt(value.substr(8, 2), 10)
        var iMonth = parseInt(value.substr(5, 2), 10)
        var iYear = parseInt(value.substr(0, 4), 10)
        var iHour = parseInt(value.substr(11, 2), 10)
        var iMin = parseInt(value.substr(14, 2), 10)
        var iSec = parseInt(value.substr(17, 2), 10)

        if(iMonth < 1 || iMonth > 12)
                return false

        var maxDay = iMonth != 2 ? daysInMonth[iMonth - 1] :
                ((iYear % 4 == 0 && iYear % 100 != 0 || iYear % 400 == 0) ? 29 : 28)

        if(iDay < 0 || iDay > maxDay)
                return false

        if (iHour < 0 || iHour > 60)
                return false
        if (iMin < 0 || iMin > 60)
                return false

        if (iSec < 0 || iSec > 60)
                return false

        return true
}

/**************************************************
* This function will validate the entered date string. This function will validate
* the date to be in the form of 'mm/yyyy'.
*
* Parameter :
* - value ==> the entered date string
*
* Return :
* - true ==> if the date is in the form of 'mm/yyyy' and the date value is valid.
* - false ==> if the date is not in the form of 'yyyy/mm' or the date value is invalid
*             such as '1900/13'.
*
**************************************************/
function checkShortDate(value) {
    var status = checkPattern(value, shortDatePattern)

    if (!status) {
//      alert("Pattern");
        return false
    }

    var iMonth = parseInt(value.substr(0, 2), 10)
    var iYear = parseInt(value.substr(3, 4), 10)
//      alert("Month: " + iMonth);
//      alert("Year: " + iYear);

    if (iMonth < 1 || iMonth > 12)
        return false

    return true;
}

/**************************************************
*
* This function will validate the entered Email string. Valid Email string is in the
* following formats :
*
* alphanumeric@alphanumeric.alphanumeric
* alphanumeric.alphanumeric@alphanumeric.alphanumeric
* alphanumeric-alphanumeric@alphanumeric.alphanumeric
* alphanumeric/alphanumeric@alphanumeric.alphanumeric
*
* alphanumeric == 0-9, a-z, A-Z, '_'
* Parameter :
* - value ==> the entered Email string
*
* Return :
* - true ==> if the entered Email string does match the above patterns
* - false ==> if the entered Email string does match the above patterns.
*
**************************************************/
function checkEmail(value)
{
        return checkPattern(value, emailPattern)
}


/**************************************************
*
* This function will validate the entered Integer string. Valid Integer string contains
* numbers only. Any string that contains character other than numeric characters (0-9) are
* considered as invalid. If the Integer string contains whitespace character (such as space,
* tab) are considered as invalid as well.
*
* Parameter :
* - value ==> the entered Integer string
*
* Return :
* - true ==> if the entered Integer string contains only numeric characters
* - false ==> if the entered Integer string contains any characters other than the numeric
*             characters.
*
**************************************************/
function checkInteger(value)
{
        if(checkPattern(value, integerPattern))
                return false

        return true
}

/**************************************************
*
* This function will validate the entered Integer string. Valid Integer string contains
* numbers or negative sign only. Any string that contains character other than numeric characters (0-9) nor (-) are
* considered as invalid. If the Integer string contains whitespace character (such as space,
* tab) are considered as invalid as well.
*
* Parameter :
* - value ==> the entered Integer string
*
* Return :
* - true ==> if the entered Integer string contains only numeric characters
* - false ==> if the entered Integer string contains any characters other than the numeric
*             characters.
*
**************************************************/
function checkIntegerWithNegative(value)
{
//        if(checkPattern(value, integerPatternWithNegative))
//                return false
//        return true
			var firstChar = value.charAt(0);
			var otherChars = value.substring(1, value.length);			
			if(firstChar == '-') {
				if(!checkInteger(otherChars)) 
					return false;
				else
					return true;
			}
			else {
				if(!checkInteger(value)) 
					return false;
			}
			return true;
}


/**************************************************
*
* This function will validate the entered Double string. Valid Integer string contains
* numbers only and 'a decimal' point. Any string that contains character other than the
* numeric characters (0-9, '.') are considered as invalid. If the Double string contains
* whitespace character (such as space, tab) are considered as invalid as well. If the Double
* string contains two decimal point, it will be considered invalid.
*
* Parameter :
* - value ==> the entered Double string
*
* Return :
* - true ==> if the entered Double string contains only numeric characters and a decimal
*            point.
* - false ==> if the entered Double string contains other alphanumeric characters.
*
**************************************************/
function checkDouble(value)
{
        if(checkPattern(value, doublePattern))
                return false

        var pos = 0
        var currPos = 0
        var count = 0


        do
        {
                pos = value.indexOf(".", currPos)
                currPos = pos + 1

                if(pos != -1)
                {
                        count++
                        if(count > 1)

                                return false
                }
        }while(pos != -1)

        return true
}


/**************************************************
*
* This function is used to check against Radio buttons and Checkboxes. The main checking is
* to determine whether the group of Radio buttons and Checkboxes has been selected. If non of
* the Radio buttons and the Checkboxes is selected, this function will return false.
*
* This function is able to check one or a group of Radio buttons or Checkboxes. A list of
* Checkboxes will be used in form that has a list of objects (for example, a list of
* Category), and the user is allowed to delete a list of the objects. This checking will be
* used to check at least one object is selected for deletion, else, an error will be prompted.
*
* Parameter :
* - form ==> the form object where the Radio buttons or the Checkboxes is located.
* - name ==> the name of the Radio buttons or the Checkboxes.
*
* Return :
* - true ==> if at least one object from the group of Radio buttons or the Checkboxes is
*            selected.
* - false ==> if there is no selected object.
*
**************************************************/
function checkRadioOrCheck(form, name)
{
        var formElements = form.elements

        for(var i=0; i<formElements.length; i++)
        {
                element = formElements[i]

                if(element.name != name)
                        continue

                if(element.checked)
                        return true
        }

        return false
}


/**************************************************
*
* This function is used to check against Selection Box, whether the user has selected at least
* an item from the Selection box. The Selection box actually refering to Dropdown box and
* List box. For Dropdown box, the function assuming the first element is not suppose to be
* selected. For a Dropdown box, the first element will be a message like 'Please Select' to
* highlight to the user to select an item from the Dropdown box.
*
* As for List box, all the elements in the List box are selectable.
*
* Parameter :
* - selectbox ==> the Selection Box object, a Dropdown box or a List box
* - type ==> a string indicator to determine whether the 'selectbox' is a Dropdown box or
*            a List box.
*
* Return :
* - true ==> if at least one item in the 'selectbox' is selected.
* - false ==> if there is no item being selected.
*
**************************************************/
function checkSelect(selectbox, type)
{
        if(selectbox.selectedIndex < 0)
                return false

        if(type == DROPDOWNBOX && selectbox.selectedIndex <= 0)
                return false

        return true
}


/**************************************************
*
* This function is used to compare a string against a pattern.
*
* Parameter :
* - value ==> the string to be compare.
* - pattern ==> the pattern to match against the 'value'
*
* Return :
* - true ==> if the string matches the pattern.
* - false ==> if the string does not match the pattern.
*
**************************************************/
function checkPattern(value, pattern)
{
        if(value.search(pattern) != -1)
                return true
        else
                return false
}


/**************************************************
*
* This is a constructor function for the object 'FieldToBeChecked'. This object will store all
* the information about the fields that are going to be validated.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - iMin ==> minimum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
*
* - iMax ==> maximum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
* - sType ==> a string to determine the type of field.
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function FieldToBeChecked(sName, sPrettyName, sFormName, iMin, iMax, sType, bAllowNull)
{
        this.name = sName
        this.prettyName = sPrettyName
        this.formName = sFormName
        this.minLen = iMin
        this.maxLen = iMax
        this.type = sType
        this.allowNull = bAllowNull
}


/**************************************************
*
* To invoke checking on a Drop Down Box.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkDropDownBoxField(sName, sPrettyName, sFormName, bAllowNull)
{
        checkField(sName, sPrettyName, sFormName, 0, 0, DROPDOWNBOX, bAllowNull)
}


/**************************************************
*
* To invoke checking on a Selection Box.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkSelectionBoxField(sName, sPrettyName, sFormName, bAllowNull)
{
        checkField(sName, sPrettyName, sFormName, 0, 0, SELECTIONBOX, bAllowNull)
}


/**************************************************
*
* To invoke checking on an Integer field.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - iMin ==> minimum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
*
* - iMax ==> maximum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkIntegerField(sName, sPrettyName, sFormName, iMin, iMax, bAllowNull)
{
        checkField(sName, sPrettyName, sFormName, iMin, iMax, INTEGER, bAllowNull)
}


/**************************************************
*
* To invoke checking on a Double field.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - iMin ==> minimum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
*
* - iMax ==> maximum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkDoubleField(sName, sPrettyName, sFormName, iMin, iMax, bAllowNull)
{
        checkField(sName, sPrettyName, sFormName, iMin, iMax, DOUBLE, bAllowNull)
}


/**************************************************
*
* To invoke checking on a Password field.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - iMin ==> minimum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
*
* - iMax ==> maximum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
* - bAllowNull ==> a boolean field indicating the field allow null value or not.

*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkPasswordField(sName, sPrettyName, sFormName, iMin, iMax, bAllowNull)
{
        checkField(sName, sPrettyName, sFormName, iMin, iMax, PASSWORD, bAllowNull)
}


/**************************************************
*
* To invoke checking on a Confirm Password field.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - iMin ==> minimum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
*
* - iMax ==> maximum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkConfirmPasswordField(sName, sPrettyName, sFormName, iMin, iMax, bAllowNull)
{
        checkField(sName, sPrettyName, sFormName, iMin, iMax, CONFIRMPASSWORD, bAllowNull)
}


/**************************************************
*
* To invoke checking on Radio buttons.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkRadioField(sName, sPrettyName, sFormName, bAllowNull)
{
        checkField(sName, sPrettyName, sFormName, 0, 0, RADIO, bAllowNull)
}


/**************************************************
*
* To invoke checking on Check Boxes.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkCheckBoxField(sName, sPrettyName, sFormName, bAllowNull)
{
        checkField(sName, sPrettyName, sFormName, 0, 0, CHECKBOX, bAllowNull)
}


/**************************************************
*
* To invoke checking on a Date field.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkDateField(sName, sPrettyName, sFormName, bAllowNull)
{
        checkField(sName, sPrettyName, sFormName, 10, 10, DATE, bAllowNull)
}


/**************************************************
*
* To invoke checking on an Email field.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - iMin ==> minimum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
*
* - iMax ==> maximum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkEmailField(sName, sPrettyName, sFormName, iMin, iMax, bAllowNull)
{
        checkField(sName, sPrettyName, sFormName, iMin, iMax, EMAIL, bAllowNull)
}


/**************************************************
*
* To invoke checking on a String field.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - iMin ==> minimum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
*
* - iMax ==> maximum length of the field. (not used for Radio button, CheckBox, and
*            Selection Box)
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkStringField(sName, sPrettyName, sFormName, iMin, iMax, bAllowNull)
{
        checkField(sName, sPrettyName, sFormName, iMin, iMax, STRING, bAllowNull)
}


/**************************************************
*
* This function is used to create a FieldToBeChecked object and add the object into
* 'formControlArr' - an array that stores all the field data that is going to be validated.
*
* Parameter :
* - sName ==> name of the field
* - sPrettyName ==> pretty name, used in the error message.
* - sFormName ==> the form name that contains the field.
* - iMin ==> minimum length of the field.
* - iMax ==> maximum length of the field.
* - sType ==> string field to determine the type of field.
* - bAllowNull ==> a boolean field indicating the field allow null value or not.
*                  true = allow null value
*                  false = null value not allow
*
* Return :
*
**************************************************/
function checkField(sName, sPrettyName, sFormName, iMin, iMax, sType, bAllowNull)
{
        var fieldToBeChecked = new FieldToBeChecked(sName, sPrettyName, sFormName, iMin, iMax, sType, bAllowNull)
        formControlArr[ctrlCounter++] = fieldToBeChecked
}


/**************************************************
*
* An overloaded function to call to the 'validateForm' function. This function is called if
* the 'type', 'module' and 'purpose' is not going to be changed.
*
* Parameter :
* - aForm ==> the form object
*
* Return :
*
**************************************************/
/* does not work in Netscape because Netscape can not have two functions with the same name
function validateForm(sFormName)
{
        validateForm(sFormName, "", "", "")
}
*/


/**************************************************
*
* This function is used to update the 'type', 'module' and 'purpose', validate all the fields
* and if all the fields are valid, the form is submitted.
*
* Oftenly, a form can perform several function, for example, delete a list of objects,
* activate a list objects and deactivate a list of objects. In this situation, this function
* can help in passing different 'type',* 'module' and 'purpose' when the form is submitted.
*
* For example,
*
* <input type="button" name="Delete" value="Delete Category"
*   onclick="javascript:validateForm(this.form, 'iPC', 'CATEGORY', 'DELETE')">
*
* <input type="button" name="Activate" value="Activate Category"
*   onclick="javascript:validateForm(this.form, 'iPC', 'CATEGORY', 'ACTIVATE')">
*
* <input type="button" name="Deactivate" value="Deactivate Category"
*   onclick="javascript:validateForm(this.form, 'iPC', 'CATEGORY', 'DEACTIVATE')">
*
* The above method can achieve the purpose of passing different purpose string when
* submitting the form.
*
* However, this function assumes that the form must have 3 hidden variable name 'type',
* 'module' and 'purpose'.
*
* Parameter :
* - aForm ==> the form object
* - type ==> type of presentation layer. Now is limited to JSP, which is 'iPC'.
* - module ==> module name.
* - purpose ==> purpose to request.
*
* Return :
*
**************************************************/
function validateForm(sFormName, type, module, purpose)
{
        var password = ""
        var confirmPassword = ""
        var chkPwd= false
        var pwdAllowNull = false
        var errMessage = ""
        var status = false
        aForm = document.forms[sFormName]

        // Detect IE Browser
        if(document.all)
        {
                if(type != null && type != "")
                        aForm.type.value = type

                if(module != null && module != "")
                        aForm.module.value = module

                if(purpose != null && purpose != "")
                        aForm.purpose.value = purpose
        }
        // Detect Netscape Browser
        else
        {
                if(type != undefined && type != "")
                        aForm.type.value = type

                if(module != undefined && module != "")
                        aForm.module.value = module

                if(purpose != undefined && purpose != "")
                        aForm.purpose.value = purpose
        }




        for(var i=0; i<formControlArr.length; i++)
        {
                currControl = formControlArr[i];

                if(currControl.formName != sFormName)
                        continue

                value = aForm[currControl.name].value
                sType = currControl.type

                switch(sType)
                {
                        case "dropdownbox" :
                        case "selectionbox" :
                                if(currControl.allowNull)
                                        continue

                                status = checkSelect(aForm[currControl.name], sType)

                                if(!status)
                                        errMessage += currControl.prettyName + " is not selected\n"

                                break

                        case "integer" :
                        case "double" :
                        case "date" :
                        case "email" :
                        case "string" :
                                if(value == "")
                                {
                                        if(currControl.allowNull)
                                                continue

                                        errMessage += currControl.prettyName + " is empty\n"
                                        break
                                }

                                if(value.length < currControl.minLen)
                                {
                                        errMessage += currControl.prettyName + " should has minimum " +
                                                currControl.minLen + " characters\n"
                                        break
                                }

                                if(value.length > currControl.maxLen)
                                {
                                        errMessage += currControl.prettyName + " should not more than " +
                                                currControl.maxLen + " characters\n"
                                        break
                                }

                                switch(sType)
                                {
                                        case "integer" :
                                                status = checkInteger(value)
                                                break
                                        case "double" :
                                                status = checkDouble(value)
                                                break
                                        case "date" :
                                                status = checkDate(value)
                                                break
                                        case "email" :
                                                status = checkEmail(value)
                                                break
                                        case "string" :
                                                status = true
                                                break
                                }

                                if(!status)
                                        errMessage += currControl.prettyName + " is invalid\n"

                                break

                        case "password" :
                        case "confirmpassword" :
                                chkPwd = true
                                pwdAllowNull = currControl.allowNull

                                if(sType == "password")
                                        password = value
                                else
                                        confirmPassword = value

                                if(pwdAllowNull && value == "")
                                        break

                                if(value == "")
                                {
                                        errMessage += currControl.prettyName + " is empty\n"
                                        break
                                }

                                if(value.length < currControl.minLen)
                                {
                                        errMessage += currControl.prettyName + " should has minimum " +
                                                currControl.minLen + " characters\n"
                                        break
                                }

                                if(value.length > currControl.maxLen)
                                {
                                        errMessage += currControl.prettyName + " should not more than " +

                                                currControl.maxLen + " characters\n"
                                        break
                                }

                                break

                        case "radio" :
                        case "checkbox" :
                                if(currControl.allowNull)
                                        continue

                                status = checkRadioOrCheck(aForm, currControl.name)

                                if(!status)
                                        errMessage += currControl.prettyName + " is not selected\n"

                                break


                                if(value == "")
                                {
                                        if(currControl.allowNull)
                                                continue

                                        errMessage += currControl.prettyName + " is empty\n"
                                        break
                                }

                                status = checkEmail(value)

                                if(!status)
                                        errMessage += currControl.prettyName + " is invalid\n"

                                break
                }
        }

        if(chkPwd)
        {
                if(password != confirmPassword)
                        errMessage += "Password not match\n"
        }

        if(errMessage == "")
                aForm.submit()
        else
        {
                errMessage = "The following errors have encountered\n" +
                        "-----------------------------------------------------------------\n" + errMessage ;

                alert(errMessage);
        }
}

/*
        function validate_hkid
        parameter : The NAME of the field(HKID and the check digit)
        return : true for a valid HKID, false and alert box for invalid HKID 

*/
function validate_hkid(HKID,HKID_Ext)  
{
  first_char = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
                
   if (HKID.value == "") {
      alert("Please enter a valid HKID card no.\n請 輸 入 正 確 的 香 港 身 份 證 號 碼");
      return false;
   };
   if (HKID.value.toUpperCase().match(/^([A-Z]|([A-Z][A-Z]))\d{6}$/) == null) {
      alert("Please enter a valid HKID card no.\n請 輸 入 正 確 的 香 港 身 份 證 號 碼");
      return false;
   };
   if (HKID_Ext.value == "") {
      alert("Please enter a valid HKID card no.\n請 輸 入 正 確 的 香 港 身 份 證 號 碼");
      return false;
   };
   if (HKID_Ext.value.toUpperCase().match(/^[0-9A]$/) == null) {
      alert("Please enter a valid HKID card no.\n請 輸 入 正 確 的 香 港 身 份 證 號 碼");
      return false;
   };
   
   check_char_digit = parseInt(HKID.value.charAt(1));
   if(isNaN(check_char_digit)){
     for(i=0;i<first_char.length;i++){
       if(first_char[i]==HKID.value.toUpperCase().charAt(0)){
         first_char_value=i;
         break;
       }
     }
     for(i=0;i<first_char.length;i++){
	//V1.11
       //if(first_char[i]==HKID.value.toUpperCase().charAt(0)){
       if(first_char[i]==HKID.value.toUpperCase().charAt(1)){
         second_char_value=i;
         break;
       }
     }
     checksum = (first_char_value*2 + second_char_value*3 + 
              HKID.value.charAt(2)*4 + 
              HKID.value.charAt(3)*5 +
              HKID.value.charAt(4)*6 +
              HKID.value.charAt(5)*7 +
              HKID.value.charAt(6)*8 +
              HKID.value.charAt(7)*9 ) % 11;
   }
   else
   {

     for(i=0;i<first_char.length;i++){
       if(first_char[i]==HKID.value.toUpperCase().charAt(0)){
         first_char_value=i;
         break;
       }
     }
     checksum = (36*2 + first_char_value*3 + 
              HKID.value.charAt(1)*4 + 
              HKID.value.charAt(2)*5 +
              HKID.value.charAt(3)*6 +
              HKID.value.charAt(4)*7 +
              HKID.value.charAt(5)*8 +
              HKID.value.charAt(6)*9 ) % 11;
   }

   if (HKID_Ext.value.toUpperCase()==first_char[checksum]){
     //alert("Valid HKID");
     return true;
   }
   else {
     alert("Please enter a valid HKID card no.\n請 輸 入 正 確 的 香 港 身 份 證 號 碼");
     return false;
   }
}


function getAge(dateString,dateType) {
/*
   function getAge
   parameters: dateString dateType
   returns: boolean

   dateString is a date passed as a string in the following
   formats:

   type 1 : 19970529
   type 2 : 970529
   type 3 : 29/05/1997
   type 4 : 29/05/97

   dateType is a numeric integer from 1 to 4, representing
   the type of dateString passed, as defined above.

   Returns string containing the age in years, months and days
   in the format yyy years mm months dd days.
   Returns empty string if dateType is not one of the expected
   values.
*/

    var now = new Date();
    var today = new Date(now.getYear(),now.getMonth(),now.getDate());

    var yearNow = now.getYear();
    var monthNow = now.getMonth();
    var dateNow = now.getDate();
        if(yearNow<1000) yearNow+=1900;

    if (dateType == 1)
        var dob = new Date(dateString.substring(0,4),
                            dateString.substring(4,6)-1,
                            dateString.substring(6,8));
    else if (dateType == 2)
        var dob = new Date(dateString.substring(0,2),
                            dateString.substring(2,4)-1,
                            dateString.substring(4,6));
    else if (dateType == 3)
        var dob = new Date(dateString.substring(6,10),
                            dateString.substring(3,5)-1,
                            dateString.substring(0,2));
    else if (dateType == 4)
        var dob = new Date(dateString.substring(6,8),
                            dateString.substring(3,5)-1,
                            dateString.substring(0,2));
    else
        return '';

    var yearDob = dob.getYear();
    var monthDob = dob.getMonth();
    var dateDob = dob.getDate();
        if(yearDob<1000) yearDob+=1900;
    yearAge = yearNow - yearDob;

    if (monthNow >= monthDob)
        var monthAge = monthNow - monthDob;
    else {
        yearAge--;
        var monthAge = 12 + monthNow -monthDob;
    }

    if (dateNow >= dateDob)
        var dateAge = dateNow - dateDob;
    else {
        monthAge--;
        var dateAge = 31 + dateNow - dateDob;

        if (monthAge < 0) {
            monthAge = 11;
            yearAge--; 
        }
    }

        if (yearAge >= '18')
                return true;
        if (yearAge < '18')
                return false;   
}

/*
 * Added by TL 20040301
 * return true if it is agent code format, false otherwise
 */
function checkAgentCodeFormat(value)
{

	// at least 6 digit and no letters
	var allNumericPattern = /\d\d\d\d\d\d/
	var letterPattern = /[A-Za-z]/

	if (checkPattern(value, allNumericPattern) &&
		!checkPattern(value, letterPattern))
	{
		return true;
	}

	return false;
}


function checkAlphaNumeric(value)
{
        if(checkPattern(value, alphaNumericPattern))
                return false

        return true
}

/*
        Remove trailing blanks from our string.
*/
function trim(str)
{
        // We don't want to trim JUST spaces, but also tabs,
        // line feeds, etc.  Add anything else you want to
        // "trim" here in Whitespace
        var whitespace = new String(" \t\n\r");

        var s = new String(str);

        if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
            // We have a string with trailing blank(s)...

            var i = s.length - 1;       // Get length of string

            // Iterate from the far right of string until we
            // don't have any more whitespace...
            while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
                i--;


            // Get the substring from the front of the string to
            // where the last non-whitespace character is...
            s = s.substring(0, i+1);
        }

        return s;
}
function isKeyboardCharacter(str)
{
        for(i=0;i<str.length;i++){      
                if (str.charCodeAt(i) > 126)
                        return false;
        }
        return true;
}

function isEnglishCharacter(str)
{
    return checkPattern(str, englishPattern);
}

/*
	function checkLength
	parameter : str (String)
	return : the length of the str
*/

function checkLength(obj) {
	objValue = obj.value;
	return objValue.length;
}

function isDiscExistLimit(str)
{

  if (str > 30)
  {
    return true;
  }

/*
  // rain 20030410 - discount
  if (str < 10 || str > 40) {
    return true;
  }
*/
  return false;
}

function isCreditCardValidExpDate(year, month) {

  var todayDate = new Date();
  var todayDate = new Date(todayDate.getYear(), todayDate.getMonth(), todayDate.getDate());

  var inputYear;  
  if (year<50)
  	inputYear = "20"+year;
  else
    	inputYear = "19"+year;

  var expDate = "01/" + month + "/" + inputYear;
  if (!checkDate(expDate)) {
        return false;
  }
  var inputDate = new Date(inputYear, month-1, todayDate.getDate());	
  if (inputDate<todayDate) {
      	return false;
  }

  return true;
}

function isValidExpDate(year, month, day) {

	//alert("year: " + year + " month: " + month + " day: " + day);
  var todayDate = new Date();
  var todayDate = new Date(todayDate.getYear(), todayDate.getMonth(), todayDate.getDate());
  if (year==""&&month==""&&day=="")
  	return true;
  if (month.length == 1)
  	month = '0' + month;
  if (day.length == 1)
		day = '0' + day;
	var expDate = day + "/" + month + "/" + year;
  if (!checkDate(expDate)) {
        return false;
  }
  var inputDate = new Date(year, month-1, day);	
  return true;
}


function checkTextareaLength(obj, maxLength) {
  if (checkLength(obj) > maxLength) {
    obj.value = obj.value.substr(0,maxLength);
    return false;
  } else {
    return true;
  }
}

var UNICODE11_CHARSET_CT=
"\u4e00\u4e01\u4e03\u4e04\u4e07\u4e08\u4e09\u4e0a\u4e0b\u4e0c\u4e0d\u4e0e\u4e0f\u4e10\u4e11\u4e14\u4e15\u4e16\u4e18\u4e19\u4e1a\u4e1c\u4e1e\u4e1f\u4e21\u4e24\u4e26\u4e28\u4e2a\u4e2b\u4e2c\u4e2d\u4e2e\u4e30\u4e31\u4e32\u4e33\u4e36\u4e37\u4e38\u4e39\u4e3b\u4e3c\u4e3d\u4e3f\u4e42\u4e43\u4e45\u4e47\u4e48\u4e49\u4e4b\u4e4d\u4e4e\u4e4f\u4e52\u4e53\u4e56\u4e58\u4e59\u4e5a\u4e5b\u4e5c\u4e5d\u4e5e\u4e5f\u4e69\u4e6a\u4e73\u4e78\u4e7e\u4e7f\u4e80\u4e81\u4e82\u4e83\u4e84\u4e85\u4e86\u4e87\u4e88\u4e89\u4e8b\u4e8c\u4e8d\u4e8e\u4e91\u4e92\u4e93\u4e94\u4e95\u4e98\u4e99\u4e9a\u4e9b\u4e9e\u4e9f\u4ea0\u4ea1\u4ea2\u4ea4\u4ea5\u4ea6\u4ea8\u4eab\u4eac\u4ead\u4eae\u4eb3\u4eb6\u4eb7\u4eb9\u4eba\u4ebb\u4ebc\u4ebf\u4ec0\u4ec1\u4ec2\u4ec3\u4ec4\u4ec6\u4ec7\u4ec8\u4ec9\u4eca\u4ecb\u4ecd"+
"\u4ece\u4ed4\u4ed5\u4ed6\u4ed7\u4ed8\u4ed9\u4eda\u4edc\u4edd\u4ede\u4edf\u4ee1\u4ee3\u4ee4\u4ee5\u4ee8\u4ee9\u4eea\u4eeb\u4eee\u4ef0\u4ef1\u4ef2\u4ef3\u4ef4\u4ef5\u4ef6\u4ef7\u4ef8\u4efb\u4efd\u4eff\u4f00\u4f01\u4f02\u4f03\u4f04\u4f05\u4f08\u4f09\u4f0a\u4f0b\u4f0d\u4f0e\u4f0f\u4f10\u4f11\u4f12\u4f13\u4f14\u4f15\u4f18\u4f19\u4f1a\u4f1d\u4f22\u4f28\u4f29\u4f2c\u4f2d\u4f2f\u4f30\u4f32\u4f33\u4f34\u4f36\u4f37\u4f38\u4f39\u4f3a\u4f3b\u4f3c\u4f3d\u4f3e\u4f3f\u4f41\u4f42\u4f43\u4f45\u4f46\u4f47\u4f48\u4f49\u4f4b\u4f4c\u4f4d\u4f4e\u4f4f\u4f50\u4f51\u4f52\u4f53\u4f54\u4f55\u4f56\u4f57\u4f58\u4f59\u4f5a\u4f5b\u4f5c\u4f5d\u4f5e\u4f5f\u4f60\u4f61\u4f62\u4f63\u4f64\u4f67\u4f69\u4f6a\u4f6b\u4f6c\u4f6e\u4f6f\u4f70\u4f72\u4f73\u4f74\u4f75\u4f76\u4f77\u4f78\u4f79\u4f7a\u4f7b"+
"\u4f7c\u4f7d\u4f7e\u4f7f\u4f80\u4f81\u4f82\u4f83\u4f84\u4f85\u4f86\u4f87\u4f88\u4f89\u4f8a\u4f8b\u4f8d\u4f8f\u4f90\u4f91\u4f92\u4f94\u4f95\u4f96\u4f97\u4f98\u4f9a\u4f9b\u4f9c\u4f9d\u4f9e\u4fa2\u4fa8\u4fab\u4fae\u4faf\u4fb0\u4fb2\u4fb3\u4fb5\u4fb6\u4fb7\u4fb9\u4fba\u4fbb\u4fbd\u4fbf\u4fc0\u4fc1\u4fc2\u4fc3\u4fc4\u4fc5\u4fc7\u4fc8\u4fc9\u4fca\u4fcb\u4fcc\u4fcd\u4fce\u4fcf\u4fd0\u4fd1\u4fd3\u4fd4\u4fd6\u4fd7\u4fd8\u4fd9\u4fda\u4fdb\u4fdc\u4fdd\u4fde\u4fdf\u4fe0\u4fe1\u4fe4\u4fe5\u4fec\u4fee\u4fef\u4ff1\u4ff2\u4ff3\u4ff4\u4ff5\u4ff6\u4ff7\u4ff8\u4ff9\u4ffa\u4ffd\u4ffe\u5000\u5003\u5005\u5006\u5007\u5008\u5009\u500b\u500c\u500d\u500e\u500f\u5011\u5012\u5013\u5014\u5015\u5016\u5017\u5018\u5019\u501a\u501b\u501c\u501e\u501f\u5020\u5021\u5022\u5023\u5025\u5026\u5027"+
"\u5028\u5029\u502a\u502b\u502c\u502d\u502e\u502f\u5030\u5031\u5033\u5034\u5035\u5037\u503c\u5040\u5041\u5043\u5045\u5046\u5047\u5048\u5049\u504a\u504b\u504c\u504d\u504e\u504f\u5051\u5053\u5055\u5056\u5057\u5058\u505a\u505b\u505c\u505d\u505e\u505f\u5060\u5061\u5062\u5063\u5064\u5065\u5066\u5068\u5069\u506a\u506b\u506c\u506d\u506e\u506f\u5070\u5072\u5073\u5074\u5075\u5076\u5077\u507a\u507d\u5080\u5081\u5082\u5083\u5085\u5087\u5088\u508b\u508c\u508d\u508e\u5090\u5091\u5092\u5094\u5095\u5096\u5098\u5099\u509a\u509b\u509c\u509d\u509e\u50a2\u50a3\u50a6\u50ac\u50ad\u50ae\u50af\u50b0\u50b1\u50b2\u50b3\u50b4\u50b5\u50b6\u50b7\u50b8\u50ba\u50bb\u50bd\u50be\u50bf\u50c1\u50c2\u50c4\u50c5\u50c6\u50c7\u50c8\u50c9\u50ca\u50cb\u50cd\u50ce\u50cf\u50d0\u50d1\u50d3\u50d4\u50d5"+
"\u50d6\u50d7\u50d9\u50da\u50db\u50dd\u50df\u50e0\u50e1\u50e3\u50e4\u50e5\u50e6\u50e7\u50e8\u50e9\u50ea\u50ec\u50ed\u50ee\u50ef\u50f0\u50f1\u50f3\u50f4\u50f5\u50f6\u50f8\u50f9\u50fb\u50fc\u50fd\u50fe\u50ff\u5100\u5101\u5102\u5103\u5104\u5105\u5106\u5107\u5108\u5109\u510a\u510b\u510c\u510d\u510e\u5110\u5111\u5112\u5113\u5114\u5115\u5117\u5118\u511a\u511c\u511f\u5120\u5121\u5122\u5124\u5125\u5126\u5129\u512a\u512b\u512d\u512e\u5130\u5131\u5132\u5133\u5134\u5135\u5137\u5138\u5139\u513a\u513b\u513c\u513d\u513f\u5140\u5141\u5143\u5144\u5145\u5146\u5147\u5148\u5149\u514b\u514c\u514d\u5152\u5154\u5155\u5156\u5157\u5159\u515a\u515b\u515c\u515d\u515e\u515f\u5160\u5161\u5162\u5163\u5165\u5167\u5168\u5169\u516a\u516b\u516c\u516d\u516e\u5171\u5174\u5175\u5176\u5177\u5178"+
"\u5179\u517c\u5180\u5182\u5186\u5187\u5188\u5189\u518a\u518d\u518f\u5191\u5192\u5193\u5194\u5195\u5196\u5197\u5198\u519a\u519c\u519e\u51a0\u51a2\u51a4\u51a5\u51a7\u51a8\u51aa\u51ab\u51ac\u51b0\u51b1\u51b2\u51b3\u51b4\u51b5\u51b6\u51b7\u51b8\u51b9\u51bc\u51bd\u51be\u51c3\u51c4\u51c5\u51c6\u51c7\u51c8\u51c9\u51ca\u51cb\u51cc\u51cd\u51ce\u51cf\u51d0\u51d1\u51d2\u51d3\u51d4\u51d7\u51d8\u51db\u51dc\u51dd\u51de\u51df\u51e0\u51e1\u51e2\u51e4\u51ed\u51f0\u51f1\u51f3\u51f4\u51f5\u51f6\u51f8\u51f9\u51fa\u51fc\u51fd\u51fe\u5200\u5201\u5202\u5203\u5205\u5206\u5207\u5208\u5209\u520a\u520b\u520c\u520e\u5210\u5211\u5212\u5213\u5216\u5217\u521c\u521d\u521e\u521f\u5220\u5221\u5224\u5225\u5226\u5227\u5228\u5229\u522a\u522e\u5230\u5231\u5232\u5233\u5234\u5235\u5236\u5237\u5238"+
"\u523a\u523b\u523c\u5241\u5243\u5244\u5246\u5247\u5249\u524a\u524b\u524c\u524d\u524e\u5252\u5254\u5255\u5256\u5257\u5259\u525a\u525b\u525c\u525d\u525e\u525f\u5260\u5261\u5262\u5268\u5269\u526a\u526b\u526c\u526d\u526e\u526f\u5272\u5273\u5274\u5275\u5277\u5278\u5279\u527a\u527b\u527c\u527d\u527f\u5280\u5281\u5282\u5283\u5284\u5287\u5288\u5289\u528a\u528b\u528c\u528d\u528f\u5290\u5291\u5293\u5294\u5296\u5297\u5298\u5299\u529a\u529b\u529f\u52a0\u52a1\u52a3\u52a4\u52a6\u52a8\u52a9\u52aa\u52ab\u52ac\u52ad\u52ae\u52b5\u52b9\u52bb\u52bc\u52be\u52c0\u52c1\u52c2\u52c3\u52c5\u52c7\u52c9\u52cc\u52cd\u52d0\u52d1\u52d2\u52d3\u52d5\u52d6\u52d7\u52d8\u52d9\u52db\u52dd\u52de\u52df\u52e0\u52e1\u52e2\u52e3\u52e4\u52e6\u52e9\u52eb\u52ef\u52f0\u52f1\u52f3\u52f4\u52f5\u52f7\u52f8"+
"\u52f9\u52fa\u52fb\u52fc\u52fe\u52ff\u5301\u5305\u5306\u5308\u5309\u530a\u530b\u530d\u530e\u530f\u5310\u5311\u5312\u5315\u5316\u5317\u5319\u531a\u531c\u531d\u531f\u5320\u5321\u5322\u5323\u5327\u532a\u532c\u532d\u532f\u5330\u5331\u5332\u5333\u5334\u5337\u5338\u5339\u533b\u533c\u533d\u533e\u533f\u5340\u5341\u5342\u5343\u5344\u5345\u5347\u5348\u5349\u534a\u534c\u534d\u534e\u5351\u5352\u5353\u5354\u5357\u535a\u535c\u535d\u535e\u535f\u5360\u5361\u5363\u5364\u5366\u5367\u5369\u536c\u536d\u536e\u536f\u5370\u5371\u5372\u5373\u5374\u5375\u5377\u5378\u5379\u537b\u537c\u537d\u537e\u537f\u5382\u5384\u538a\u538e\u538f\u5392\u5393\u5394\u5396\u5397\u5398\u5399\u539a\u539c\u539d\u539e\u539f\u53a0\u53a2\u53a4\u53a5\u53a6\u53a7\u53a8\u53a9\u53aa\u53ab\u53ac\u53ad\u53ae\u53b0"+
"\u53b2\u53b4\u53b6\u53b9\u53bb\u53c1\u53c2\u53c3\u53c5\u53c8\u53c9\u53ca\u53cb\u53cc\u53cd\u53d0\u53d1\u53d2\u53d4\u53d6\u53d7\u53d8\u53d9\u53da\u53db\u53df\u53e0\u53e1\u53e2\u53e3\u53e4\u53e5\u53e6\u53e8\u53e9\u53ea\u53eb\u53ec\u53ed\u53ee\u53ef\u53f0\u53f1\u53f2\u53f3\u53f5\u53f6\u53f7\u53f8\u53fb\u53fc\u53fe\u5401\u5403\u5404\u5406\u5407\u5408\u5409\u540a\u540b\u540c\u540d\u540e\u540f\u5410\u5411\u5412\u5413\u5414\u5416\u5418\u5419\u541a\u541b\u541c\u541d\u541e\u541f\u5420\u5421\u5423\u5424\u5425\u5426\u5427\u5428\u5429\u542a\u542b\u542c\u542d\u542e\u542f\u5430\u5431\u5432\u5433\u5435\u5436\u5437\u5438\u5439\u543b\u543c\u543d\u543e\u5440\u5441\u5442\u5443\u5445\u5446\u5447\u5448\u544a\u544b\u544d\u544e\u544f\u5454\u5460\u5461\u5462\u5463\u5464\u5465\u5466"+
"\u5467\u5468\u5469\u546a\u546b\u546c\u546d\u546f\u5470\u5471\u5472\u5473\u5474\u5475\u5476\u5477\u5478\u547a\u547b\u547c\u547d\u547e\u547f\u5480\u5481\u5482\u5484\u5485\u5486\u5487\u5488\u548b\u548c\u548d\u548e\u548f\u5490\u5491\u5492\u5493\u5494\u5495\u5496\u5497\u5498\u549a\u549c\u549e\u54a0\u54a1\u54a2\u54a3\u54a4\u54a5\u54a6\u54a7\u54a8\u54a9\u54aa\u54ab\u54ac\u54ad\u54ae\u54af\u54b0\u54b1\u54b2\u54b3\u54b4\u54b6\u54b7\u54b8\u54b9\u54ba\u54bb\u54bc\u54bd\u54be\u54bf\u54c0\u54c1\u54c2\u54c3\u54c4\u54c5\u54c6\u54c7\u54c8\u54c9\u54cb\u54cc\u54cd\u54ce\u54cf\u54d0\u54d6\u54da\u54de\u54e0\u54e1\u54e2\u54e3\u54e4\u54e5\u54e6\u54e7\u54e8\u54e9\u54ea\u54eb\u54ed\u54ee\u54ef\u54f1\u54f2\u54f3\u54f7\u54f8\u54fa\u54fb\u54fc\u54fd\u54ff\u5501\u5502\u5503\u5504\u5505"+
"\u5506\u5507\u5508\u5509\u550a\u550b\u550c\u550d\u550e\u550f\u5510\u5511\u5512\u5513\u5514\u5517\u5518\u551a\u551e\u5523\u5525\u5526\u5527\u5528\u552a\u552b\u552c\u552d\u552e\u552f\u5530\u5531\u5532\u5533\u5534\u5535\u5536\u5537\u5538\u5539\u553b\u553c\u553e\u553f\u5540\u5541\u5543\u5544\u5545\u5546\u5547\u5548\u5549\u554a\u554b\u554d\u554e\u554f\u5550\u5551\u5552\u5553\u5555\u5556\u5557\u555c\u555d\u555e\u555f\u5561\u5562\u5563\u5564\u5565\u5566\u5569\u556a\u556b\u5571\u5572\u5573\u5575\u5576\u5577\u5579\u557b\u557c\u557d\u557e\u557f\u5580\u5581\u5582\u5583\u5584\u5586\u5587\u5588\u5589\u558a\u558b\u558c\u558d\u558e\u558f\u5590\u5591\u5592\u5593\u5594\u5595\u5598\u5599\u559a\u559c\u559d\u559f\u55a1\u55a2\u55a3\u55a4\u55a5\u55a6\u55a7\u55a8\u55a9\u55aa\u55ab"+
"\u55ac\u55ad\u55ae\u55b0\u55b1\u55b2\u55b3\u55b4\u55b5\u55b9\u55ba\u55bb\u55bc\u55bf\u55c0\u55c1\u55c2\u55c3\u55c4\u55c5\u55c6\u55c7\u55c8\u55c9\u55ca\u55cb\u55cc\u55cd\u55ce\u55cf\u55d0\u55d1\u55d2\u55d3\u55d4\u55d5\u55d6\u55d7\u55d8\u55d9\u55da\u55db\u55dc\u55dd\u55de\u55df\u55e1\u55e2\u55e3\u55e4\u55e5\u55e6\u55e7\u55e8\u55e9\u55ea\u55ec\u55ef\u55f0\u55f1\u55f2\u55f5\u55f6\u55f7\u55f9\u55fa\u55fb\u55fc\u55fd\u55fe\u55ff\u5600\u5601\u5602\u5604\u5605\u5606\u5608\u5609\u560c\u560d\u560e\u560f\u5610\u5611\u5612\u5613\u5614\u5615\u5616\u5617\u561b\u561c\u561d\u561e\u561f\u5620\u5621\u5622\u5623\u5625\u5627\u5629\u562a\u562c\u562d\u562e\u562f\u5630\u5632\u5633\u5634\u5635\u5636\u5637\u5638\u5639\u563a\u563b\u563d\u563e\u563f\u5640\u5641\u5642\u5643\u5645\u5646"+
"\u5648\u5649\u564a\u564c\u564d\u564e\u564f\u5650\u5652\u5653\u5654\u5657\u5658\u5659\u565a\u565d\u565e\u5660\u5661\u5662\u5663\u5664\u5665\u5666\u5668\u5669\u566a\u566b\u566c\u566d\u566e\u566f\u5670\u5671\u5672\u5673\u5674\u5676\u5677\u5678\u5679\u567a\u567b\u567c\u567e\u567f\u5680\u5681\u5682\u5683\u5684\u5685\u5686\u5687\u5689\u568a\u568b\u568c\u568d\u568e\u568f\u5690\u5692\u5693\u5695\u5697\u5698\u5699\u569a\u569c\u569d\u569e\u569f\u56a1\u56a4\u56a5\u56a6\u56a7\u56a8\u56aa\u56ab\u56ac\u56ad\u56ae\u56af\u56b1\u56b2\u56b3\u56b4\u56b5\u56b6\u56b7\u56b9\u56bc\u56bd\u56be\u56bf\u56c0\u56c1\u56c2\u56c3\u56c5\u56c6\u56c8\u56c9\u56ca\u56cb\u56cc\u56cd\u56d1\u56d3\u56d4\u56d6\u56d7\u56da\u56db\u56dd\u56de\u56df\u56e0\u56e1\u56e2\u56e4\u56e5\u56e7\u56ea\u56eb\u56ed"+
"\u56ee\u56ef\u56f0\u56f1\u56f7\u56f9\u56fa\u56fd\u56ff\u5700\u5701\u5702\u5703\u5704\u5707\u5708\u5709\u570a\u570b\u570c\u570d\u5712\u5713\u5714\u5715\u5716\u5718\u571a\u571b\u571c\u571d\u571e\u571f\u5720\u5722\u5723\u5728\u5729\u572a\u572c\u572d\u572e\u572f\u5730\u5732\u5733\u5734\u573b\u573e\u573f\u5740\u5741\u5742\u5743\u5745\u5746\u5747\u5749\u574a\u574b\u574c\u574d\u574e\u574f\u5750\u5751\u5752\u5754\u5757\u575b\u575f\u5761\u5762\u5764\u5766\u5767\u5768\u5769\u576a\u576b\u576d\u576f\u5770\u5771\u5772\u5773\u5774\u5775\u5776\u5777\u577a\u577b\u577c\u577d\u577e\u577f\u5780\u5782\u5783\u5788\u578a\u578b\u578c\u578d\u578f\u5790\u5793\u5794\u5795\u5797\u5798\u5799\u579a\u579b\u579c\u579d\u579e\u579f\u57a0\u57a1\u57a2\u57a3\u57a4\u57a5\u57a7\u57aa\u57ae\u57b4"+
"\u57b5\u57b6\u57b8\u57b9\u57ba\u57bb\u57bc\u57bd\u57be\u57bf\u57c1\u57c2\u57c3\u57c4\u57c6\u57c7\u57c8\u57cb\u57cc\u57ce\u57cf\u57d0\u57d2\u57d4\u57d5\u57d7\u57dc\u57dd\u57de\u57df\u57e0\u57e1\u57e2\u57e3\u57e4\u57e5\u57e6\u57e7\u57e9\u57ec\u57ed\u57ee\u57ef\u57f0\u57f1\u57f2\u57f3\u57f4\u57f5\u57f6\u57f7\u57f8\u57f9\u57fa\u57fb\u57fc\u57fd\u57fe\u5800\u5801\u5802\u5803\u5804\u5805\u5806\u5807\u5808\u5809\u580a\u580b\u580c\u580d\u580e\u5810\u5812\u5814\u5819\u581b\u581c\u581d\u581e\u5820\u5821\u5822\u5823\u5824\u5825\u5826\u5827\u5828\u5829\u582a\u582c\u582d\u582e\u582f\u5830\u5831\u5832\u5833\u5834\u5835\u5836\u5837\u5838\u5839\u583a\u583b\u583d\u583f\u5840\u5844\u5847\u5848\u5849\u584a\u584b\u584c\u584d\u584e\u584f\u5851\u5852\u5853\u5854\u5855\u5857\u5858"+
"\u5859\u585a\u585b\u585c\u585d\u585e\u585f\u5862\u5863\u5864\u5865\u5868\u5869\u586b\u586c\u586d\u586f\u5871\u5872\u5873\u5874\u5875\u5876\u5879\u587a\u587b\u587c\u587d\u587e\u587f\u5880\u5881\u5882\u5883\u5885\u5886\u5887\u5888\u5889\u588a\u588b\u588e\u588f\u5890\u5891\u5893\u5894\u5898\u5899\u589a\u589c\u589d\u589e\u589f\u58a0\u58a1\u58a3\u58a5\u58a6\u58a7\u58a8\u58a9\u58aa\u58ab\u58ac\u58ae\u58af\u58b0\u58b1\u58b3\u58b5\u58b6\u58ba\u58bc\u58bd\u58be\u58bf\u58c1\u58c2\u58c5\u58c6\u58c7\u58c8\u58c9\u58cb\u58ce\u58cf\u58d1\u58d2\u58d3\u58d4\u58d5\u58d6\u58d8\u58d9\u58da\u58db\u58dc\u58dd\u58de\u58df\u58e0\u58e2\u58e3\u58e4\u58e7\u58e8\u58e9\u58eb\u58ec\u58ef\u58f0\u58f2\u58f3\u58f4\u58f9\u58fa\u58fb\u58fc\u58fd\u58fe\u58ff\u5902\u5903\u5904\u5905\u5906\u5907"+
"\u590a\u590c\u590d\u590e\u590f\u5911\u5912\u5914\u5915\u5916\u5917\u5919\u591a\u591c\u591f\u5920\u5922\u5924\u5925\u5927\u5929\u592a\u592b\u592c\u592d\u592e\u592f\u5931\u5932\u5934\u5937\u5938\u593c\u593e\u5940\u5944\u5945\u5947\u5948\u5949\u594a\u594e\u594f\u5950\u5951\u5953\u5954\u5955\u5957\u5958\u595a\u595c\u5960\u5961\u5962\u5965\u5967\u5969\u596a\u596b\u596d\u596e\u5970\u5971\u5972\u5973\u5974\u5975\u5976\u5977\u5978\u5979\u597b\u597c\u597d\u597e\u597f\u5980\u5981\u5982\u5983\u5984\u5985\u5989\u598a\u598d\u598e\u598f\u5990\u5992\u5993\u5994\u5996\u5997\u5998\u5999\u599a\u599d\u599e\u599f\u59a0\u59a1\u59a2\u59a3\u59a4\u59a5\u59a6\u59a7\u59a8\u59ac\u59ae\u59af\u59b0\u59b1\u59b2\u59b3\u59b4\u59b5\u59b6\u59b7\u59b8\u59b9\u59ba\u59bb\u59bc\u59bd\u59be\u59c0"+
"\u59c1\u59c3\u59c4\u59c5\u59c6\u59c7\u59c8\u59c9\u59ca\u59cb\u59cc\u59cd\u59ce\u59cf\u59d0\u59d1\u59d2\u59d3\u59d4\u59d6\u59d8\u59d9\u59da\u59db\u59dc\u59dd\u59de\u59e0\u59e1\u59e3\u59e4\u59e5\u59e6\u59e8\u59e9\u59ea\u59eb\u59ec\u59ed\u59ee\u59ef\u59f0\u59f1\u59f2\u59f3\u59f4\u59f5\u59f6\u59f7\u59f8\u59f9\u59fa\u59fb\u59fc\u59fd\u59fe\u59ff\u5a00\u5a01\u5a02\u5a03\u5a09\u5a0a\u5a0b\u5a0c\u5a0d\u5a0f\u5a11\u5a12\u5a13\u5a15\u5a16\u5a17\u5a18\u5a19\u5a1b\u5a1c\u5a1e\u5a1f\u5a20\u5a21\u5a23\u5a24\u5a25\u5a27\u5a29\u5a2a\u5a2b\u5a2c\u5a2d\u5a2e\u5a33\u5a35\u5a36\u5a37\u5a38\u5a39\u5a3c\u5a3d\u5a3e\u5a40\u5a41\u5a42\u5a43\u5a44\u5a45\u5a46\u5a47\u5a48\u5a49\u5a4a\u5a4c\u5a4d\u5a50\u5a51\u5a52\u5a53\u5a54\u5a55\u5a56\u5a57\u5a58\u5a59\u5a5a\u5a5b\u5a5c\u5a5d\u5a5e"+
"\u5a5f\u5a60\u5a61\u5a62\u5a63\u5a64\u5a65\u5a66\u5a67\u5a68\u5a69\u5a6a\u5a6b\u5a6c\u5a6d\u5a6e\u5a70\u5a71\u5a77\u5a78\u5a79\u5a7a\u5a7b\u5a7c\u5a7d\u5a7e\u5a7f\u5a81\u5a82\u5a83\u5a84\u5a86\u5a88\u5a8a\u5a8b\u5a8c\u5a8e\u5a8f\u5a90\u5a91\u5a92\u5a93\u5a94\u5a95\u5a96\u5a97\u5a99\u5a9a\u5a9b\u5a9c\u5a9d\u5a9e\u5a9f\u5aa0\u5aa1\u5aa2\u5aa5\u5aa6\u5aa7\u5aa9\u5aab\u5aac\u5aae\u5aaf\u5ab0\u5ab1\u5ab2\u5ab3\u5ab4\u5ab5\u5ab6\u5ab7\u5ab8\u5ab9\u5aba\u5abb\u5abc\u5abd\u5abe\u5abf\u5ac0\u5ac1\u5ac2\u5ac3\u5ac4\u5ac6\u5ac7\u5ac8\u5ac9\u5aca\u5acb\u5acc\u5acd\u5ace\u5acf\u5ad3\u5ad5\u5ad6\u5ad7\u5ad8\u5ad9\u5ada\u5adb\u5adc\u5add\u5ade\u5adf\u5ae0\u5ae1\u5ae2\u5ae3\u5ae4\u5ae5\u5ae6\u5ae8\u5ae9\u5aea\u5aeb\u5aec\u5aed\u5aee\u5af0\u5af2\u5af3\u5af4\u5af5\u5af6\u5af7"+
"\u5af8\u5af9\u5afb\u5afd\u5afe\u5aff\u5b01\u5b02\u5b03\u5b05\u5b07\u5b08\u5b09\u5b0b\u5b0c\u5b0d\u5b0f\u5b10\u5b11\u5b13\u5b14\u5b16\u5b17\u5b19\u5b1a\u5b1b\u5b1d\u5b1e\u5b1f\u5b20\u5b21\u5b23\u5b24\u5b25\u5b26\u5b27\u5b28\u5b2a\u5b2b\u5b2c\u5b2d\u5b2e\u5b2f\u5b30\u5b32\u5b34\u5b38\u5b3c\u5b3d\u5b3e\u5b3f\u5b40\u5b41\u5b43\u5b44\u5b45\u5b46\u5b47\u5b48\u5b4a\u5b4b\u5b4c\u5b4d\u5b4e\u5b4f\u5b50\u5b51\u5b53\u5b54\u5b55\u5b56\u5b57\u5b58\u5b5a\u5b5b\u5b5c\u5b5d\u5b5f\u5b62\u5b63\u5b64\u5b65\u5b66\u5b68\u5b69\u5b6b\u5b6c\u5b6d\u5b6e\u5b70\u5b71\u5b72\u5b73\u5b74\u5b75\u5b76\u5b77\u5b78\u5b7a\u5b7b\u5b7c\u5b7d\u5b7f\u5b80\u5b81\u5b82\u5b83\u5b84\u5b85\u5b87\u5b88\u5b89\u5b8b\u5b8c\u5b8e\u5b8f\u5b90\u5b92\u5b93\u5b95\u5b97\u5b98\u5b99\u5b9a\u5b9b\u5b9c\u5b9d\u5b9e"+
"\u5b9f\u5ba2\u5ba3\u5ba4\u5ba5\u5ba6\u5ba7\u5ba8\u5baa\u5bac\u5bad\u5bae\u5bb0\u5bb3\u5bb4\u5bb5\u5bb6\u5bb8\u5bb9\u5bbf\u5bc0\u5bc1\u5bc2\u5bc3\u5bc4\u5bc5\u5bc6\u5bc7\u5bca\u5bcb\u5bcc\u5bcd\u5bce\u5bd0\u5bd1\u5bd2\u5bd3\u5bd4\u5bd5\u5bd6\u5bd7\u5bd8\u5bd9\u5bde\u5bdf\u5be0\u5be1\u5be2\u5be3\u5be4\u5be5\u5be6\u5be7\u5be8\u5be9\u5bea\u5beb\u5bec\u5bee\u5bef\u5bf0\u5bf1\u5bf2\u5bf3\u5bf5\u5bf6\u5bf8\u5bfa\u5bff\u5c01\u5c03\u5c04\u5c05\u5c07\u5c08\u5c09\u5c0a\u5c0b\u5c0c\u5c0d\u5c0e\u5c0f\u5c10\u5c11\u5c12\u5c13\u5c14\u5c15\u5c16\u5c1a\u5c1c\u5c1e\u5c1f\u5c20\u5c22\u5c23\u5c24\u5c25\u5c28\u5c2a\u5c2c\u5c30\u5c31\u5c33\u5c37\u5c38\u5c39\u5c3a\u5c3b\u5c3c\u5c3e\u5c3f\u5c40\u5c41\u5c44\u5c45\u5c46\u5c47\u5c48\u5c49\u5c4a\u5c4b\u5c4c\u5c4d\u5c4e\u5c4f\u5c50\u5c51"+
"\u5c53\u5c54\u5c55\u5c56\u5c58\u5c59\u5c5c\u5c5d\u5c5e\u5c60\u5c62\u5c63\u5c64\u5c65\u5c67\u5c68\u5c69\u5c6a\u5c6c\u5c6d\u5c6e\u5c6f\u5c71\u5c73\u5c74\u5c79\u5c7a\u5c7b\u5c7c\u5c7e\u5c85\u5c86\u5c88\u5c89\u5c8a\u5c8b\u5c8c\u5c8d\u5c8f\u5c90\u5c91\u5c92\u5c93\u5c94\u5c95\u5c99\u5c9a\u5c9c\u5c9d\u5c9e\u5c9f\u5ca0\u5ca1\u5ca2\u5ca3\u5ca4\u5ca5\u5ca6\u5ca7\u5ca8\u5ca9\u5caa\u5cab\u5cac\u5cad\u5cae\u5caf\u5cb0\u5cb1\u5cb3\u5cb5\u5cb6\u5cb7\u5cb8\u5cba\u5cc1\u5cc2\u5cc6\u5cc7\u5cc8\u5cc9\u5cca\u5ccb\u5ccc\u5cce\u5ccf\u5cd0\u5cd1\u5cd2\u5cd3\u5cd4\u5cd6\u5cd7\u5cd8\u5cd9\u5cda\u5cdb\u5cde\u5cdf\u5ce5\u5ce8\u5ce9\u5cea\u5cec\u5ced\u5cee\u5cef\u5cf0\u5cf1\u5cf4\u5cf6\u5cf7\u5cf8\u5cf9\u5cfb\u5cfd\u5cff\u5d00\u5d01\u5d06\u5d07\u5d0b\u5d0c\u5d0d\u5d0e\u5d0f\u5d10\u5d11"+
"\u5d12\u5d14\u5d15\u5d16\u5d17\u5d18\u5d19\u5d1a\u5d1b\u5d1d\u5d1e\u5d1f\u5d20\u5d22\u5d23\u5d24\u5d25\u5d26\u5d27\u5d28\u5d29\u5d2c\u5d2e\u5d2f\u5d30\u5d31\u5d32\u5d33\u5d34\u5d35\u5d36\u5d37\u5d38\u5d39\u5d3a\u5d3c\u5d3d\u5d3e\u5d3f\u5d40\u5d41\u5d42\u5d43\u5d45\u5d46\u5d47\u5d48\u5d49\u5d4a\u5d4b\u5d4c\u5d4e\u5d50\u5d51\u5d52\u5d55\u5d56\u5d57\u5d59\u5d5b\u5d5e\u5d62\u5d63\u5d65\u5d67\u5d68\u5d69\u5d6b\u5d6c\u5d6f\u5d70\u5d71\u5d72\u5d74\u5d77\u5d79\u5d7a\u5d7c\u5d7d\u5d7e\u5d7f\u5d80\u5d81\u5d82\u5d84\u5d85\u5d86\u5d87\u5d88\u5d89\u5d8a\u5d8b\u5d8d\u5d8e\u5d92\u5d93\u5d94\u5d95\u5d97\u5d99\u5d9a\u5d9c\u5d9d\u5d9e\u5d9f\u5da0\u5da1\u5da2\u5da4\u5da7\u5da8\u5da9\u5daa\u5dab\u5dac\u5dad\u5dae\u5daf\u5db0\u5db1\u5db2\u5db4\u5db5\u5db6\u5db7\u5db8\u5db9\u5dba"+
"\u5dbc\u5dbd\u5dc0\u5dc1\u5dc2\u5dc3\u5dc6\u5dc7\u5dc9\u5dcb\u5dcd\u5dcf\u5dd1\u5dd2\u5dd4\u5dd5\u5dd6\u5dd7\u5dd8\u5ddb\u5ddd\u5dde\u5ddf\u5de0\u5de1\u5de2\u5de5\u5de6\u5de7\u5de8\u5deb\u5dee\u5df0\u5df1\u5df2\u5df3\u5df4\u5df5\u5df7\u5df9\u5dfd\u5dfe\u5dff\u5e02\u5e03\u5e04\u5e06\u5e09\u5e0a\u5e0b\u5e0c\u5e0e\u5e11\u5e12\u5e14\u5e15\u5e16\u5e17\u5e18\u5e19\u5e1a\u5e1b\u5e1d\u5e1f\u5e20\u5e21\u5e22\u5e23\u5e24\u5e25\u5e28\u5e29\u5e2b\u5e2d\u5e2e\u5e33\u5e34\u5e36\u5e37\u5e38\u5e3d\u5e3e\u5e40\u5e41\u5e42\u5e43\u5e44\u5e45\u5e48\u5e4a\u5e4b\u5e4c\u5e4d\u5e4e\u5e4f\u5e53\u5e54\u5e55\u5e57\u5e58\u5e59\u5e5b\u5e5c\u5e5d\u5e5e\u5e5f\u5e60\u5e61\u5e62\u5e63\u5e66\u5e67\u5e68\u5e69\u5e6a\u5e6b\u5e6c\u5e6d\u5e6e\u5e6f\u5e70\u5e72\u5e73\u5e74\u5e75\u5e76\u5e78\u5e79"+
"\u5e7a\u5e7b\u5e7c\u5e7d\u5e7e\u5e7f\u5e80\u5e82\u5e83\u5e84\u5e86\u5e87\u5e88\u5e89\u5e8a\u5e8b\u5e8c\u5e8d\u5e8f\u5e95\u5e96\u5e97\u5e9a\u5e9b\u5e9c\u5ea0\u5ea2\u5ea3\u5ea4\u5ea5\u5ea6\u5ea7\u5ea8\u5eaa\u5eab\u5eac\u5ead\u5eae\u5eb0\u5eb1\u5eb2\u5eb3\u5eb4\u5eb5\u5eb6\u5eb7\u5eb8\u5eb9\u5ebd\u5ebe\u5ec1\u5ec2\u5ec4\u5ec5\u5ec6\u5ec7\u5ec8\u5ec9\u5eca\u5ecb\u5ecc\u5ecd\u5ece\u5ed0\u5ed1\u5ed2\u5ed3\u5ed4\u5ed5\u5ed6\u5ed7\u5ed8\u5ed9\u5eda\u5edb\u5edc\u5edd\u5ede\u5edf\u5ee0\u5ee1\u5ee2\u5ee3\u5ee5\u5ee6\u5ee7\u5ee8\u5ee9\u5eec\u5eee\u5eef\u5ef1\u5ef2\u5ef3\u5ef4\u5ef6\u5ef7\u5ef8\u5ef9\u5efa\u5efb\u5efc\u5efe\u5eff\u5f01\u5f02\u5f04\u5f05\u5f07\u5f08\u5f0a\u5f0b\u5f0c\u5f0d\u5f0e\u5f0f\u5f12\u5f13\u5f14\u5f15\u5f17\u5f18\u5f1a\u5f1b\u5f1d\u5f1f\u5f22\u5f23"+
"\u5f24\u5f25\u5f26\u5f27\u5f28\u5f29\u5f2d\u5f2e\u5f30\u5f31\u5f33\u5f35\u5f36\u5f37\u5f38\u5f3a\u5f3c\u5f40\u5f43\u5f44\u5f46\u5f48\u5f49\u5f4a\u5f4b\u5f4c\u5f4d\u5f4e\u5f4f\u5f50\u5f51\u5f54\u5f56\u5f57\u5f58\u5f59\u5f5c\u5f5d\u5f61\u5f62\u5f63\u5f64\u5f65\u5f67\u5f69\u5f6a\u5f6b\u5f6c\u5f6d\u5f6f\u5f70\u5f71\u5f72\u5f73\u5f74\u5f76\u5f77\u5f78\u5f79\u5f7b\u5f7c\u5f7d\u5f7e\u5f7f\u5f80\u5f81\u5f82\u5f83\u5f85\u5f86\u5f87\u5f88\u5f89\u5f8a\u5f8b\u5f8c\u5f90\u5f91\u5f92\u5f96\u5f97\u5f98\u5f99\u5f9b\u5f9c\u5f9e\u5f9f\u5fa0\u5fa1\u5fa4\u5fa5\u5fa6\u5fa7\u5fa8\u5fa9\u5faa\u5fab\u5fac\u5fad\u5fae\u5faf\u5fb1\u5fb2\u5fb5\u5fb6\u5fb7\u5fb9\u5fba\u5fbb\u5fbc\u5fbd\u5fbe\u5fbf\u5fc0\u5fc1\u5fc3\u5fc4\u5fc5\u5fc9\u5fcc\u5fcd\u5fcf\u5fd0\u5fd1\u5fd2\u5fd4\u5fd5\u5fd6"+
"\u5fd7\u5fd8\u5fd9\u5fdb\u5fdd\u5fde\u5fdf\u5fe0\u5fe1\u5fe3\u5fe4\u5fe5\u5fe8\u5fea\u5feb\u5fed\u5fee\u5fef\u5ff1\u5ff3\u5ff4\u5ff5\u5ff7\u5ff8\u5ffa\u5ffb\u5ffd\u5fff\u6000\u6009\u600a\u600b\u600c\u600d\u600e\u600f\u6010\u6011\u6012\u6013\u6014\u6015\u6016\u6017\u6019\u601a\u601b\u601c\u601d\u601e\u6020\u6021\u6022\u6023\u6024\u6025\u6026\u6027\u6028\u6029\u602a\u602b\u602c\u602d\u602e\u602f\u6031\u6032\u6033\u6034\u6035\u6037\u6039\u603b\u6040\u6041\u6042\u6043\u6044\u6045\u6046\u6047\u6049\u604a\u604c\u604d\u6050\u6053\u6054\u6055\u6058\u6059\u605a\u605b\u605d\u605e\u605f\u6062\u6063\u6064\u6065\u6066\u6067\u6068\u6069\u606a\u606b\u606c\u606d\u606e\u606f\u6070\u6072\u6075\u6077\u607e\u607f\u6080\u6081\u6083\u6084\u6085\u6086\u6087\u6088\u6089\u608a\u608c"+
"\u608d\u608e\u6090\u6092\u6094\u6095\u6096\u6097\u609a\u609b\u609c\u609d\u609e\u609f\u60a0\u60a2\u60a3\u60a4\u60a7\u60a8\u60b0\u60b1\u60b2\u60b3\u60b4\u60b5\u60b6\u60b7\u60b8\u60b9\u60ba\u60bb\u60bc\u60bd\u60be\u60bf\u60c0\u60c1\u60c3\u60c4\u60c5\u60c6\u60c7\u60c8\u60c9\u60ca\u60cb\u60cc\u60cd\u60ce\u60cf\u60d1\u60d3\u60d4\u60d5\u60d7\u60d8\u60d9\u60da\u60db\u60dc\u60dd\u60de\u60df\u60e0\u60e1\u60e2\u60e3\u60e4\u60e6\u60e7\u60e8\u60e9\u60f0\u60f1\u60f2\u60f3\u60f4\u60f5\u60f6\u60f7\u60f8\u60f9\u60fa\u60fb\u60fc\u60fd\u60fe\u60ff\u6100\u6101\u6103\u6104\u6105\u6106\u6107\u6108\u6109\u610a\u610b\u610c\u610d\u610e\u610f\u6110\u6112\u6113\u6114\u6115\u6116\u6118\u6119\u611a\u611b\u611c\u611d\u611f\u6123\u6127\u6128\u6129\u612b\u612c\u612e\u612f\u6130\u6132\u6134"+
"\u6136\u6137\u613b\u613d\u613e\u613f\u6140\u6141\u6142\u6144\u6145\u6146\u6147\u6148\u6149\u614a\u614b\u614c\u614d\u614e\u614f\u6150\u6152\u6153\u6154\u6155\u6156\u6158\u6159\u615a\u615b\u615c\u615d\u615e\u615f\u6160\u6161\u6162\u6163\u6164\u6165\u6166\u6167\u6168\u616a\u616b\u616c\u616e\u616f\u6170\u6171\u6172\u6173\u6174\u6175\u6176\u6177\u6179\u617a\u617c\u617d\u617e\u6180\u6181\u6182\u6183\u6187\u6189\u618a\u618b\u618c\u618d\u618e\u6190\u6191\u6192\u6193\u6194\u6195\u6196\u6198\u6199\u619a\u619b\u619c\u619d\u619f\u61a1\u61a2\u61a4\u61a7\u61a8\u61a9\u61aa\u61ab\u61ac\u61ad\u61ae\u61af\u61b0\u61b1\u61b2\u61b3\u61b4\u61b5\u61b6\u61b7\u61b8\u61b9\u61ba\u61bc\u61be\u61bf\u61c0\u61c1\u61c2\u61c3\u61c5\u61c6\u61c7\u61c8\u61c9\u61ca\u61cb\u61cc\u61cd\u61cf\u61d0"+
"\u61d3\u61d6\u61d8\u61da\u61de\u61df\u61e0\u61e2\u61e3\u61e4\u61e5\u61e6\u61e7\u61e8\u61e9\u61ea\u61eb\u61ed\u61ee\u61f0\u61f1\u61f2\u61f5\u61f6\u61f7\u61f8\u61f9\u61fa\u61fb\u61fc\u61fd\u61fe\u61ff\u6200\u6201\u6203\u6204\u6207\u6208\u6209\u620a\u620c\u620d\u620e\u6210\u6211\u6212\u6214\u6215\u6216\u6219\u621a\u621b\u621f\u6220\u6221\u6222\u6223\u6224\u6225\u6227\u6229\u622a\u622b\u622c\u622d\u622e\u6230\u6232\u6233\u6234\u6236\u6237\u6239\u623a\u623d\u623e\u623f\u6240\u6241\u6242\u6243\u6246\u6247\u6248\u6249\u624a\u624b\u624c\u624d\u624e\u6250\u6251\u6252\u6253\u6254\u6258\u6259\u625a\u625b\u625c\u625e\u6260\u6261\u6262\u6263\u6264\u6265\u6266\u6268\u626d\u626e\u626f\u6270\u6271\u6272\u6273\u6274\u6276\u6277\u6279\u627a\u627b\u627c\u627d\u627e\u627f\u6280"+
"\u6281\u6282\u6283\u6284\u6285\u6286\u6287\u6288\u6289\u628a\u628c\u628e\u628f\u6290\u6291\u6292\u6293\u6294\u6295\u6296\u6297\u6298\u629d\u62a4\u62a6\u62a8\u62a9\u62aa\u62ab\u62ac\u62ad\u62ae\u62af\u62b0\u62b1\u62b3\u62b4\u62b5\u62b6\u62b8\u62b9\u62bb\u62bc\u62bd\u62be\u62bf\u62c2\u62c3\u62c4\u62c5\u62c6\u62c7\u62c8\u62c9\u62ca\u62cb\u62cc\u62cd\u62ce\u62cf\u62d0\u62d1\u62d2\u62d3\u62d4\u62d5\u62d6\u62d7\u62d8\u62d9\u62da\u62db\u62dc\u62df\u62e5\u62eb\u62ec\u62ed\u62ee\u62ef\u62f0\u62f1\u62f2\u62f3\u62f4\u62f5\u62f6\u62f7\u62f8\u62f9\u62fa\u62fb\u62fc\u62fd\u62fe\u62ff\u6300\u6301\u6302\u6303\u6307\u6308\u6309\u630b\u630c\u630d\u630e\u630f\u6310\u6311\u6313\u6314\u6315\u6316\u6318\u6328\u6329\u632a\u632b\u632c\u632d\u632e\u632f\u6331\u6332\u6333\u6334\u6335"+
"\u6336\u6337\u6338\u6339\u633a\u633b\u633c\u633d\u633e\u6340\u6341\u6342\u6343\u6344\u6345\u6346\u6347\u6348\u6349\u634a\u634b\u634c\u634d\u634e\u634f\u6350\u6351\u6354\u6355\u6356\u6357\u6358\u6359\u635a\u6364\u6365\u6367\u6368\u6369\u636b\u636c\u636d\u636e\u636f\u6370\u6371\u6372\u6375\u6376\u6377\u6378\u6379\u637a\u637b\u637c\u637d\u637f\u6380\u6381\u6382\u6383\u6384\u6385\u6387\u6388\u6389\u638a\u638b\u638c\u638d\u638e\u638f\u6390\u6391\u6392\u6394\u6396\u6397\u6398\u6399\u639b\u639c\u639d\u639e\u639f\u63a0\u63a1\u63a2\u63a3\u63a4\u63a5\u63a7\u63a8\u63a9\u63aa\u63ab\u63ac\u63ad\u63ae\u63af\u63b0\u63b1\u63b9\u63bd\u63be\u63c0\u63c1\u63c2\u63c3\u63c4\u63c5\u63c6\u63c7\u63c8\u63c9\u63ca\u63cb\u63cc\u63cd\u63ce\u63cf\u63d0\u63d1\u63d2\u63d3\u63d5\u63d6\u63d7"+
"\u63d8\u63d9\u63da\u63db\u63dc\u63dd\u63de\u63df\u63e0\u63e1\u63e2\u63e3\u63e4\u63e5\u63e6\u63e7\u63e8\u63e9\u63ea\u63eb\u63ed\u63ee\u63ef\u63f0\u63f1\u63f2\u63f3\u63f4\u63f5\u63f6\u63f8\u63f9\u63fb\u63fc\u63fe\u6406\u6407\u6409\u640a\u640b\u640c\u640d\u640e\u640f\u6410\u6412\u6413\u6414\u6415\u6416\u6417\u6418\u641a\u641b\u641c\u641e\u641f\u6420\u6421\u6422\u6423\u6424\u6425\u6426\u6427\u6428\u642a\u642b\u642c\u642d\u642e\u642f\u6430\u6432\u6433\u6434\u6435\u6436\u6437\u6438\u6439\u643a\u643b\u643d\u643e\u643f\u6440\u6441\u6443\u644b\u644d\u644e\u6450\u6451\u6452\u6453\u6454\u6458\u6459\u645a\u645b\u645c\u645d\u645e\u645f\u6460\u6461\u6465\u6466\u6467\u6468\u6469\u646b\u646c\u646d\u646e\u646f\u6470\u6471\u6472\u6473\u6474\u6475\u6476\u6477\u6478\u6479\u647a"+
"\u647b\u647c\u647d\u647f\u6482\u6485\u6487\u6488\u6489\u648a\u648b\u648c\u648d\u648f\u6490\u6491\u6492\u6493\u6495\u6496\u6497\u6498\u6499\u649a\u649c\u649d\u649e\u649f\u64a0\u64a2\u64a3\u64a4\u64a5\u64a6\u64a9\u64ab\u64ac\u64ad\u64ae\u64af\u64b0\u64b1\u64b2\u64b3\u64b4\u64b6\u64bb\u64bc\u64bd\u64be\u64bf\u64c0\u64c1\u64c2\u64c3\u64c4\u64c5\u64c7\u64c9\u64ca\u64cb\u64cd\u64ce\u64cf\u64d0\u64d2\u64d3\u64d4\u64d6\u64d7\u64d8\u64d9\u64da\u64db\u64dd\u64e0\u64e1\u64e2\u64e3\u64e4\u64e5\u64e6\u64e7\u64e8\u64e9\u64ea\u64eb\u64ec\u64ed\u64ef\u64f0\u64f1\u64f2\u64f3\u64f4\u64f7\u64f8\u64fa\u64fb\u64fc\u64fd\u64fe\u64ff\u6500\u6501\u6503\u6504\u6506\u6507\u6509\u650a\u650c\u650d\u650e\u650f\u6510\u6511\u6513\u6514\u6515\u6516\u6517\u6518\u6519\u651b\u651c\u651d\u651e"+
"\u651f\u6520\u6521\u6522\u6523\u6524\u6525\u6526\u6529\u652a\u652b\u652c\u652d\u652e\u652f\u6530\u6532\u6533\u6534\u6535\u6536\u6537\u6538\u6539\u653b\u653d\u653e\u653f\u6541\u6543\u6545\u6546\u6548\u6549\u654a\u654d\u654f\u6551\u6553\u6554\u6555\u6556\u6557\u6558\u6559\u655c\u655d\u655e\u655f\u6562\u6563\u6564\u6565\u6566\u6567\u6568\u656a\u656b\u656c\u656d\u656f\u6572\u6573\u6574\u6575\u6576\u6577\u6578\u6579\u657a\u657b\u657c\u657f\u6580\u6581\u6582\u6583\u6584\u6585\u6586\u6587\u6588\u6589\u658c\u6590\u6591\u6592\u6594\u6595\u6596\u6597\u6599\u659b\u659c\u659d\u659e\u659f\u65a0\u65a1\u65a2\u65a4\u65a5\u65a7\u65a8\u65aa\u65ab\u65ac\u65ae\u65af\u65b0\u65b2\u65b3\u65b5\u65b6\u65b7\u65b8\u65b9\u65bb\u65bc\u65bd\u65be\u65bf\u65c1\u65c2\u65c3\u65c4\u65c5\u65c6"+
"\u65cb\u65cc\u65cd\u65ce\u65cf\u65d0\u65d1\u65d2\u65d3\u65d4\u65d6\u65d7\u65da\u65db\u65dd\u65de\u65df\u65e0\u65e1\u65e2\u65e3\u65e5\u65e6\u65e8\u65e9\u65ec\u65ed\u65ee\u65ef\u65f0\u65f1\u65f2\u65f3\u65f4\u65f5\u65fa\u65fb\u65fc\u65fd\u65ff\u6600\u6602\u6603\u6604\u6605\u6606\u6607\u6608\u6609\u660a\u660b\u660c\u660d\u660e\u660f\u6610\u6611\u6612\u6613\u6614\u6615\u6618\u661c\u661d\u661e\u661f\u6620\u6621\u6622\u6623\u6624\u6625\u6626\u6627\u6628\u662b\u662d\u662e\u662f\u6630\u6631\u6632\u6633\u6634\u6635\u6636\u6639\u663a\u6641\u6642\u6643\u6644\u6645\u6647\u6648\u6649\u664a\u664b\u664c\u664f\u6651\u6652\u6653\u6657\u6659\u665a\u665b\u665c\u665d\u665e\u665f\u6661\u6662\u6663\u6664\u6665\u6666\u6667\u6668\u666a\u666b\u666c\u666e\u666f\u6670\u6671\u6672\u6673"+
"\u6674\u6676\u6677\u6678\u6679\u667a\u667b\u667c\u667d\u667e\u6680\u6684\u6685\u6686\u6687\u6688\u6689\u668a\u668b\u668c\u668d\u668e\u6690\u6691\u6692\u6694\u6695\u6696\u6697\u6698\u6699\u669a\u669d\u669f\u66a0\u66a1\u66a2\u66a4\u66a8\u66a9\u66aa\u66ab\u66ad\u66ae\u66af\u66b0\u66b1\u66b2\u66b3\u66b4\u66b5\u66b6\u66b7\u66b8\u66b9\u66ba\u66bb\u66bd\u66be\u66bf\u66c0\u66c4\u66c6\u66c7\u66c8\u66c9\u66ca\u66cb\u66cc\u66cd\u66ce\u66cf\u66d2\u66d6\u66d8\u66d9\u66da\u66db\u66dc\u66dd\u66de\u66e0\u66e3\u66e4\u66e6\u66e8\u66e9\u66eb\u66ec\u66ed\u66ee\u66f0\u66f1\u66f2\u66f3\u66f4\u66f6\u66f7\u66f8\u66f9\u66fc\u66fe\u66ff\u6700\u6701\u6702\u6703\u6704\u6705\u6708\u6709\u670a\u670b\u670c\u670d\u670e\u670f\u6710\u6712\u6713\u6714\u6715\u6716\u6717\u6718\u671b\u671d\u671e"+
"\u671f\u6720\u6721\u6722\u6723\u6725\u6726\u6727\u6728\u672a\u672b\u672c\u672d\u672e\u6731\u6733\u6734\u6735\u6736\u6738\u6739\u673a\u673b\u673c\u673d\u673e\u673f\u6744\u6745\u6746\u6747\u6748\u6749\u674b\u674c\u674d\u674e\u674f\u6750\u6751\u6753\u6755\u6756\u6757\u6759\u675a\u675c\u675d\u675e\u675f\u6760\u6761\u6762\u6767\u676a\u676c\u676d\u676f\u6770\u6771\u6772\u6773\u6774\u6775\u6776\u6777\u6778\u6779\u677a\u677b\u677c\u677d\u677e\u677f\u6781\u6783\u6784\u6785\u6786\u6787\u6789\u678b\u678c\u678d\u678e\u678f\u6790\u6791\u6792\u6793\u6794\u6795\u6797\u6798\u6799\u679a\u679c\u679d\u679f\u67a0\u67a4\u67ac\u67ae\u67af\u67b0\u67b1\u67b2\u67b3\u67b4\u67b5\u67b6\u67b7\u67b8\u67b9\u67ba\u67bb\u67bf\u67c0\u67c1\u67c2\u67c3\u67c4\u67c5\u67c6\u67c8\u67c9\u67ca\u67cb"+
"\u67cc\u67cd\u67ce\u67cf\u67d0\u67d1\u67d2\u67d3\u67d4\u67d6\u67d7\u67d8\u67d9\u67da\u67db\u67dc\u67dd\u67de\u67df\u67e2\u67e3\u67e4\u67e5\u67e6\u67e7\u67e9\u67ea\u67eb\u67ec\u67ed\u67ee\u67ef\u67f0\u67f1\u67f2\u67f3\u67f4\u67f5\u67f6\u67f7\u67f8\u67f9\u67fa\u67fc\u67fe\u67ff\u6800\u6801\u6802\u6803\u6804\u680d\u6810\u6812\u6813\u6814\u6816\u6817\u6818\u681a\u681b\u681c\u681d\u681e\u681f\u6820\u6821\u6822\u6825\u6826\u6828\u6829\u682a\u682b\u682d\u682e\u682f\u6831\u6832\u6833\u6834\u6835\u6836\u6837\u6838\u6839\u683a\u683b\u683c\u683d\u683e\u6840\u6841\u6842\u6843\u6844\u6845\u6846\u6847\u6848\u6849\u684a\u684b\u684c\u684d\u684e\u684f\u6850\u6851\u6853\u6854\u6855\u6856\u685d\u6865\u686b\u686d\u686e\u686f\u6871\u6872\u6874\u6875\u6876\u6877\u6878\u6879\u687b"+
"\u687c\u687d\u687e\u687f\u6880\u6881\u6882\u6883\u6884\u6885\u6886\u6887\u6888\u6889\u688a\u688b\u688c\u688f\u6890\u6891\u6892\u6893\u6894\u6896\u6897\u6898\u689b\u689c\u689d\u689f\u68a0\u68a1\u68a2\u68a3\u68a4\u68a6\u68a7\u68a8\u68a9\u68aa\u68ab\u68ac\u68ad\u68ae\u68af\u68b0\u68b1\u68b2\u68b3\u68b4\u68b5\u68b6\u68b9\u68bd\u68c3\u68c4\u68c5\u68c6\u68c7\u68c8\u68c9\u68ca\u68cb\u68cc\u68cd\u68ce\u68d0\u68d1\u68d2\u68d3\u68d4\u68d5\u68d6\u68d7\u68d8\u68da\u68dc\u68dd\u68de\u68df\u68e0\u68e1\u68e3\u68e4\u68e6\u68e7\u68e8\u68e9\u68ea\u68eb\u68ec\u68ee\u68ef\u68f0\u68f1\u68f2\u68f3\u68f4\u68f5\u68f6\u68f7\u68f8\u68f9\u68fa\u68fb\u68fc\u68fd\u6900\u6901\u6902\u6903\u6904\u6905\u6906\u6907\u6908\u6909\u690a\u690b\u690c\u690d\u690e\u690f\u6910\u6911\u6912\u6913\u6914"+
"\u6915\u6917\u6918\u691a\u691b\u6925\u692a\u692c\u692f\u6930\u6932\u6933\u6934\u6935\u6936\u6937\u6938\u6939\u693b\u693c\u693d\u693e\u693f\u6940\u6941\u6942\u6943\u6944\u6945\u6946\u6948\u6949\u694a\u694b\u694c\u694e\u694f\u6951\u6952\u6953\u6954\u6955\u6956\u6957\u6958\u6959\u695a\u695b\u695c\u695d\u695e\u695f\u6960\u6961\u6962\u6963\u6964\u6965\u6966\u6967\u6968\u6969\u696a\u696b\u696c\u696d\u696e\u696f\u6970\u6971\u6972\u6973\u6974\u6975\u6976\u6977\u6978\u6979\u697a\u697b\u6980\u6982\u6983\u6985\u6986\u698a\u698d\u698e\u6990\u6991\u6993\u6994\u6995\u6996\u6997\u6998\u6999\u699a\u699b\u699c\u699e\u699f\u69a0\u69a1\u69a2\u69a3\u69a4\u69a5\u69a6\u69a7\u69a8\u69a9\u69aa\u69ab\u69ac\u69ad\u69ae\u69af\u69b0\u69b1\u69b2\u69b3\u69b4\u69b5\u69b6\u69b7\u69b9\u69bb"+
"\u69bc\u69bd\u69be\u69bf\u69c0\u69c1\u69c2\u69c3\u69c4\u69c6\u69c9\u69ca\u69cb\u69cc\u69cd\u69ce\u69cf\u69d0\u69d1\u69d3\u69d4\u69d5\u69d6\u69d9\u69e1\u69e2\u69e4\u69e5\u69e6\u69e7\u69e8\u69e9\u69eb\u69ec\u69ed\u69ee\u69f1\u69f2\u69f3\u69f4\u69f6\u69f7\u69f8\u69f9\u69fa\u69fb\u69fc\u69fd\u69fe\u69ff\u6a00\u6a01\u6a02\u6a03\u6a04\u6a05\u6a06\u6a07\u6a08\u6a09\u6a0a\u6a0b\u6a0c\u6a0d\u6a0f\u6a11\u6a13\u6a14\u6a15\u6a16\u6a17\u6a18\u6a19\u6a1a\u6a1b\u6a1c\u6a1d\u6a1e\u6a1f\u6a20\u6a21\u6a23\u6a25\u6a26\u6a27\u6a28\u6a2b\u6a2c\u6a2d\u6a32\u6a33\u6a34\u6a35\u6a38\u6a39\u6a3a\u6a3b\u6a3c\u6a3d\u6a3e\u6a3f\u6a40\u6a41\u6a44\u6a45\u6a46\u6a47\u6a48\u6a49\u6a4b\u6a4c\u6a4d\u6a4e\u6a4f\u6a50\u6a51\u6a52\u6a53\u6a54\u6a55\u6a56\u6a57\u6a58\u6a59\u6a5a\u6a5b\u6a5d\u6a5e"+
"\u6a5f\u6a60\u6a61\u6a62\u6a64\u6a65\u6a66\u6a67\u6a68\u6a69\u6a6a\u6a6b\u6a6d\u6a6f\u6a71\u6a74\u6a76\u6a7a\u6a7e\u6a7f\u6a80\u6a81\u6a82\u6a83\u6a84\u6a85\u6a87\u6a89\u6a8a\u6a8c\u6a8d\u6a8e\u6a8f\u6a90\u6a91\u6a92\u6a93\u6a94\u6a95\u6a96\u6a97\u6a99\u6a9a\u6a9b\u6a9c\u6a9d\u6a9e\u6a9f\u6aa0\u6aa1\u6aa2\u6aa3\u6aa4\u6aa5\u6aa6\u6aa7\u6aa8\u6aab\u6aac\u6aad\u6aae\u6aaf\u6ab1\u6ab2\u6ab3\u6ab4\u6ab5\u6ab6\u6ab7\u6ab8\u6ab9\u6aba\u6abb\u6abd\u6abe\u6ac2\u6ac3\u6ac5\u6ac6\u6ac7\u6ac8\u6ac9\u6aca\u6acb\u6acc\u6acd\u6acf\u6ad0\u6ad1\u6ad3\u6ad4\u6ad8\u6ad9\u6ada\u6adb\u6adc\u6add\u6ade\u6adf\u6ae0\u6ae1\u6ae5\u6ae7\u6ae8\u6aea\u6aeb\u6aec\u6aee\u6aef\u6af0\u6af1\u6af3\u6af6\u6af8\u6af9\u6afa\u6afb\u6afc\u6b00\u6b02\u6b03\u6b04\u6b05\u6b08\u6b09\u6b0a\u6b0b\u6b0f"+
"\u6b10\u6b11\u6b12\u6b13\u6b16\u6b17\u6b18\u6b19\u6b1a\u6b1d\u6b1e\u6b20\u6b21\u6b23\u6b25\u6b28\u6b2c\u6b2d\u6b2f\u6b31\u6b32\u6b33\u6b34\u6b35\u6b36\u6b37\u6b38\u6b39\u6b3a\u6b3b\u6b3c\u6b3d\u6b3e\u6b3f\u6b41\u6b42\u6b43\u6b45\u6b46\u6b47\u6b48\u6b49\u6b4a\u6b4b\u6b4c\u6b4d\u6b4e\u6b50\u6b51\u6b52\u6b54\u6b55\u6b56\u6b57\u6b59\u6b5b\u6b5c\u6b5e\u6b5f\u6b60\u6b61\u6b62\u6b63\u6b64\u6b65\u6b66\u6b67\u6b6a\u6b6d\u6b6f\u6b72\u6b74\u6b76\u6b77\u6b78\u6b79\u6b7a\u6b7b\u6b7e\u6b7f\u6b80\u6b81\u6b82\u6b83\u6b84\u6b86\u6b88\u6b89\u6b8a\u6b8c\u6b8d\u6b8e\u6b8f\u6b91\u6b94\u6b95\u6b96\u6b97\u6b98\u6b99\u6b9b\u6b9e\u6b9f\u6ba0\u6ba2\u6ba3\u6ba4\u6ba5\u6ba6\u6ba7\u6baa\u6bab\u6bad\u6bae\u6baf\u6bb0\u6bb2\u6bb3\u6bb5\u6bb6\u6bb7\u6bba\u6bbc\u6bbd\u6bbf\u6bc0\u6bc1\u6bc3"+
"\u6bc4\u6bc5\u6bc6\u6bc7\u6bc8\u6bc9\u6bca\u6bcb\u6bcc\u6bcd\u6bcf\u6bd0\u6bd2\u6bd3\u6bd4\u6bd6\u6bd7\u6bd8\u6bda\u6bdb\u6bdc\u6bde\u6be0\u6be1\u6be2\u6be3\u6be4\u6be6\u6be7\u6be8\u6bea\u6beb\u6bec\u6bef\u6bf0\u6bf2\u6bf3\u6bf7\u6bf8\u6bf9\u6bfa\u6bfb\u6bfc\u6bfd\u6bfe\u6bff\u6c00\u6c01\u6c02\u6c03\u6c04\u6c05\u6c06\u6c08\u6c09\u6c0b\u6c0c\u6c0d\u6c0f\u6c10\u6c11\u6c13\u6c14\u6c15\u6c16\u6c18\u6c19\u6c1a\u6c1b\u6c1c\u6c1d\u6c1f\u6c20\u6c21\u6c23\u6c24\u6c25\u6c26\u6c27\u6c28\u6c2a\u6c2b\u6c2c\u6c2e\u6c2f\u6c30\u6c31\u6c33\u6c34\u6c35\u6c36\u6c37\u6c38\u6c39\u6c3a\u6c3b\u6c3d\u6c3e\u6c3f\u6c40\u6c41\u6c42\u6c43\u6c46\u6c49\u6c4a\u6c4b\u6c4c\u6c4d\u6c4e\u6c4f\u6c50\u6c52\u6c54\u6c55\u6c57\u6c58\u6c59\u6c5a\u6c5b\u6c5c\u6c5d\u6c5e\u6c5f\u6c60\u6c61\u6c65\u6c66"+
"\u6c67\u6c68\u6c69\u6c6a\u6c6b\u6c6d\u6c6e\u6c6f\u6c70\u6c71\u6c72\u6c73\u6c74\u6c75\u6c76\u6c78\u6c79\u6c7a\u6c7b\u6c7d\u6c7e\u6c7f\u6c80\u6c81\u6c82\u6c83\u6c84\u6c85\u6c86\u6c87\u6c88\u6c89\u6c8a\u6c8b\u6c8c\u6c8d\u6c8e\u6c8f\u6c90\u6c92\u6c93\u6c94\u6c95\u6c96\u6c98\u6c99\u6c9a\u6c9b\u6c9c\u6c9d\u6c9f\u6ca2\u6caa\u6cab\u6cac\u6cad\u6cae\u6caf\u6cb0\u6cb1\u6cb2\u6cb3\u6cb4\u6cb6\u6cb7\u6cb8\u6cb9\u6cba\u6cbb\u6cbc\u6cbd\u6cbe\u6cbf\u6cc0\u6cc1\u6cc2\u6cc3\u6cc4\u6cc5\u6cc6\u6cc7\u6cc9\u6cca\u6ccb\u6ccc\u6ccd\u6cce\u6ccf\u6cd0\u6cd1\u6cd2\u6cd3\u6cd4\u6cd5\u6cd6\u6cd7\u6cd9\u6cda\u6cdb\u6cdc\u6cdd\u6cde\u6cdf\u6ce0\u6ce1\u6ce2\u6ce3\u6ce5\u6ce7\u6ce8\u6ce9\u6cea\u6ceb\u6cec\u6ced\u6cee\u6cef\u6cf0\u6cf1\u6cf2\u6cf3\u6cf5\u6cf9\u6d00\u6d01\u6d02\u6d03\u6d04"+
"\u6d05\u6d06\u6d07\u6d08\u6d09\u6d0a\u6d0b\u6d0c\u6d0d\u6d0e\u6d0f\u6d10\u6d11\u6d12\u6d16\u6d17\u6d18\u6d19\u6d1a\u6d1b\u6d1d\u6d1e\u6d1f\u6d20\u6d22\u6d24\u6d25\u6d26\u6d27\u6d28\u6d29\u6d2a\u6d2b\u6d2c\u6d2d\u6d2e\u6d2f\u6d30\u6d31\u6d32\u6d33\u6d34\u6d35\u6d36\u6d37\u6d38\u6d39\u6d3a\u6d3b\u6d3c\u6d3d\u6d3e\u6d3f\u6d40\u6d41\u6d42\u6d4e\u6d57\u6d58\u6d59\u6d5a\u6d5b\u6d5c\u6d5e\u6d5f\u6d60\u6d61\u6d62\u6d63\u6d64\u6d65\u6d66\u6d67\u6d68\u6d69\u6d6a\u6d6c\u6d6d\u6d6e\u6d6f\u6d70\u6d71\u6d72\u6d74\u6d75\u6d76\u6d77\u6d78\u6d79\u6d7a\u6d7b\u6d7c\u6d7d\u6d7e\u6d7f\u6d80\u6d81\u6d82\u6d83\u6d84\u6d85\u6d86\u6d87\u6d88\u6d89\u6d8a\u6d8b\u6d8c\u6d8d\u6d8e\u6d8f\u6d90\u6d91\u6d92\u6d93\u6d94\u6d95\u6d96\u6d97\u6d98\u6da4\u6da5\u6daa\u6dab\u6dac\u6dae\u6daf\u6db1"+
"\u6db2\u6db3\u6db4\u6db5\u6db7\u6db8\u6db9\u6dba\u6dbb\u6dbc\u6dbd\u6dbe\u6dbf\u6dc0\u6dc2\u6dc4\u6dc5\u6dc6\u6dc7\u6dc8\u6dc9\u6dca\u6dcb\u6dcc\u6dcd\u6dcf\u6dd0\u6dd1\u6dd2\u6dd3\u6dd4\u6dd5\u6dd6\u6dd7\u6dd8\u6dd9\u6dda\u6ddb\u6ddc\u6ddd\u6dde\u6ddf\u6de0\u6de1\u6de2\u6de3\u6de4\u6de5\u6de6\u6de8\u6de9\u6dea\u6deb\u6dec\u6ded\u6dee\u6def\u6df0\u6df1\u6df2\u6df3\u6df4\u6df5\u6df6\u6df7\u6df9\u6dfa\u6dfb\u6dfc\u6dfd\u6e00\u6e02\u6e03\u6e04\u6e05\u6e0a\u6e0f\u6e15\u6e18\u6e19\u6e1a\u6e1b\u6e1c\u6e1d\u6e1f\u6e20\u6e21\u6e22\u6e23\u6e24\u6e25\u6e26\u6e27\u6e28\u6e29\u6e2a\u6e2b\u6e2c\u6e2d\u6e2e\u6e2f\u6e30\u6e31\u6e32\u6e33\u6e34\u6e35\u6e36\u6e38\u6e39\u6e3a\u6e3b\u6e3c\u6e3d\u6e3e\u6e3f\u6e40\u6e41\u6e43\u6e44\u6e45\u6e46\u6e47\u6e49\u6e4a\u6e4b\u6e4d\u6e4e"+
"\u6e4f\u6e50\u6e51\u6e52\u6e53\u6e54\u6e55\u6e56\u6e58\u6e59\u6e5a\u6e5b\u6e5c\u6e5d\u6e5e\u6e5f\u6e60\u6e61\u6e62\u6e63\u6e64\u6e65\u6e66\u6e67\u6e68\u6e69\u6e6b\u6e6e\u6e6f\u6e71\u6e72\u6e73\u6e74\u6e76\u6e77\u6e78\u6e79\u6e7c\u6e86\u6e88\u6e89\u6e8b\u6e8d\u6e8e\u6e8f\u6e90\u6e92\u6e93\u6e94\u6e96\u6e97\u6e98\u6e99\u6e9a\u6e9b\u6e9c\u6e9d\u6e9e\u6e9f\u6ea0\u6ea1\u6ea2\u6ea3\u6ea4\u6ea5\u6ea6\u6ea7\u6eaa\u6eab\u6eae\u6eaf\u6eb0\u6eb1\u6eb2\u6eb3\u6eb4\u6eb5\u6eb6\u6eb7\u6eb8\u6eb9\u6eba\u6ebb\u6ebc\u6ebd\u6ebe\u6ebf\u6ec0\u6ec1\u6ec2\u6ec3\u6ec4\u6ec5\u6ec6\u6ec7\u6ec8\u6ec9\u6eca\u6ecb\u6ecc\u6ecd\u6ece\u6ecf\u6ed0\u6ed1\u6ed2\u6ed3\u6ed4\u6ed5\u6ed6\u6ed8\u6ed9\u6eda\u6edb\u6edc\u6edd\u6ee2\u6ee8\u6ee9\u6eeb\u6eec\u6eed\u6eee\u6eef\u6ef1\u6ef2\u6ef4\u6ef5"+
"\u6ef6\u6ef7\u6ef8\u6ef9\u6efa\u6efb\u6efc\u6efd\u6efe\u6eff\u6f00\u6f01\u6f02\u6f03\u6f04\u6f05\u6f06\u6f07\u6f08\u6f09\u6f0a\u6f0b\u6f0c\u6f0d\u6f0e\u6f0f\u6f12\u6f13\u6f14\u6f15\u6f16\u6f17\u6f18\u6f19\u6f1a\u6f1c\u6f1e\u6f1f\u6f20\u6f21\u6f22\u6f23\u6f24\u6f25\u6f26\u6f27\u6f29\u6f2a\u6f2b\u6f2c\u6f2d\u6f2e\u6f2f\u6f30\u6f31\u6f32\u6f33\u6f34\u6f35\u6f36\u6f37\u6f38\u6f39\u6f3a\u6f3b\u6f3c\u6f3d\u6f3e\u6f3f\u6f40\u6f41\u6f43\u6f44\u6f4e\u6f4f\u6f50\u6f51\u6f52\u6f53\u6f54\u6f55\u6f56\u6f57\u6f58\u6f5a\u6f5b\u6f5c\u6f5d\u6f5e\u6f5f\u6f60\u6f61\u6f62\u6f63\u6f64\u6f66\u6f67\u6f69\u6f6a\u6f6b\u6f6c\u6f6d\u6f6e\u6f6f\u6f70\u6f72\u6f73\u6f74\u6f76\u6f77\u6f78\u6f79\u6f7a\u6f7b\u6f7c\u6f7d\u6f7e\u6f7f\u6f80\u6f81\u6f82\u6f84\u6f85\u6f86\u6f87\u6f88\u6f89\u6f8a"+
"\u6f8b\u6f8c\u6f8d\u6f8e\u6f90\u6f92\u6f93\u6f94\u6f95\u6f96\u6f97\u6f9d\u6f9e\u6f9f\u6fa0\u6fa1\u6fa2\u6fa3\u6fa4\u6fa5\u6fa6\u6fa7\u6fa8\u6fa9\u6faa\u6fab\u6fac\u6fad\u6fae\u6faf\u6fb0\u6fb1\u6fb2\u6fb3\u6fb4\u6fb5\u6fb6\u6fb8\u6fb9\u6fba\u6fbb\u6fbc\u6fbd\u6fbe\u6fbf\u6fc0\u6fc1\u6fc2\u6fc3\u6fc4\u6fc6\u6fc7\u6fc8\u6fc9\u6fca\u6fcb\u6fcc\u6fcd\u6fce\u6fcf\u6fd3\u6fd4\u6fd5\u6fd8\u6fd9\u6fda\u6fdb\u6fdc\u6fdd\u6fde\u6fdf\u6fe0\u6fe1\u6fe2\u6fe3\u6fe4\u6fe6\u6fe7\u6fe8\u6fe9\u6feb\u6fec\u6fed\u6fee\u6fef\u6ff0\u6ff1\u6ff2\u6ff4\u6ff6\u6ff7\u6ff8\u6ffa\u6ffb\u6ffc\u6ffe\u6fff\u7000\u7001\u7003\u7004\u7005\u7006\u7007\u7009\u700a\u700b\u700c\u700d\u700e\u700f\u7011\u7014\u7015\u7016\u7017\u7018\u7019\u701a\u701b\u701c\u701d\u701e\u701f\u7020\u7021\u7022\u7023"+
"\u7024\u7026\u7027\u7028\u7029\u702a\u702b\u702c\u702f\u7030\u7031\u7032\u7033\u7034\u7035\u7037\u7038\u7039\u703a\u703b\u703c\u703e\u703f\u7040\u7041\u7042\u7043\u7044\u7045\u7046\u7048\u7049\u704a\u704b\u704c\u7050\u7051\u7052\u7054\u7055\u7056\u7057\u7058\u705a\u705b\u705c\u705d\u705e\u705f\u7060\u7061\u7062\u7063\u7064\u7065\u7066\u7067\u7068\u7069\u706a\u706b\u706c\u706f\u7070\u7071\u7074\u7075\u7076\u7078\u7079\u707a\u707c\u707d\u707e\u707f\u7081\u7082\u7083\u7084\u7085\u7086\u7089\u708a\u708b\u708e\u708f\u7091\u7092\u7093\u7094\u7095\u7096\u7098\u7099\u709a\u709f\u70a0\u70a1\u70a3\u70a4\u70a5\u70a6\u70a7\u70a9\u70ab\u70ac\u70ad\u70ae\u70af\u70b0\u70b1\u70b3\u70b4\u70b5\u70b7\u70b8\u70b9\u70ba\u70bb\u70bc\u70bd\u70be\u70c0\u70c4\u70c5\u70c6\u70c7\u70c8"+
"\u70ca\u70cb\u70cc\u70cd\u70ce\u70cf\u70d0\u70d1\u70d2\u70d3\u70d4\u70d5\u70d6\u70d7\u70d8\u70d9\u70da\u70dc\u70dd\u70de\u70df\u70e0\u70e1\u70e2\u70e4\u70ef\u70f0\u70f1\u70f3\u70f4\u70f5\u70f6\u70f7\u70f8\u70f9\u70fa\u70fb\u70fc\u70fd\u70fe\u70ff\u7100\u7102\u7104\u7105\u7106\u7109\u710a\u710b\u710c\u710d\u710e\u7110\u7113\u7117\u7119\u711a\u711b\u711c\u711d\u711e\u711f\u7120\u7121\u7122\u7123\u7125\u7126\u7128\u7129\u712b\u712c\u712e\u712f\u7130\u7131\u7132\u7133\u7134\u7135\u7136\u713a\u713b\u713e\u7140\u7141\u7142\u7143\u7144\u7145\u7146\u7147\u7149\u714a\u714b\u714c\u714d\u714e\u714f\u7150\u7151\u7152\u7153\u7154\u7156\u7158\u7159\u715a\u715c\u715d\u715e\u715f\u7160\u7161\u7162\u7163\u7164\u7165\u7166\u7167\u7168\u7169\u716a\u716b\u716c\u716e\u7170\u7171"+
"\u7172\u7173\u7175\u7176\u7177\u7178\u717a\u717b\u717c\u717d\u717e\u7180\u7181\u7182\u7184\u7185\u7186\u7187\u7188\u7189\u718a\u718c\u718e\u718f\u7190\u7192\u7194\u7196\u7197\u7198\u7199\u719a\u719b\u719c\u719d\u719e\u719f\u71a0\u71a1\u71a2\u71a3\u71a4\u71a5\u71a7\u71a8\u71a9\u71aa\u71ac\u71ad\u71af\u71b0\u71b1\u71b2\u71b3\u71b4\u71b5\u71b7\u71b8\u71b9\u71ba\u71bc\u71bd\u71be\u71bf\u71c0\u71c1\u71c2\u71c3\u71c4\u71c5\u71c6\u71c7\u71c8\u71c9\u71ca\u71cb\u71ce\u71cf\u71d0\u71d1\u71d2\u71d4\u71d5\u71d6\u71d8\u71d9\u71da\u71db\u71dc\u71dd\u71df\u71e0\u71e1\u71e2\u71e4\u71e5\u71e6\u71e7\u71e8\u71eb\u71ec\u71ed\u71ee\u71f0\u71f1\u71f2\u71f4\u71f5\u71f6\u71f8\u71f9\u71fb\u71fc\u71fd\u71fe\u71ff\u7201\u7202\u7203\u7205\u7206\u7207\u7209\u720a\u720c\u720d\u720e\u720f"+
"\u7210\u7213\u7214\u7215\u7216\u7217\u7219\u721a\u721b\u721d\u721e\u721f\u7222\u7223\u7224\u7226\u7227\u7228\u7229\u722a\u722b\u722c\u722d\u722e\u7230\u7235\u7236\u7238\u7239\u723a\u723b\u723d\u723e\u723f\u7240\u7241\u7242\u7244\u7246\u7247\u7248\u7249\u724a\u724b\u724c\u724f\u7250\u7252\u7253\u7255\u7256\u7257\u7258\u7259\u725a\u725b\u725c\u725d\u725e\u725f\u7260\u7261\u7262\u7263\u7266\u7267\u7269\u726a\u726c\u726e\u726f\u7270\u7272\u7273\u7274\u7276\u7277\u7278\u7279\u727b\u727c\u727d\u727e\u727f\u7280\u7281\u7282\u7284\u7285\u7286\u7287\u7288\u7289\u728b\u728c\u728d\u728e\u728f\u7290\u7291\u7292\u7293\u7294\u7295\u7296\u7297\u7298\u729a\u729b\u729d\u729e\u729f\u72a1\u72a2\u72a3\u72a4\u72a5\u72a6\u72a7\u72a8\u72a9\u72aa\u72ac\u72ad\u72ae\u72af\u72b0\u72b2"+
"\u72b4\u72b5\u72ba\u72bd\u72bf\u72c0\u72c1\u72c2\u72c3\u72c4\u72c5\u72c6\u72c9\u72ca\u72cb\u72cc\u72cd\u72ce\u72d0\u72d1\u72d2\u72d4\u72d6\u72d7\u72d8\u72d9\u72da\u72dc\u72df\u72e0\u72e1\u72e2\u72e3\u72e4\u72e6\u72e8\u72e9\u72ea\u72eb\u72f3\u72f4\u72f6\u72f7\u72f8\u72f9\u72fa\u72fb\u72fc\u72fd\u72fe\u72ff\u7300\u7301\u7302\u7304\u7307\u7308\u730a\u730b\u730c\u730f\u7310\u7311\u7312\u7313\u7316\u7317\u7318\u7319\u731b\u731c\u731d\u731e\u7322\u7323\u7325\u7326\u7327\u7328\u7329\u732a\u732b\u732c\u732d\u732e\u7330\u7331\u7332\u7333\u7334\u7335\u7336\u7337\u7338\u7339\u733a\u733b\u733c\u733e\u733f\u7340\u7341\u7342\u7343\u7344\u7345\u7348\u7349\u734a\u734c\u734d\u734e\u734f\u7350\u7351\u7352\u7357\u7358\u7359\u735a\u735b\u735d\u735e\u735f\u7360\u7361\u7362\u7365"+
"\u7366\u7367\u7368\u7369\u736a\u736b\u736c\u736e\u736f\u7370\u7371\u7372\u7373\u7374\u7375\u7376\u7377\u7378\u737a\u737b\u737c\u737d\u737e\u737f\u7380\u7381\u7382\u7383\u7384\u7385\u7386\u7387\u7388\u7389\u738a\u738b\u738e\u738f\u7392\u7393\u7394\u7395\u7396\u7397\u7398\u739c\u739d\u739e\u739f\u73a0\u73a1\u73a2\u73a4\u73a5\u73a6\u73a7\u73a8\u73a9\u73aa\u73ab\u73ac\u73ad\u73b2\u73b3\u73b4\u73b5\u73b6\u73b7\u73b8\u73b9\u73bb\u73bc\u73be\u73bf\u73c0\u73c2\u73c3\u73c5\u73c6\u73c7\u73c8\u73c9\u73ca\u73cb\u73cc\u73cd\u73ce\u73cf\u73d0\u73d2\u73d3\u73d4\u73d5\u73d6\u73d7\u73d8\u73d9\u73da\u73db\u73dc\u73dd\u73de\u73e0\u73e1\u73e2\u73e3\u73e4\u73e5\u73e6\u73e7\u73e8\u73e9\u73ea\u73eb\u73ed\u73ee\u73ef\u73f3\u73f4\u73f5\u73f6\u73f7\u73f8\u73f9\u73fa\u73fb\u73fc\u73fd"+
"\u73fe\u73ff\u7400\u7401\u7403\u7404\u7405\u7406\u7407\u7408\u7409\u740a\u740b\u740c\u740d\u7411\u7412\u7414\u7415\u7416\u7417\u7419\u741a\u741b\u741c\u741d\u741e\u741f\u7420\u7421\u7422\u7423\u7424\u7425\u7426\u7428\u7429\u742a\u742b\u742c\u742d\u742e\u742f\u7430\u7431\u7432\u7433\u7434\u7435\u7436\u7437\u7438\u7439\u743a\u743c\u743f\u7440\u7441\u7442\u7443\u7444\u7445\u7446\u7447\u7448\u7449\u744a\u744b\u744d\u744e\u744f\u7450\u7451\u7452\u7453\u7454\u7455\u7456\u7457\u7459\u745a\u745b\u745c\u745d\u745e\u745f\u7460\u7462\u7463\u7464\u7465\u7467\u7468\u7469\u746a\u746b\u746c\u746d\u746e\u746f\u7470\u7471\u7472\u7473\u7474\u7475\u7476\u7479\u747a\u747c\u747d\u747e\u747f\u7480\u7481\u7482\u7483\u7485\u7486\u7487\u7488\u7489\u748a\u748b\u748c\u748d\u7490\u7492"+
"\u7494\u7495\u7497\u7498\u7499\u749a\u749b\u749c\u749e\u749f\u74a0\u74a1\u74a3\u74a4\u74a5\u74a6\u74a7\u74a8\u74a9\u74aa\u74ab\u74ad\u74af\u74b0\u74b1\u74b2\u74b4\u74b5\u74b6\u74b7\u74b8\u74ba\u74bb\u74bd\u74be\u74bf\u74c0\u74c1\u74c2\u74c3\u74c5\u74c8\u74ca\u74cb\u74cc\u74cf\u74d0\u74d3\u74d4\u74d5\u74d6\u74d7\u74d8\u74d9\u74da\u74db\u74dc\u74dd\u74de\u74df\u74e0\u74e1\u74e2\u74e3\u74e4\u74e5\u74e6\u74e7\u74e8\u74e9\u74ec\u74ee\u74f0\u74f1\u74f2\u74f4\u74f5\u74f6\u74f7\u74f8\u74fb\u74fd\u74fe\u74ff\u7500\u7502\u7503\u7504\u7505\u7507\u7508\u750b\u750c\u750d\u750e\u750f\u7510\u7511\u7512\u7513\u7514\u7515\u7516\u7517\u7518\u7519\u751a\u751c\u751d\u751e\u751f\u7521\u7522\u7525\u7526\u7528\u7529\u752a\u752b\u752c\u752d\u752e\u752f\u7530\u7531\u7532\u7533\u7534"+
"\u7535\u7537\u7538\u7539\u753a\u753b\u753d\u753e\u753f\u7540\u7542\u7546\u7547\u7548\u754a\u754b\u754c\u754d\u754e\u754f\u7551\u7553\u7554\u7555\u7559\u755a\u755b\u755c\u755d\u755f\u7560\u7562\u7563\u7564\u7565\u7566\u7567\u756a\u756b\u756c\u756d\u756e\u756f\u7570\u7572\u7576\u7577\u7578\u7579\u757a\u757d\u757e\u757f\u7580\u7583\u7584\u7586\u7587\u758a\u758b\u758c\u758d\u758e\u758f\u7590\u7591\u7592\u7594\u7595\u7598\u7599\u759a\u759d\u759e\u75a2\u75a3\u75a4\u75a5\u75a7\u75aa\u75ab\u75b0\u75b1\u75b2\u75b3\u75b4\u75b5\u75b6\u75b8\u75b9\u75ba\u75bb\u75bc\u75bd\u75be\u75bf\u75c0\u75c1\u75c2\u75c3\u75c4\u75c5\u75c7\u75c8\u75ca\u75cb\u75cc\u75cd\u75ce\u75cf\u75d0\u75d1\u75d2\u75d4\u75d5\u75d7\u75d8\u75d9\u75da\u75db\u75dc\u75dd\u75de\u75df\u75e0\u75e1\u75e2\u75e3"+
"\u75e4\u75e6\u75e7\u75ed\u75ef\u75f0\u75f1\u75f2\u75f3\u75f4\u75f5\u75f6\u75f7\u75f8\u75f9\u75fa\u75fb\u75fc\u75fd\u75fe\u75ff\u7600\u7601\u7602\u7603\u7607\u7608\u7609\u760a\u760b\u760c\u760d\u760f\u7610\u7611\u7613\u7614\u7615\u7616\u7619\u761a\u761b\u761c\u761d\u761e\u761f\u7620\u7621\u7622\u7623\u7624\u7625\u7626\u7627\u7628\u7629\u762c\u762d\u762f\u7630\u7631\u7632\u7633\u7634\u7635\u7638\u763a\u763b\u763c\u763d\u7640\u7642\u7643\u7646\u7647\u7648\u7649\u764c\u764d\u764e\u764f\u7650\u7651\u7652\u7653\u7654\u7656\u7657\u7658\u7659\u765a\u765c\u765f\u7660\u7661\u7662\u7664\u7665\u7666\u7667\u7669\u766a\u766c\u766d\u766e\u766f\u7670\u7671\u7672\u7673\u7674\u7675\u7676\u7678\u7679\u767a\u767b\u767c\u767d\u767e\u767f\u7681\u7682\u7684\u7686\u7687\u7688\u7689"+
"\u768a\u768b\u768e\u768f\u7690\u7692\u7693\u7695\u7696\u7699\u769a\u769b\u769c\u769d\u769e\u76a1\u76a4\u76a5\u76a6\u76aa\u76ab\u76ad\u76ae\u76af\u76b0\u76b4\u76b5\u76b7\u76b8\u76ba\u76bb\u76bd\u76be\u76bf\u76c2\u76c3\u76c4\u76c5\u76c6\u76c8\u76c9\u76ca\u76cc\u76cd\u76ce\u76d2\u76d3\u76d4\u76d6\u76da\u76db\u76dc\u76dd\u76de\u76df\u76e1\u76e3\u76e4\u76e5\u76e6\u76e7\u76e9\u76ea\u76ec\u76ed\u76ee\u76ef\u76f0\u76f1\u76f2\u76f3\u76f4\u76f5\u76f7\u76f8\u76f9\u76fa\u76fb\u76fc\u76fe\u7701\u7703\u7704\u7705\u7707\u7708\u7709\u770a\u770b\u770c\u770e\u770f\u7710\u7711\u7712\u7713\u7715\u7719\u771a\u771b\u771d\u771e\u771f\u7720\u7722\u7723\u7724\u7725\u7726\u7727\u7728\u7729\u772b\u772d\u772f\u7731\u7732\u7733\u7734\u7735\u7736\u7737\u7738\u7739\u773a\u773b\u773c\u773d"+
"\u773e\u7740\u7743\u7744\u7745\u7746\u7747\u774a\u774b\u774c\u774d\u774e\u774f\u7752\u7754\u7755\u7756\u7758\u7759\u775a\u775b\u775c\u775e\u775f\u7760\u7761\u7762\u7763\u7765\u7766\u7767\u7768\u7769\u776a\u776b\u776c\u776d\u776e\u776f\u7772\u7777\u7778\u7779\u777a\u777b\u777c\u777d\u777e\u777f\u7780\u7781\u7782\u7783\u7784\u7785\u7787\u7788\u7789\u778b\u778c\u778d\u778e\u778f\u7791\u7793\u7795\u7797\u7798\u7799\u779a\u779b\u779c\u779d\u779e\u779f\u77a0\u77a1\u77a2\u77a3\u77a5\u77a7\u77a8\u77aa\u77ab\u77ac\u77ad\u77af\u77b0\u77b1\u77b2\u77b3\u77b4\u77b5\u77b6\u77b7\u77b9\u77ba\u77bb\u77bc\u77bd\u77be\u77bf\u77c2\u77c3\u77c4\u77c5\u77c7\u77c9\u77ca\u77cb\u77cc\u77cd\u77ce\u77cf\u77d0\u77d3\u77d4\u77d5\u77d7\u77d8\u77d9\u77da\u77db\u77dc\u77de\u77e0\u77e2\u77e3"+
"\u77e5\u77e6\u77e7\u77e8\u77e9\u77ec\u77ed\u77ee\u77ef\u77f0\u77f1\u77f2\u77f3\u77f4\u77f7\u77f8\u77f9\u77fa\u77fb\u77fc\u77fd\u77fe\u7802\u7803\u7805\u7806\u7808\u7809\u780c\u780d\u780e\u780f\u7810\u7811\u7812\u7813\u7814\u7818\u781c\u781d\u781e\u781f\u7820\u7821\u7822\u7823\u7825\u7826\u7827\u7828\u7829\u782a\u782b\u782c\u782d\u782e\u782f\u7830\u7831\u7832\u7833\u7834\u7835\u7837\u7838\u7839\u783c\u783d\u7842\u7843\u7844\u7845\u7847\u7848\u7849\u784a\u784b\u784c\u784d\u784e\u7850\u7851\u7852\u7853\u7854\u785c\u785d\u785e\u7860\u7862\u7864\u7865\u7866\u7868\u7869\u786a\u786b\u786c\u786d\u786e\u786f\u7870\u7871\u7879\u787a\u787b\u787c\u787e\u787f\u7880\u7883\u7884\u7885\u7886\u7887\u7888\u7889\u788c\u788d\u788e\u788f\u7891\u7893\u7894\u7895\u7896\u7897\u7898"+
"\u7899\u789a\u789e\u789f\u78a0\u78a1\u78a2\u78a3\u78a4\u78a5\u78a7\u78a8\u78a9\u78aa\u78ab\u78ac\u78ad\u78af\u78b0\u78b1\u78b2\u78b3\u78b4\u78b6\u78b8\u78b9\u78ba\u78bb\u78bc\u78be\u78c1\u78c3\u78c4\u78c5\u78c7\u78c8\u78c9\u78ca\u78cb\u78cc\u78cd\u78ce\u78cf\u78d0\u78d1\u78d2\u78d3\u78d4\u78d5\u78d7\u78d8\u78da\u78db\u78dd\u78de\u78df\u78e0\u78e1\u78e2\u78e3\u78e5\u78e7\u78e8\u78e9\u78ea\u78ec\u78ed\u78ee\u78ef\u78f0\u78f1\u78f2\u78f3\u78f4\u78f5\u78f7\u78f9\u78fa\u78fb\u78fc\u78fd\u78fe\u78ff\u7901\u7902\u7904\u7905\u7906\u7909\u790c\u790e\u7910\u7911\u7912\u7913\u7914\u7917\u7919\u791b\u791c\u791d\u791e\u7921\u7923\u7924\u7925\u7926\u7927\u7928\u7929\u792a\u792b\u792c\u792d\u792e\u792f\u7931\u7932\u7933\u7934\u7935\u7936\u7938\u7939\u793a\u793b\u793c\u793d"+
"\u793e\u793f\u7940\u7941\u7942\u7944\u7945\u7946\u7947\u7948\u7949\u794a\u794b\u794c\u794f\u7950\u7951\u7952\u7953\u7954\u7955\u7956\u7957\u7958\u7959\u795a\u795b\u795c\u795d\u795e\u795f\u7960\u7961\u7962\u7963\u7964\u7965\u7967\u7968\u7969\u796a\u796b\u796d\u7970\u7971\u7972\u7973\u7974\u7979\u797a\u797c\u797d\u797e\u797f\u7980\u7981\u7982\u7983\u7986\u7987\u7988\u798a\u798b\u798d\u798e\u798f\u7990\u7991\u7992\u7993\u7994\u7995\u7996\u7997\u7998\u7999\u799a\u799b\u799c\u799d\u799f\u79a0\u79a1\u79a2\u79a4\u79a5\u79a6\u79a7\u79a8\u79a9\u79aa\u79ab\u79ac\u79ad\u79ae\u79b0\u79b1\u79b2\u79b3\u79b4\u79b6\u79b7\u79b8\u79b9\u79ba\u79bb\u79bd\u79be\u79bf\u79c0\u79c1\u79c4\u79c5\u79c6\u79c8\u79c9\u79cb\u79cc\u79cd\u79ce\u79cf\u79d1\u79d2\u79d4\u79d5\u79d6\u79d8\u79dc"+
"\u79dd\u79de\u79df\u79e0\u79e2\u79e3\u79e4\u79e6\u79e7\u79e9\u79ea\u79eb\u79ec\u79ed\u79ee\u79f1\u79f4\u79f6\u79f7\u79f8\u79fa\u79fb\u7a00\u7a02\u7a03\u7a04\u7a05\u7a06\u7a08\u7a0a\u7a0b\u7a0c\u7a0d\u7a10\u7a11\u7a12\u7a13\u7a14\u7a15\u7a17\u7a18\u7a19\u7a1a\u7a1b\u7a1c\u7a1e\u7a1f\u7a20\u7a22\u7a26\u7a28\u7a2b\u7a2d\u7a2e\u7a2f\u7a30\u7a31\u7a37\u7a39\u7a3a\u7a3b\u7a3c\u7a3d\u7a3e\u7a3f\u7a40\u7a43\u7a44\u7a45\u7a46\u7a47\u7a48\u7a49\u7a4a\u7a4b\u7a4c\u7a4d\u7a4e\u7a54\u7a56\u7a57\u7a58\u7a5a\u7a5b\u7a5c\u7a5f\u7a60\u7a61\u7a62\u7a65\u7a67\u7a68\u7a69\u7a6b\u7a6c\u7a6d\u7a6e\u7a70\u7a71\u7a74\u7a75\u7a76\u7a78\u7a79\u7a7a\u7a7b\u7a7d\u7a7e\u7a7f\u7a80\u7a81\u7a83\u7a84\u7a85\u7a86\u7a87\u7a88\u7a89\u7a8a\u7a8b\u7a8c\u7a8f\u7a90\u7a91\u7a92\u7a94\u7a95\u7a96"+
"\u7a97\u7a98\u7a99\u7a9e\u7a9f\u7aa0\u7aa2\u7aa3\u7aa8\u7aa9\u7aaa\u7aab\u7aac\u7aae\u7aaf\u7ab0\u7ab1\u7ab2\u7ab3\u7ab4\u7ab5\u7ab6\u7ab7\u7ab8\u7aba\u7abb\u7abc\u7abe\u7abf\u7ac0\u7ac1\u7ac2\u7ac3\u7ac4\u7ac5\u7ac7\u7ac8\u7ac9\u7aca\u7acb\u7acf\u7ad1\u7ad3\u7ad8\u7ad9\u7ada\u7adb\u7adc\u7add\u7adf\u7ae0\u7ae2\u7ae3\u7ae4\u7ae5\u7ae6\u7ae7\u7ae9\u7aea\u7aeb\u7aed\u7aee\u7aef\u7af6\u7af7\u7af9\u7afa\u7afb\u7afd\u7afe\u7aff\u7b00\u7b01\u7b04\u7b05\u7b06\u7b08\u7b09\u7b0a\u7b0b\u7b0c\u7b0e\u7b0f\u7b10\u7b11\u7b12\u7b13\u7b14\u7b18\u7b19\u7b1a\u7b1b\u7b1d\u7b1e\u7b1f\u7b20\u7b22\u7b23\u7b24\u7b25\u7b26\u7b27\u7b28\u7b29\u7b2a\u7b2b\u7b2c\u7b2d\u7b2e\u7b2f\u7b30\u7b31\u7b32\u7b33\u7b34\u7b35\u7b38\u7b39\u7b3b\u7b40\u7b42\u7b43\u7b44\u7b45\u7b46\u7b47\u7b48\u7b49"+
"\u7b4a\u7b4b\u7b4c\u7b4d\u7b4e\u7b4f\u7b50\u7b51\u7b52\u7b54\u7b55\u7b56\u7b58\u7b60\u7b61\u7b62\u7b63\u7b64\u7b65\u7b66\u7b67\u7b69\u7b6c\u7b6d\u7b6e\u7b6f\u7b70\u7b71\u7b72\u7b73\u7b74\u7b75\u7b76\u7b77\u7b78\u7b7b\u7b82\u7b84\u7b85\u7b87\u7b88\u7b8a\u7b8b\u7b8c\u7b8d\u7b8e\u7b8f\u7b90\u7b91\u7b92\u7b94\u7b95\u7b96\u7b97\u7b98\u7b99\u7b9b\u7b9c\u7b9d\u7ba0\u7ba1\u7ba2\u7ba3\u7ba4\u7bac\u7bad\u7baf\u7bb1\u7bb2\u7bb4\u7bb5\u7bb7\u7bb8\u7bb9\u7bbe\u7bc0\u7bc1\u7bc4\u7bc6\u7bc7\u7bc9\u7bca\u7bcb\u7bcc\u7bce\u7bcf\u7bd0\u7bd4\u7bd5\u7bd8\u7bd9\u7bda\u7bdb\u7bdc\u7bdd\u7bde\u7bdf\u7be0\u7be1\u7be2\u7be3\u7be4\u7be5\u7be6\u7be7\u7be8\u7be9\u7bea\u7beb\u7bf0\u7bf1\u7bf2\u7bf3\u7bf4\u7bf7\u7bf8\u7bf9\u7bfa\u7bfb\u7bfc\u7bfd\u7bfe\u7bff\u7c00\u7c01\u7c02\u7c03\u7c05"+
"\u7c06\u7c07\u7c09\u7c0a\u7c0b\u7c0c\u7c0d\u7c0e\u7c0f\u7c10\u7c11\u7c12\u7c15\u7c19\u7c1b\u7c1c\u7c1d\u7c1e\u7c1f\u7c20\u7c21\u7c22\u7c23\u7c25\u7c26\u7c27\u7c28\u7c29\u7c2a\u7c2b\u7c2c\u7c2d\u7c30\u7c33\u7c35\u7c37\u7c38\u7c39\u7c3b\u7c3c\u7c3d\u7c3e\u7c3f\u7c40\u7c42\u7c43\u7c44\u7c45\u7c47\u7c48\u7c49\u7c4a\u7c4c\u7c4d\u7c50\u7c51\u7c53\u7c54\u7c56\u7c57\u7c59\u7c5a\u7c5b\u7c5c\u7c5d\u7c5f\u7c60\u7c63\u7c64\u7c65\u7c66\u7c67\u7c69\u7c6a\u7c6b\u7c6c\u7c6d\u7c6e\u7c6f\u7c70\u7c72\u7c73\u7c74\u7c75\u7c78\u7c79\u7c7a\u7c7b\u7c7c\u7c7d\u7c7e\u7c7f\u7c80\u7c81\u7c83\u7c84\u7c85\u7c86\u7c88\u7c89\u7c8a\u7c8c\u7c8d\u7c8e\u7c91\u7c92\u7c94\u7c95\u7c96\u7c97\u7c98\u7c9c\u7c9e\u7c9f\u7ca1\u7ca2\u7ca3\u7ca5\u7ca6\u7ca8\u7cac\u7cae\u7caf\u7cb1\u7cb2\u7cb3\u7cb4\u7cb5"+
"\u7cb8\u7cb9\u7cba\u7cbb\u7cbc\u7cbd\u7cbe\u7cbf\u7cc2\u7cc5\u7cc7\u7cc8\u7cc9\u7cca\u7ccb\u7ccc\u7ccd\u7cce\u7cd0\u7cd1\u7cd2\u7cd3\u7cd4\u7cd5\u7cd6\u7cd7\u7cd9\u7cda\u7cdc\u7cdd\u7cde\u7cdf\u7ce0\u7ce2\u7ce6\u7ce7\u7ce8\u7cea\u7cec\u7ced\u7cee\u7cef\u7cf0\u7cf1\u7cf2\u7cf3\u7cf4\u7cf5\u7cf6\u7cf7\u7cf8\u7cf9\u7cfb\u7cfc\u7cfd\u7cfe\u7d00\u7d01\u7d02\u7d03\u7d04\u7d05\u7d06\u7d07\u7d08\u7d09\u7d0a\u7d0b\u7d0c\u7d0d\u7d0e\u7d0f\u7d10\u7d11\u7d12\u7d13\u7d14\u7d15\u7d16\u7d17\u7d18\u7d19\u7d1a\u7d1b\u7d1c\u7d1d\u7d1e\u7d1f\u7d20\u7d21\u7d22\u7d25\u7d28\u7d29\u7d2b\u7d2c\u7d2e\u7d2f\u7d30\u7d31\u7d32\u7d33\u7d35\u7d36\u7d38\u7d39\u7d3a\u7d3b\u7d3c\u7d3d\u7d3e\u7d3f\u7d40\u7d41\u7d42\u7d43\u7d44\u7d45\u7d46\u7d47\u7d4a\u7d4d\u7d4e\u7d4f\u7d50\u7d51\u7d52\u7d53"+
"\u7d54\u7d55\u7d56\u7d58\u7d5a\u7d5b\u7d5c\u7d5d\u7d5e\u7d5f\u7d61\u7d62\u7d63\u7d66\u7d67\u7d68\u7d69\u7d6a\u7d6b\u7d6d\u7d6e\u7d6f\u7d70\u7d71\u7d72\u7d73\u7d79\u7d7a\u7d7b\u7d7c\u7d7d\u7d7f\u7d80\u7d81\u7d83\u7d84\u7d85\u7d86\u7d88\u7d89\u7d8c\u7d8d\u7d8e\u7d8f\u7d91\u7d92\u7d93\u7d94\u7d96\u7d97\u7d9c\u7d9d\u7d9e\u7d9f\u7da0\u7da1\u7da2\u7da3\u7da4\u7da6\u7da7\u7da8\u7da9\u7daa\u7dab\u7dac\u7dad\u7dae\u7daf\u7db0\u7db1\u7db2\u7db3\u7db4\u7db5\u7db7\u7db8\u7db9\u7dba\u7dbb\u7dbc\u7dbd\u7dbe\u7dbf\u7dc0\u7dc1\u7dc2\u7dc4\u7dc5\u7dc6\u7dc7\u7dc9\u7dca\u7dcb\u7dcc\u7dcd\u7dce\u7dcf\u7dd0\u7dd2\u7dd3\u7dd4\u7dd7\u7dd8\u7dd9\u7dda\u7ddb\u7ddc\u7ddd\u7dde\u7ddf\u7de0\u7de1\u7de3\u7de4\u7de5\u7de6\u7de7\u7de8\u7de9\u7dea\u7dec\u7dee\u7def\u7df0\u7df1\u7df2\u7df3"+
"\u7df4\u7df5\u7df6\u7df7\u7df9\u7dfa\u7dfb\u7dfd\u7dfe\u7e03\u7e07\u7e08\u7e09\u7e0a\u7e0b\u7e0c\u7e0d\u7e0e\u7e0f\u7e10\u7e11\u7e12\u7e13\u7e14\u7e15\u7e16\u7e17\u7e1a\u7e1b\u7e1c\u7e1d\u7e1e\u7e1f\u7e20\u7e21\u7e22\u7e23\u7e24\u7e25\u7e27\u7e29\u7e2a\u7e2b\u7e2d\u7e2e\u7e2f\u7e30\u7e31\u7e32\u7e33\u7e34\u7e35\u7e36\u7e37\u7e38\u7e39\u7e3a\u7e3b\u7e3c\u7e3d\u7e3e\u7e3f\u7e40\u7e41\u7e42\u7e43\u7e44\u7e45\u7e46\u7e47\u7e48\u7e49\u7e4c\u7e50\u7e51\u7e52\u7e53\u7e54\u7e55\u7e56\u7e57\u7e58\u7e59\u7e5a\u7e5c\u7e5e\u7e5f\u7e60\u7e61\u7e62\u7e63\u7e65\u7e67\u7e68\u7e69\u7e6a\u7e6b\u7e6d\u7e6e\u7e6f\u7e70\u7e72\u7e73\u7e74\u7e75\u7e76\u7e77\u7e78\u7e79\u7e7a\u7e7b\u7e7c\u7e7d\u7e7e\u7e7f\u7e80\u7e81\u7e82\u7e86\u7e87\u7e88\u7e8a\u7e8b\u7e8c\u7e8d\u7e8e\u7e8f\u7e91"+
"\u7e92\u7e93\u7e94\u7e95\u7e96\u7e97\u7e98\u7e99\u7e9a\u7e9b\u7e9c\u7e9f\u7ea4\u7eac\u7eba\u7ec7\u7ecf\u7edf\u7f06\u7f36\u7f37\u7f38\u7f39\u7f3a\u7f3d\u7f3e\u7f3f\u7f40\u7f41\u7f43\u7f44\u7f45\u7f47\u7f48\u7f49\u7f4a\u7f4b\u7f4c\u7f4d\u7f4e\u7f4f\u7f50\u7f51\u7f52\u7f53\u7f54\u7f55\u7f58\u7f5b\u7f5c\u7f5d\u7f5e\u7f5f\u7f60\u7f61\u7f63\u7f65\u7f66\u7f67\u7f68\u7f69\u7f6a\u7f6b\u7f6c\u7f6d\u7f6e\u7f70\u7f71\u7f72\u7f73\u7f75\u7f76\u7f77\u7f78\u7f79\u7f7a\u7f7b\u7f7c\u7f7d\u7f7e\u7f7f\u7f83\u7f85\u7f86\u7f87\u7f88\u7f89\u7f8a\u7f8b\u7f8c\u7f8d\u7f8e\u7f8f\u7f91\u7f92\u7f93\u7f94\u7f95\u7f96\u7f97\u7f9a\u7f9b\u7f9c\u7f9d\u7f9e\u7fa0\u7fa1\u7fa2\u7fa3\u7fa4\u7fa5\u7fa6\u7fa7\u7fa8\u7fa9\u7fac\u7fad\u7fae\u7faf\u7fb0\u7fb1\u7fb2\u7fb3\u7fb4\u7fb5\u7fb6\u7fb7\u7fb8"+
"\u7fb9\u7fba\u7fbb\u7fbc\u7fbd\u7fbe\u7fbf\u7fc0\u7fc1\u7fc2\u7fc3\u7fc5\u7fc7\u7fc9\u7fca\u7fcb\u7fcc\u7fcd\u7fce\u7fcf\u7fd0\u7fd1\u7fd2\u7fd4\u7fd5\u7fd7\u7fdb\u7fdc\u7fdd\u7fde\u7fdf\u7fe0\u7fe1\u7fe2\u7fe3\u7fe5\u7fe6\u7fe7\u7fe8\u7fe9\u7fea\u7feb\u7fec\u7fed\u7fee\u7fef\u7ff0\u7ff1\u7ff2\u7ff3\u7ff4\u7ff5\u7ff7\u7ff8\u7ff9\u7ffa\u7ffb\u7ffc\u7ffd\u7ffe\u7fff\u8000\u8001\u8002\u8003\u8004\u8005\u8006\u8007\u8008\u800b\u800c\u800d\u800e\u800f\u8010\u8011\u8012\u8014\u8015\u8016\u8017\u8018\u8019\u801b\u801c\u801d\u801e\u801f\u8020\u8021\u8024\u8025\u8026\u8028\u8029\u802a\u802c\u802e\u802f\u8030\u8031\u8033\u8034\u8035\u8036\u8037\u8039\u803b\u803c\u803d\u803e\u803f\u8043\u8046\u8047\u8048\u804a\u804f\u8050\u8051\u8052\u8054\u8056\u8058\u805a\u805b\u805c"+
"\u805d\u805e\u8061\u8062\u8063\u8064\u8066\u8067\u806c\u806f\u8070\u8071\u8072\u8073\u8075\u8076\u8077\u8078\u8079\u807d\u807e\u807f\u8080\u8082\u8084\u8085\u8086\u8087\u8089\u808a\u808b\u808c\u808f\u8090\u8092\u8093\u8095\u8096\u8098\u8099\u809a\u809b\u809c\u809d\u809f\u80a1\u80a2\u80a3\u80a5\u80a7\u80a9\u80aa\u80ab\u80ad\u80ae\u80af\u80b1\u80b2\u80b4\u80b5\u80b6\u80b7\u80b8\u80ba\u80bc\u80bd\u80c2\u80c3\u80c4\u80c5\u80c6\u80c7\u80c8\u80c9\u80ca\u80cc\u80cd\u80ce\u80cf\u80d0\u80d1\u80d4\u80d5\u80d6\u80d7\u80d8\u80d9\u80da\u80db\u80dc\u80dd\u80de\u80e0\u80e1\u80e3\u80e4\u80e5\u80e6\u80e9\u80ec\u80ed\u80ef\u80f0\u80f1\u80f2\u80f3\u80f4\u80f5\u80f6\u80f8\u80f9\u80fa\u80fb\u80fc\u80fd\u80fe\u8100\u8101\u8102\u8103\u8105\u8106\u8107\u8108\u8109\u810a\u810c\u810e"+
"\u8112\u8114\u8115\u8116\u8117\u8118\u8119\u811a\u811b\u811d\u811e\u811f\u8121\u8122\u8123\u8124\u8125\u8127\u8129\u812a\u812b\u812c\u812d\u812f\u8130\u8132\u8134\u8137\u8139\u813a\u813d\u813e\u8142\u8143\u8144\u8146\u8147\u8148\u814a\u814b\u814c\u814d\u814e\u814f\u8150\u8151\u8152\u8153\u8154\u8155\u8156\u8159\u815a\u815b\u815c\u815e\u8160\u8161\u8162\u8164\u8165\u8166\u8167\u8169\u816b\u816d\u816e\u816f\u8170\u8171\u8172\u8173\u8174\u8176\u8177\u8178\u8179\u817a\u817c\u817f\u8180\u8182\u8183\u8184\u8186\u8187\u8188\u8189\u818a\u818b\u818c\u818d\u818f\u8193\u8195\u8197\u8198\u8199\u819a\u819b\u819c\u819d\u819e\u819f\u81a0\u81a2\u81a3\u81a5\u81a6\u81a7\u81a8\u81a9\u81aa\u81ab\u81ac\u81ae\u81b0\u81b1\u81b2\u81b3\u81b4\u81b5\u81b6\u81b7\u81b9\u81ba\u81bb\u81bc"+
"\u81bd\u81be\u81bf\u81c0\u81c1\u81c2\u81c3\u81c4\u81c5\u81c6\u81c7\u81c8\u81c9\u81ca\u81cc\u81cd\u81cf\u81d0\u81d1\u81d2\u81d5\u81d7\u81d8\u81d9\u81da\u81db\u81dd\u81de\u81df\u81e0\u81e1\u81e2\u81e3\u81e4\u81e5\u81e6\u81e7\u81e8\u81e9\u81ea\u81ec\u81ed\u81ee\u81ef\u81f2\u81f3\u81f4\u81f6\u81f7\u81f8\u81f9\u81fa\u81fb\u81fc\u81fe\u81ff\u8200\u8201\u8202\u8204\u8205\u8207\u8208\u8209\u820a\u820b\u820c\u820d\u8210\u8211\u8212\u8214\u8215\u8216\u8218\u821a\u821b\u821c\u821d\u821e\u821f\u8220\u8221\u8222\u8225\u8226\u8228\u8229\u822a\u822b\u822c\u822d\u822f\u8232\u8233\u8234\u8235\u8236\u8237\u8238\u8239\u823a\u823c\u823d\u823e\u823f\u8240\u8242\u8244\u8245\u8247\u8249\u824b\u824e\u824f\u8250\u8251\u8252\u8253\u8254\u8255\u8256\u8257\u8258\u8259\u825a\u825b\u825c"+
"\u825e\u825f\u8261\u8262\u8263\u8264\u8265\u8266\u8268\u8269\u826b\u826c\u826d\u826e\u826f\u8271\u8272\u8274\u8275\u8276\u8277\u8278\u8279\u827a\u827b\u827c\u827d\u827e\u827f\u8280\u8283\u8284\u8285\u8287\u828a\u828b\u828d\u828e\u828f\u8290\u8291\u8292\u8293\u8294\u8298\u8299\u829a\u829b\u829d\u829e\u829f\u82a0\u82a1\u82a2\u82a3\u82a4\u82a5\u82a6\u82a7\u82a8\u82a9\u82aa\u82ab\u82ac\u82ad\u82ae\u82af\u82b0\u82b1\u82b3\u82b4\u82b5\u82b6\u82b7\u82b8\u82b9\u82ba\u82bb\u82bc\u82bd\u82be\u82c0\u82c2\u82c3\u82c4\u82ca\u82cf\u82d0\u82d1\u82d2\u82d3\u82d4\u82d5\u82d6\u82d7\u82d8\u82d9\u82db\u82dc\u82de\u82df\u82e0\u82e1\u82e2\u82e3\u82e4\u82e5\u82e6\u82e7\u82e8\u82ea\u82eb\u82ec\u82ed\u82ee\u82ef\u82f0\u82f1\u82f2\u82f3\u82f4\u82f5\u82f6\u82f7\u82f9\u82fa\u82fb\u82fc"+
"\u82fd\u82fe\u82ff\u8300\u8301\u8302\u8303\u8304\u8305\u8306\u8307\u8308\u8309\u830b\u830c\u830d\u8316\u8317\u8318\u8319\u831a\u831b\u831c\u831d\u831e\u8320\u8322\u8324\u8325\u8326\u8327\u8328\u8329\u832a\u832b\u832c\u832d\u832f\u8331\u8332\u8333\u8334\u8335\u8336\u8337\u8338\u8339\u833a\u833b\u833c\u833d\u833f\u8340\u8341\u8342\u8343\u8344\u8345\u8347\u8348\u8349\u834a\u834b\u834c\u834d\u834e\u834f\u8350\u8351\u8352\u8353\u8354\u8356\u8357\u8362\u8363\u8366\u836f\u8373\u8374\u8375\u8376\u8377\u8378\u837a\u837b\u837c\u837d\u837e\u837f\u8381\u8383\u8385\u8386\u8387\u8388\u8389\u838a\u838b\u838c\u838d\u838e\u838f\u8390\u8391\u8392\u8393\u8394\u8395\u8396\u8397\u8398\u8399\u839a\u839b\u839c\u839d\u839e\u83a0\u83a2\u83a3\u83a4\u83a5\u83a6\u83a7\u83a8\u83a9\u83aa"+
"\u83ab\u83ac\u83ae\u83af\u83b0\u83b9\u83bd\u83be\u83bf\u83c0\u83c1\u83c2\u83c3\u83c4\u83c5\u83c6\u83c7\u83c8\u83c9\u83ca\u83cb\u83cc\u83cd\u83ce\u83cf\u83d1\u83d3\u83d4\u83d5\u83d6\u83d7\u83d8\u83d9\u83db\u83dc\u83dd\u83de\u83df\u83e0\u83e1\u83e2\u83e3\u83e4\u83e5\u83e7\u83e8\u83e9\u83ea\u83eb\u83ec\u83ed\u83ee\u83ef\u83f0\u83f1\u83f2\u83f3\u83f4\u83f5\u83f6\u83f8\u83f9\u83fa\u83fb\u83fc\u83fd\u83fe\u83ff\u8401\u8403\u8404\u8405\u8406\u8407\u8409\u840a\u840b\u840c\u840d\u840e\u840f\u8410\u8411\u8412\u8413\u8414\u8416\u8418\u841b\u841c\u8420\u8421\u8423\u8424\u8426\u8429\u842b\u842c\u842d\u842e\u842f\u8430\u8431\u8432\u8433\u8434\u8435\u8436\u8437\u8438\u8439\u843a\u843b\u843c\u843d\u843e\u843f\u8440\u8442\u8443\u8444\u8445\u8446\u8447\u8448\u8449\u844a\u844b"+
"\u844c\u844d\u844e\u8450\u8451\u8452\u8453\u8454\u8455\u8456\u8457\u8458\u8459\u845a\u845b\u845c\u845d\u845e\u845f\u8460\u8461\u8462\u8463\u8464\u8465\u8466\u8467\u8468\u8469\u846b\u846c\u846d\u846e\u846f\u8470\u8471\u8472\u8473\u8474\u8475\u8476\u8477\u8478\u8479\u847a\u847d\u847e\u847f\u8480\u8482\u8486\u8488\u848d\u848e\u848f\u8490\u8491\u8492\u8493\u8494\u8496\u8497\u8498\u8499\u849a\u849b\u849c\u849d\u849e\u849f\u84a0\u84a1\u84a2\u84a3\u84a4\u84a7\u84a8\u84a9\u84aa\u84ab\u84ac\u84ad\u84ae\u84af\u84b0\u84b1\u84b2\u84b4\u84b6\u84b8\u84b9\u84ba\u84bb\u84bc\u84bd\u84be\u84bf\u84c0\u84c1\u84c2\u84c4\u84c5\u84c6\u84c7\u84c9\u84ca\u84cb\u84cc\u84cd\u84ce\u84cf\u84d0\u84d1\u84d2\u84d3\u84d4\u84d6\u84d7\u84da\u84db\u84de\u84e1\u84e2\u84e4\u84e5\u84e7\u84e8\u84e9"+
"\u84ea\u84eb\u84ec\u84ee\u84ef\u84f0\u84f1\u84f2\u84f3\u84f4\u84f6\u84f7\u84f8\u84f9\u84fa\u84fb\u84fc\u84fd\u84fe\u84ff\u8500\u8502\u8503\u8505\u8506\u8507\u8508\u8509\u850a\u850b\u850c\u850d\u850e\u850f\u8510\u8511\u8512\u8513\u8514\u8515\u8516\u8517\u8518\u8519\u851a\u851c\u851d\u851e\u851f\u8520\u8521\u8523\u8524\u8525\u8526\u8527\u8528\u8529\u852a\u852b\u852c\u852d\u852e\u852f\u8530\u8531\u8533\u8534\u8538\u853b\u853d\u853e\u8540\u8541\u8542\u8543\u8544\u8545\u8546\u8547\u8548\u8549\u854a\u854b\u854c\u854d\u854e\u8551\u8552\u8553\u8554\u8555\u8556\u8557\u8558\u8559\u855a\u855b\u855d\u855e\u8560\u8561\u8562\u8563\u8564\u8565\u8566\u8567\u8568\u8569\u856a\u856b\u856c\u856d\u856e\u856f\u8570\u8571\u8573\u8575\u8576\u8577\u8578\u8579\u857a\u857b\u857c\u857e"+
"\u8580\u8581\u8582\u8583\u8584\u8585\u8586\u8587\u8588\u8589\u858a\u858b\u858c\u858d\u858e\u858f\u8590\u8591\u8594\u8595\u8596\u8598\u8599\u859a\u859b\u859c\u859d\u859e\u859f\u85a0\u85a1\u85a2\u85a3\u85a4\u85a6\u85a7\u85a8\u85a9\u85aa\u85af\u85b0\u85b1\u85b3\u85b4\u85b5\u85b6\u85b7\u85b8\u85b9\u85ba\u85bd\u85be\u85bf\u85c0\u85c1\u85c2\u85c3\u85c4\u85c5\u85c6\u85c7\u85c8\u85c9\u85cb\u85cd\u85ce\u85cf\u85d0\u85d1\u85d2\u85d5\u85d7\u85d8\u85d9\u85da\u85dc\u85dd\u85de\u85df\u85e0\u85e1\u85e2\u85e3\u85e4\u85e5\u85e6\u85e8\u85e9\u85ea\u85eb\u85ec\u85ed\u85ee\u85ef\u85f0\u85f1\u85f2\u85f6\u85f7\u85f8\u85f9\u85fa\u85fb\u85fc\u85fd\u85fe\u85ff\u8600\u8601\u8602\u8604\u8605\u8606\u8607\u8609\u860a\u860b\u860c\u860d\u8610\u8611\u8614\u8616\u8617\u8618\u8619\u861a\u861b"+
"\u861c\u861e\u861f\u8620\u8621\u8622\u8623\u8624\u8625\u8626\u8627\u8628\u8629\u862a\u862c\u862d\u862e\u862f\u8631\u8632\u8633\u8634\u8635\u8636\u8638\u8639\u863a\u863b\u863c\u863e\u863f\u8640\u8642\u8643\u8645\u8646\u8647\u8648\u864b\u864c\u864d\u864e\u8650\u8652\u8653\u8654\u8655\u8656\u8659\u865b\u865c\u865e\u865f\u8661\u8662\u8663\u8664\u8665\u8667\u8668\u8669\u866a\u866b\u866c\u866d\u866e\u866f\u8670\u8671\u8672\u8673\u8674\u8677\u8679\u867a\u867b\u867c\u867e\u8685\u8686\u8687\u868a\u868b\u868c\u868d\u868e\u8690\u8691\u8692\u8693\u8694\u8695\u8696\u8697\u8698\u8699\u869a\u869c\u869d\u869e\u86a0\u86a1\u86a2\u86a3\u86a4\u86a5\u86a7\u86a8\u86a9\u86aa\u86ad\u86af\u86b0\u86b1\u86b2\u86b3\u86b4\u86b5\u86b6\u86b7\u86b8\u86b9\u86ba\u86bb\u86bc\u86bd\u86be\u86bf"+
"\u86c0\u86c1\u86c2\u86c3\u86c4\u86c5\u86c6\u86c7\u86c8\u86c9\u86cb\u86cc\u86d0\u86d1\u86d3\u86d4\u86d6\u86d7\u86d8\u86d9\u86da\u86db\u86dc\u86dd\u86de\u86df\u86e2\u86e3\u86e4\u86e6\u86e8\u86e9\u86ea\u86eb\u86ec\u86ed\u86ef\u86f5\u86f6\u86f7\u86f8\u86f9\u86fa\u86fb\u86fe\u8700\u8701\u8702\u8703\u8704\u8705\u8706\u8707\u8708\u8709\u870a\u870b\u870c\u870d\u870e\u8711\u8712\u8713\u8718\u8719\u871a\u871b\u871c\u871e\u8720\u8721\u8722\u8723\u8724\u8725\u8726\u8727\u8728\u8729\u872a\u872c\u872d\u872e\u8730\u8731\u8732\u8733\u8734\u8735\u8737\u8738\u873a\u873b\u873c\u873e\u873f\u8740\u8741\u8742\u8743\u8746\u874c\u874d\u874e\u874f\u8750\u8751\u8752\u8753\u8754\u8755\u8756\u8757\u8758\u8759\u875a\u875b\u875c\u875d\u875e\u875f\u8760\u8761\u8762\u8763\u8764\u8765\u8766"+
"\u8767\u8768\u8769\u876a\u876b\u876c\u876d\u876e\u876f\u8770\u8771\u8773\u8774\u8775\u8776\u8777\u8778\u8779\u877a\u877b\u877d\u8781\u8782\u8783\u8784\u8785\u8786\u8787\u8788\u8789\u878b\u878c\u878d\u878f\u8790\u8791\u8792\u8793\u8794\u8796\u8797\u8798\u879a\u879b\u879c\u879d\u879e\u879f\u87a2\u87a3\u87a4\u87a5\u87a9\u87aa\u87ab\u87ac\u87ad\u87ae\u87af\u87b0\u87b1\u87b2\u87b3\u87b4\u87b5\u87b6\u87b7\u87b8\u87b9\u87ba\u87bb\u87bc\u87bd\u87be\u87bf\u87c0\u87c1\u87c2\u87c3\u87c4\u87c5\u87c6\u87c8\u87c9\u87ca\u87cb\u87cc\u87ce\u87d1\u87d2\u87d3\u87d4\u87d6\u87d7\u87d8\u87d9\u87da\u87db\u87dc\u87dd\u87de\u87df\u87e0\u87e1\u87e2\u87e3\u87e4\u87e5\u87e6\u87e7\u87e8\u87ea\u87eb\u87ec\u87ed\u87ee\u87ef\u87f2\u87f3\u87f4\u87f5\u87f6\u87f7\u87f9\u87fa\u87fb\u87fc\u87fe"+
"\u87ff\u8800\u8801\u8802\u8803\u8804\u8805\u8806\u8808\u8809\u880a\u880b\u880c\u880d\u880f\u8810\u8811\u8813\u8814\u8815\u8816\u8817\u8818\u8819\u881b\u881c\u881d\u881f\u8820\u8821\u8822\u8823\u8824\u8825\u8826\u8827\u8828\u8829\u882a\u882b\u882c\u882d\u882e\u882f\u8830\u8831\u8832\u8833\u8835\u8836\u8837\u8838\u8839\u883b\u883c\u883d\u883e\u883f\u8840\u8841\u8842\u8843\u8844\u8845\u8846\u8848\u884a\u884b\u884c\u884d\u884e\u884f\u8852\u8853\u8855\u8856\u8857\u8859\u885a\u885b\u885d\u885e\u8860\u8861\u8862\u8863\u8864\u8865\u8867\u8868\u8869\u886a\u886b\u886d\u886e\u886f\u8870\u8871\u8872\u8874\u8875\u8876\u8877\u8879\u887c\u887d\u887e\u887f\u8880\u8881\u8882\u8883\u8884\u8887\u8888\u8889\u888b\u888c\u888d\u888e\u8891\u8892\u8893\u8895\u8896\u8897\u8898\u8899"+
"\u889a\u889b\u889c\u889e\u889f\u88a0\u88a1\u88a2\u88a4\u88a7\u88a8\u88aa\u88ab\u88ac\u88ae\u88b1\u88b2\u88b4\u88b5\u88b6\u88b7\u88b8\u88b9\u88ba\u88bc\u88bd\u88be\u88bf\u88c0\u88c1\u88c2\u88c5\u88c7\u88c9\u88ca\u88cb\u88cc\u88cd\u88ce\u88d0\u88d2\u88d4\u88d5\u88d6\u88d7\u88d8\u88d9\u88da\u88db\u88dc\u88dd\u88de\u88df\u88e1\u88e6\u88e7\u88e8\u88eb\u88ec\u88ee\u88ef\u88f0\u88f1\u88f2\u88f3\u88f4\u88f5\u88f6\u88f7\u88f8\u88f9\u88fa\u88fb\u88fc\u88fd\u88fe\u88ff\u8900\u8901\u8902\u8905\u8906\u8907\u8909\u890a\u890b\u890c\u890e\u8910\u8911\u8912\u8913\u8914\u8915\u8916\u8917\u8918\u8919\u891a\u891e\u891f\u8921\u8922\u8923\u8924\u8925\u8926\u8927\u8929\u892a\u892b\u892c\u892d\u892e\u892f\u8930\u8931\u8932\u8933\u8935\u8936\u8937\u8938\u893b\u893c\u893d\u893e\u8941"+
"\u8942\u8943\u8944\u8946\u8947\u8949\u894b\u894c\u894d\u894f\u8950\u8951\u8952\u8953\u8954\u8956\u8957\u8958\u8959\u895a\u895b\u895c\u895d\u895e\u895f\u8960\u8961\u8962\u8963\u8964\u8965\u8966\u8969\u896a\u896b\u896c\u896d\u896e\u896f\u8971\u8972\u8973\u8974\u8976\u8977\u8979\u897a\u897b\u897c\u897e\u897f\u8980\u8981\u8982\u8983\u8985\u8986\u8987\u8988\u8989\u898a\u898b\u898f\u8991\u8993\u8994\u8995\u8996\u8997\u8998\u899b\u899c\u899d\u899e\u899f\u89a1\u89a2\u89a3\u89a4\u89a5\u89a6\u89a7\u89a9\u89aa\u89ac\u89ad\u89ae\u89af\u89b2\u89b6\u89b7\u89b9\u89ba\u89bc\u89bd\u89be\u89bf\u89c0\u89c1\u89c6\u89d2\u89d3\u89d4\u89d5\u89d6\u89d9\u89da\u89db\u89dc\u89dd\u89df\u89e0\u89e1\u89e2\u89e3\u89e4\u89e5\u89e6\u89e7\u89e8\u89e9\u89eb\u89ec\u89ed\u89f0\u89f1\u89f2\u89f3"+
"\u89f4\u89f6\u89f7\u89f8\u89fa\u89fb\u89fc\u89fe\u89ff\u8a00\u8a02\u8a03\u8a04\u8a07\u8a08\u8a0a\u8a0c\u8a0e\u8a0f\u8a10\u8a11\u8a12\u8a13\u8a15\u8a16\u8a17\u8a18\u8a1b\u8a1c\u8a1d\u8a1e\u8a1f\u8a22\u8a23\u8a25\u8a27\u8a29\u8a2a\u8a2b\u8a2c\u8a2d\u8a30\u8a31\u8a34\u8a36\u8a38\u8a39\u8a3a\u8a3b\u8a3c\u8a3d\u8a3e\u8a3f\u8a40\u8a41\u8a44\u8a45\u8a46\u8a48\u8a49\u8a4a\u8a4c\u8a4d\u8a4e\u8a4f\u8a50\u8a51\u8a52\u8a54\u8a55\u8a56\u8a57\u8a58\u8a59\u8a5b\u8a5e\u8a60\u8a61\u8a62\u8a63\u8a66\u8a67\u8a68\u8a69\u8a6b\u8a6c\u8a6d\u8a6e\u8a70\u8a71\u8a72\u8a73\u8a74\u8a75\u8a76\u8a77\u8a79\u8a7a\u8a7b\u8a7c\u8a7e\u8a7f\u8a81\u8a82\u8a83\u8a84\u8a85\u8a86\u8a87\u8a8b\u8a8c\u8a8d\u8a8f\u8a90\u8a91\u8a92\u8a93\u8a94\u8a95\u8a96\u8a98\u8a99\u8a9a\u8a9c\u8a9e\u8aa0\u8aa1\u8aa3"+
"\u8aa4\u8aa5\u8aa6\u8aa7\u8aa8\u8aa9\u8aaa\u8aab\u8aaf\u8ab0\u8ab2\u8ab4\u8ab6\u8ab8\u8ab9\u8aba\u8abb\u8abc\u8abd\u8abe\u8abf\u8ac0\u8ac2\u8ac3\u8ac4\u8ac5\u8ac6\u8ac7\u8ac8\u8ac9\u8acb\u8acd\u8acf\u8ad1\u8ad2\u8ad3\u8ad4\u8ad5\u8ad6\u8ad7\u8ad8\u8ad9\u8ada\u8adb\u8adc\u8add\u8ade\u8adf\u8ae0\u8ae1\u8ae2\u8ae4\u8ae6\u8ae7\u8ae8\u8aea\u8aeb\u8aed\u8aee\u8aef\u8af0\u8af1\u8af2\u8af3\u8af4\u8af5\u8af6\u8af7\u8af8\u8afa\u8afb\u8afc\u8afe\u8aff\u8b00\u8b01\u8b02\u8b04\u8b05\u8b06\u8b07\u8b08\u8b0a\u8b0b\u8b0c\u8b0d\u8b0e\u8b0f\u8b10\u8b11\u8b12\u8b13\u8b14\u8b15\u8b16\u8b17\u8b18\u8b19\u8b1a\u8b1b\u8b1c\u8b1d\u8b1e\u8b1f\u8b20\u8b22\u8b23\u8b24\u8b25\u8b26\u8b27\u8b28\u8b2a\u8b2b\u8b2c\u8b2d\u8b2e\u8b2f\u8b30\u8b31\u8b33\u8b35\u8b36\u8b37\u8b39\u8b3a\u8b3b\u8b3c"+
"\u8b3d\u8b3e\u8b3f\u8b40\u8b41\u8b42\u8b43\u8b45\u8b46\u8b47\u8b48\u8b49\u8b4a\u8b4b\u8b4c\u8b4d\u8b4e\u8b4f\u8b50\u8b51\u8b52\u8b53\u8b54\u8b55\u8b56\u8b57\u8b58\u8b59\u8b5a\u8b5c\u8b5d\u8b5e\u8b5f\u8b60\u8b62\u8b63\u8b65\u8b66\u8b67\u8b68\u8b69\u8b6a\u8b6b\u8b6c\u8b6d\u8b6f\u8b70\u8b74\u8b77\u8b78\u8b79\u8b7a\u8b7b\u8b7d\u8b7e\u8b7f\u8b80\u8b81\u8b82\u8b84\u8b85\u8b86\u8b88\u8b8a\u8b8b\u8b8c\u8b8e\u8b90\u8b92\u8b93\u8b94\u8b95\u8b96\u8b98\u8b99\u8b9a\u8b9b\u8b9c\u8b9e\u8b9f\u8ba0\u8bbe\u8be2\u8c37\u8c39\u8c3b\u8c3c\u8c3d\u8c3e\u8c3f\u8c41\u8c42\u8c43\u8c45\u8c46\u8c47\u8c48\u8c49\u8c4a\u8c4b\u8c4c\u8c4d\u8c4e\u8c4f\u8c50\u8c51\u8c54\u8c55\u8c56\u8c57\u8c5a\u8c5c\u8c5d\u8c5f\u8c61\u8c62\u8c64\u8c65\u8c66\u8c68\u8c69\u8c6a\u8c6b\u8c6c\u8c6d\u8c6f\u8c70\u8c71"+
"\u8c72\u8c73\u8c75\u8c76\u8c77\u8c78\u8c79\u8c7a\u8c7b\u8c7d\u8c80\u8c81\u8c82\u8c84\u8c85\u8c86\u8c89\u8c8a\u8c8c\u8c8d\u8c8f\u8c90\u8c91\u8c92\u8c93\u8c94\u8c95\u8c97\u8c98\u8c99\u8c9a\u8c9b\u8c9c\u8c9d\u8c9e\u8c9f\u8ca0\u8ca1\u8ca2\u8ca3\u8ca4\u8ca5\u8ca7\u8ca8\u8ca9\u8caa\u8cab\u8cac\u8cad\u8caf\u8cb0\u8cb2\u8cb3\u8cb4\u8cb5\u8cb6\u8cb7\u8cb8\u8cb9\u8cba\u8cbb\u8cbc\u8cbd\u8cbe\u8cbf\u8cc0\u8cc1\u8cc2\u8cc3\u8cc4\u8cc5\u8cc7\u8cc8\u8cca\u8ccc\u8ccd\u8ccf\u8cd1\u8cd2\u8cd3\u8cd4\u8cd5\u8cd6\u8cd7\u8cd9\u8cda\u8cdb\u8cdc\u8cdd\u8cde\u8cdf\u8ce0\u8ce1\u8ce2\u8ce3\u8ce4\u8ce5\u8ce6\u8ce7\u8ce8\u8ce9\u8cea\u8ceb\u8cec\u8ced\u8cee\u8cf0\u8cf1\u8cf2\u8cf3\u8cf4\u8cf5\u8cf7\u8cf8\u8cf9\u8cfa\u8cfb\u8cfc\u8cfd\u8cfe\u8d00\u8d02\u8d03\u8d04\u8d05\u8d06\u8d07\u8d08"+
"\u8d09\u8d0a\u8d0b\u8d0c\u8d0d\u8d0f\u8d10\u8d11\u8d12\u8d13\u8d14\u8d15\u8d16\u8d17\u8d18\u8d19\u8d1b\u8d1c\u8d1d\u8d64\u8d66\u8d67\u8d68\u8d69\u8d6b\u8d6c\u8d6d\u8d6e\u8d6f\u8d70\u8d72\u8d73\u8d74\u8d76\u8d77\u8d78\u8d79\u8d7a\u8d7b\u8d7d\u8d80\u8d81\u8d82\u8d84\u8d85\u8d89\u8d8a\u8d8c\u8d8d\u8d8e\u8d8f\u8d90\u8d91\u8d92\u8d93\u8d94\u8d95\u8d96\u8d99\u8d9b\u8d9c\u8d9f\u8da0\u8da1\u8da3\u8da5\u8da6\u8da7\u8da8\u8da9\u8daa\u8dab\u8dac\u8dad\u8dae\u8daf\u8db2\u8db3\u8db4\u8db5\u8db6\u8db7\u8db9\u8dba\u8dbc\u8dbe\u8dbf\u8dc0\u8dc1\u8dc2\u8dc3\u8dc5\u8dc6\u8dc7\u8dc8\u8dcb\u8dcc\u8dcd\u8dce\u8dcf\u8dd0\u8dd1\u8dd3\u8dd4\u8dd5\u8dd6\u8dd7\u8dd8\u8dd9\u8dda\u8ddb\u8ddc\u8ddd\u8ddf\u8de0\u8de1\u8de2\u8de3\u8de4\u8de6\u8de7\u8de8\u8de9\u8dea\u8deb\u8dec\u8dee\u8def"+
"\u8df0\u8df1\u8df2\u8df3\u8df4\u8dfa\u8dfc\u8dfd\u8dfe\u8dff\u8e00\u8e01\u8e02\u8e03\u8e04\u8e05\u8e06\u8e07\u8e09\u8e0a\u8e0d\u8e0e\u8e0f\u8e10\u8e11\u8e12\u8e13\u8e14\u8e15\u8e16\u8e17\u8e18\u8e19\u8e1a\u8e1b\u8e1c\u8e1d\u8e1e\u8e1f\u8e20\u8e21\u8e22\u8e23\u8e24\u8e25\u8e26\u8e27\u8e28\u8e29\u8e2a\u8e2b\u8e2d\u8e2e\u8e30\u8e31\u8e33\u8e34\u8e35\u8e36\u8e38\u8e39\u8e3a\u8e3c\u8e3d\u8e3e\u8e3f\u8e40\u8e41\u8e42\u8e44\u8e45\u8e46\u8e47\u8e48\u8e49\u8e4a\u8e4b\u8e4c\u8e4d\u8e4e\u8e4f\u8e50\u8e53\u8e54\u8e55\u8e56\u8e57\u8e59\u8e5a\u8e5b\u8e5c\u8e5d\u8e5e\u8e5f\u8e60\u8e61\u8e62\u8e63\u8e64\u8e65\u8e66\u8e67\u8e68\u8e69\u8e6a\u8e6c\u8e6d\u8e6f\u8e71\u8e72\u8e73\u8e74\u8e75\u8e76\u8e77\u8e78\u8e7a\u8e7b\u8e7c\u8e7e\u8e80\u8e81\u8e82\u8e84\u8e85\u8e86\u8e87\u8e88"+
"\u8e89\u8e8a\u8e8b\u8e8c\u8e8d\u8e8e\u8e90\u8e91\u8e92\u8e93\u8e94\u8e95\u8e96\u8e97\u8e98\u8e9a\u8e9d\u8e9e\u8e9f\u8ea0\u8ea1\u8ea3\u8ea4\u8ea5\u8ea6\u8ea7\u8ea8\u8ea9\u8eaa\u8eab\u8eac\u8ead\u8eb0\u8eb2\u8eb6\u8eba\u8ebc\u8ebd\u8ec0\u8ec2\u8ec3\u8ec9\u8eca\u8ecb\u8ecc\u8ecd\u8ece\u8ecf\u8ed1\u8ed2\u8ed3\u8ed4\u8ed7\u8ed8\u8eda\u8edb\u8edc\u8edd\u8ede\u8edf\u8ee0\u8ee1\u8ee2\u8ee4\u8ee5\u8ee6\u8ee7\u8ee8\u8ee9\u8eeb\u8eec\u8eed\u8eee\u8eef\u8ef1\u8ef2\u8ef4\u8ef5\u8ef6\u8ef7\u8ef8\u8ef9\u8efa\u8efb\u8efc\u8efe\u8eff\u8f00\u8f01\u8f02\u8f03\u8f05\u8f06\u8f07\u8f08\u8f09\u8f0a\u8f0b\u8f0d\u8f0e\u8f10\u8f11\u8f12\u8f13\u8f14\u8f15\u8f16\u8f17\u8f18\u8f19\u8f1a\u8f1b\u8f1c\u8f1d\u8f1e\u8f1f\u8f20\u8f23\u8f24\u8f25\u8f26\u8f29\u8f2a\u8f2c\u8f2d\u8f2e\u8f2f\u8f30"+
"\u8f32\u8f33\u8f34\u8f35\u8f36\u8f37\u8f38\u8f39\u8f3b\u8f3e\u8f3f\u8f40\u8f41\u8f42\u8f43\u8f44\u8f45\u8f46\u8f47\u8f48\u8f49\u8f4a\u8f4b\u8f4d\u8f4e\u8f4f\u8f50\u8f51\u8f52\u8f53\u8f54\u8f55\u8f56\u8f57\u8f58\u8f59\u8f5a\u8f5b\u8f5c\u8f5d\u8f5e\u8f5f\u8f60\u8f61\u8f62\u8f63\u8f64\u8f66\u8f67\u8f6e\u8f93\u8f9b\u8f9c\u8f9f\u8fa0\u8fa3\u8fa5\u8fa6\u8fa8\u8fad\u8fae\u8faf\u8fb0\u8fb1\u8fb2\u8fb3\u8fb4\u8fb5\u8fb6\u8fb7\u8fb8\u8fb9\u8fba\u8fbb\u8fbc\u8fbe\u8fbf\u8fc1\u8fc2\u8fc4\u8fc5\u8fc6\u8fc9\u8fca\u8fcb\u8fcc\u8fcd\u8fce\u8fd0\u8fd1\u8fd2\u8fd3\u8fd4\u8fd5\u8fd6\u8fd7\u8fda\u8fe0\u8fe1\u8fe2\u8fe3\u8fe4\u8fe5\u8fe6\u8fe8\u8fea\u8feb\u8fed\u8fee\u8ff0\u8ff4\u8ff5\u8ff6\u8ff7\u8ff8\u8ff9\u8ffa\u8ffb\u8ffc\u8ffd\u8ffe\u8fff\u9000\u9001\u9002\u9003\u9004\u9005"+
"\u9006\u9008\u900b\u900c\u900d\u900f\u9010\u9011\u9012\u9014\u9015\u9016\u9017\u9019\u901a\u901b\u901c\u901d\u901e\u901f\u9020\u9021\u9022\u9023\u9024\u902d\u902e\u902f\u9031\u9032\u9033\u9034\u9035\u9036\u9037\u9038\u903c\u903d\u903e\u903f\u9041\u9042\u9044\u9047\u9049\u904a\u904b\u904c\u904d\u904e\u904f\u9050\u9051\u9052\u9053\u9054\u9055\u9056\u9058\u9059\u905b\u905c\u905d\u905e\u9060\u9061\u9062\u9063\u9064\u9067\u9068\u9069\u906b\u906c\u906d\u906e\u906f\u9070\u9072\u9073\u9074\u9075\u9076\u9077\u9078\u9079\u907a\u907b\u907c\u907d\u907e\u907f\u9080\u9081\u9082\u9083\u9084\u9085\u9086\u9087\u9088\u908a\u908b\u908d\u908f\u9090\u9091\u9094\u9095\u9097\u9098\u9099\u909b\u909e\u909f\u90a0\u90a1\u90a2\u90a3\u90a5\u90a6\u90a7\u90a8\u90aa\u90ae\u90af\u90b0\u90b1"+
"\u90b2\u90b3\u90b4\u90b5\u90b6\u90b8\u90bb\u90bd\u90be\u90bf\u90c1\u90c3\u90c4\u90c5\u90c7\u90c8\u90ca\u90cb\u90ce\u90d4\u90d5\u90d6\u90d7\u90d8\u90d9\u90da\u90db\u90dc\u90dd\u90df\u90e0\u90e1\u90e2\u90e3\u90e4\u90e5\u90e8\u90e9\u90ea\u90eb\u90ec\u90ed\u90ef\u90f0\u90f1\u90f2\u90f3\u90f4\u90f5\u90f9\u90fa\u90fb\u90fc\u90fd\u90fe\u90ff\u9100\u9101\u9102\u9103\u9104\u9105\u9106\u9107\u9108\u9109\u910b\u910d\u910e\u910f\u9110\u9111\u9112\u9114\u9116\u9117\u9118\u9119\u911a\u911b\u911c\u911d\u911e\u911f\u9120\u9121\u9122\u9123\u9124\u9126\u9127\u9128\u9129\u912a\u912b\u912c\u912d\u912e\u912f\u9130\u9131\u9132\u9133\u9134\u9135\u9136\u9138\u9139\u913a\u913b\u913e\u913f\u9140\u9141\u9143\u9144\u9145\u9146\u9147\u9148\u9149\u914a\u914b\u914c\u914d\u914e\u914f\u9150"+
"\u9151\u9152\u9153\u9155\u9156\u9157\u9158\u9159\u915a\u915c\u915e\u915f\u9160\u9161\u9162\u9163\u9164\u9165\u9167\u9168\u9169\u916a\u916c\u916e\u916f\u9170\u9172\u9173\u9174\u9175\u9176\u9177\u9178\u9179\u917a\u917c\u9180\u9181\u9182\u9183\u9184\u9185\u9186\u9187\u9189\u918a\u918b\u918c\u918d\u918e\u918f\u9190\u9191\u9192\u9193\u9199\u919a\u919b\u919c\u919d\u919e\u919f\u91a0\u91a1\u91a2\u91a3\u91a5\u91a7\u91a8\u91a9\u91aa\u91ab\u91ac\u91ad\u91ae\u91af\u91b0\u91b1\u91b2\u91b3\u91b4\u91b5\u91b6\u91b7\u91b9\u91ba\u91bb\u91bc\u91bd\u91be\u91c0\u91c1\u91c2\u91c3\u91c4\u91c5\u91c6\u91c7\u91c9\u91cb\u91cc\u91cd\u91ce\u91cf\u91d0\u91d1\u91d3\u91d4\u91d5\u91d6\u91d7\u91d8\u91d9\u91da\u91dc\u91dd\u91df\u91e2\u91e3\u91e4\u91e5\u91e6\u91e7\u91e8\u91e9\u91ea\u91eb\u91ec"+
"\u91ed\u91ee\u91f1\u91f3\u91f4\u91f5\u91f7\u91f8\u91f9\u91fa\u91fd\u91fe\u91ff\u9200\u9201\u9202\u9203\u9204\u9205\u9206\u9207\u9208\u9209\u920a\u920c\u920d\u920e\u920f\u9210\u9211\u9212\u9213\u9214\u9215\u9216\u9217\u9219\u921a\u921c\u921e\u9223\u9224\u9225\u9226\u9227\u9228\u922a\u922b\u922d\u922e\u9230\u9231\u9232\u9233\u9234\u9235\u9236\u9237\u9238\u9239\u923a\u923c\u923d\u923e\u923f\u9240\u9241\u9244\u9245\u9246\u9248\u9249\u924a\u924b\u924c\u924d\u924e\u924f\u9250\u9251\u9252\u9253\u9254\u9255\u9256\u9257\u9258\u925a\u925b\u925d\u925e\u925f\u9260\u9261\u9262\u9263\u9264\u9265\u9266\u9267\u926b\u926c\u926d\u926e\u926f\u9270\u9272\u9276\u9277\u9278\u9279\u927a\u927b\u927c\u927d\u927e\u927f\u9280\u9281\u9282\u9283\u9284\u9285\u9286\u9287\u9288\u9289\u928a"+
"\u928b\u928c\u928d\u928e\u928f\u9291\u9293\u9294\u9295\u9296\u9297\u9298\u9299\u929a\u929b\u929c\u929d\u92a0\u92a1\u92a2\u92a3\u92a4\u92a5\u92a6\u92a7\u92a8\u92a9\u92aa\u92ab\u92ac\u92ae\u92b1\u92b2\u92b3\u92b4\u92b5\u92b6\u92b7\u92ba\u92bb\u92bc\u92be\u92bf\u92c0\u92c1\u92c2\u92c3\u92c4\u92c5\u92c6\u92c7\u92c8\u92c9\u92ca\u92cb\u92cc\u92cd\u92ce\u92cf\u92d0\u92d1\u92d2\u92d3\u92d4\u92d5\u92d7\u92d8\u92d9\u92db\u92dd\u92de\u92df\u92e0\u92e1\u92e3\u92e4\u92e5\u92e6\u92e7\u92e8\u92e9\u92ea\u92eb\u92ec\u92ee\u92ef\u92f0\u92f1\u92f2\u92f3\u92f4\u92f6\u92f7\u92f8\u92f9\u92fa\u92fb\u92fc\u92fd\u92fe\u92ff\u9300\u9301\u9302\u9303\u9304\u9306\u9307\u9308\u9309\u930b\u930c\u930d\u930e\u930f\u9310\u9312\u9313\u9314\u9315\u9316\u9318\u9319\u931a\u931b\u931d\u931e\u931f"+
"\u9320\u9321\u9322\u9323\u9324\u9325\u9326\u9327\u9328\u9329\u932a\u932b\u932c\u932d\u932e\u932f\u9330\u9331\u9333\u9334\u9335\u9336\u9338\u9339\u933c\u9340\u9341\u9342\u9343\u9344\u9345\u9346\u9347\u9348\u9349\u934a\u934b\u934c\u934d\u934e\u934f\u9350\u9351\u9352\u9354\u9355\u9356\u9357\u9358\u9359\u935a\u935b\u935c\u935e\u935f\u9360\u9361\u9362\u9363\u9364\u9365\u9366\u9367\u9368\u9369\u936a\u936b\u936c\u936d\u936e\u9370\u9371\u9373\u9374\u9375\u9376\u9377\u9378\u9379\u937a\u937b\u937c\u937d\u937e\u9380\u9381\u9382\u9383\u9384\u9385\u9386\u9387\u9388\u9389\u938a\u938c\u938d\u938e\u938f\u9390\u9391\u9392\u9394\u9395\u9396\u9397\u9398\u9399\u939a\u939b\u939c\u939d\u939e\u939f\u93a0\u93a1\u93a2\u93a3\u93a4\u93a5\u93a6\u93a7\u93a8\u93a9\u93aa\u93ac\u93ad\u93ae"+
"\u93af\u93b0\u93b1\u93b2\u93b3\u93b4\u93b5\u93b7\u93b8\u93bb\u93bd\u93bf\u93c0\u93c2\u93c3\u93c4\u93c6\u93c7\u93c8\u93ca\u93cb\u93cc\u93cd\u93ce\u93cf\u93d0\u93d1\u93d2\u93d3\u93d4\u93d5\u93d6\u93d7\u93d8\u93d9\u93da\u93db\u93dc\u93dd\u93de\u93df\u93e0\u93e1\u93e2\u93e3\u93e4\u93e6\u93e7\u93e8\u93ec\u93ee\u93f0\u93f1\u93f3\u93f5\u93f6\u93f7\u93f8\u93f9\u93fa\u93fb\u93fc\u93fd\u93fe\u93ff\u9400\u9401\u9403\u9404\u9406\u9407\u9408\u9409\u940a\u940b\u940c\u940d\u940e\u940f\u9410\u9411\u9412\u9413\u9414\u9415\u9416\u9417\u9418\u9419\u941b\u941d\u9420\u9424\u9425\u9426\u9427\u9428\u9429\u942a\u942b\u942c\u942d\u942e\u9430\u9431\u9432\u9433\u9435\u9436\u9437\u9438\u9439\u943a\u943b\u943c\u943d\u943e\u943f\u9440\u9442\u9443\u9444\u9445\u9446\u9447\u9448\u9449\u944a"+
"\u944b\u944c\u944d\u944f\u9450\u9451\u9452\u9454\u9455\u9457\u9458\u945b\u945d\u945e\u9460\u9462\u9463\u9464\u9465\u9467\u9468\u9469\u946a\u946b\u946c\u946d\u946e\u946f\u9470\u9471\u9472\u9473\u9474\u9475\u9476\u9477\u9478\u9479\u947b\u947c\u947d\u947e\u947f\u9480\u9481\u9482\u9483\u9485\u949f\u94a2\u94c1\u94c3\u94dc\u94f6\u952d\u9547\u9577\u9578\u957a\u957b\u957c\u957d\u957f\u9580\u9582\u9583\u9585\u9586\u9588\u9589\u958b\u958c\u958d\u958e\u958f\u9590\u9591\u9592\u9593\u9594\u9596\u9597\u9598\u9599\u959b\u959c\u959e\u959f\u95a0\u95a1\u95a2\u95a3\u95a4\u95a5\u95a6\u95a7\u95a8\u95a9\u95aa\u95ab\u95ac\u95ad\u95ae\u95b0\u95b1\u95b5\u95b6\u95b7\u95b9\u95ba\u95bb\u95bc\u95bd\u95be\u95bf\u95c0\u95c3\u95c5\u95c6\u95c7\u95c8\u95c9\u95ca\u95cb\u95cc\u95cd\u95d0\u95d1"+
"\u95d2\u95d3\u95d4\u95d5\u95d6\u95da\u95db\u95dc\u95de\u95df\u95e0\u95e1\u95e2\u95e3\u95e4\u95e5\u95e8\u95f4\u961c\u961d\u961e\u9620\u9621\u9622\u9623\u9624\u9628\u962a\u962c\u962d\u962e\u962f\u9630\u9631\u9632\u9633\u9638\u9639\u963a\u963b\u963c\u963d\u963f\u9640\u9641\u9642\u9643\u9644\u9645\u964a\u964b\u964c\u964d\u964e\u964f\u9650\u9651\u9653\u9654\u9656\u9658\u965b\u965c\u965d\u965e\u965f\u9661\u9662\u9663\u9664\u9669\u966a\u966b\u966c\u966d\u966f\u9670\u9671\u9672\u9673\u9674\u9675\u9676\u9677\u9678\u967b\u967c\u967d\u967e\u9680\u9681\u9683\u9684\u9685\u9686\u9687\u9688\u9689\u968a\u968b\u968d\u968e\u968f\u9691\u9692\u9693\u9694\u9695\u9696\u9697\u9698\u9699\u969b\u969c\u969e\u96a1\u96a2\u96a3\u96a4\u96a5\u96a7\u96a8\u96a9\u96aa\u96ac\u96ae\u96b0\u96b1"+
"\u96b3\u96b4\u96b6\u96b8\u96b9\u96bb\u96bc\u96bd\u96bf\u96c0\u96c1\u96c2\u96c3\u96c4\u96c5\u96c6\u96c7\u96c8\u96c9\u96ca\u96cb\u96cc\u96cd\u96ce\u96d2\u96d3\u96d4\u96d5\u96d6\u96d7\u96d8\u96d9\u96da\u96db\u96dc\u96dd\u96de\u96df\u96e1\u96e2\u96e3\u96e5\u96e8\u96e9\u96ea\u96ef\u96f0\u96f1\u96f2\u96f4\u96f5\u96f6\u96f7\u96f8\u96f9\u96fa\u96fb\u96fd\u96ff\u9700\u9702\u9703\u9704\u9705\u9706\u9707\u9708\u9709\u970b\u970d\u970e\u970f\u9710\u9711\u9712\u9713\u9716\u9718\u9719\u971b\u971c\u971d\u971e\u971f\u9720\u9721\u9722\u9723\u9724\u9725\u9726\u9727\u9728\u9729\u972a\u972b\u972c\u972e\u972f\u9730\u9731\u9732\u9735\u9736\u9738\u9739\u973a\u973d\u973e\u973f\u9740\u9741\u9742\u9743\u9744\u9746\u9747\u9748\u9749\u974b\u9751\u9752\u9756\u9757\u9758\u975a\u975b\u975c"+
"\u975d\u975e\u975f\u9760\u9761\u9762\u9766\u9768\u9769\u976a\u976c\u976d\u976e\u9770\u9771\u9772\u9773\u9774\u9776\u9777\u9778\u977a\u977b\u977c\u977d\u977e\u977f\u9780\u9781\u9782\u9783\u9784\u9785\u9787\u9788\u9789\u978a\u978b\u978d\u978e\u978f\u9794\u9797\u9798\u9799\u979a\u979b\u979c\u979d\u979e\u979f\u97a0\u97a1\u97a2\u97a3\u97a4\u97a5\u97a6\u97a8\u97aa\u97ab\u97ac\u97ad\u97ae\u97b1\u97b2\u97b3\u97b4\u97b6\u97b7\u97b8\u97b9\u97ba\u97bb\u97bd\u97be\u97bf\u97c0\u97c1\u97c2\u97c3\u97c4\u97c5\u97c6\u97c7\u97c8\u97c9\u97cb\u97cc\u97cd\u97ce\u97cf\u97d0\u97d2\u97d3\u97d4\u97d5\u97d6\u97d7\u97d8\u97d9\u97dc\u97dd\u97de\u97df\u97e0\u97e1\u97e3\u97e5\u97e6\u97ed\u97ee\u97f0\u97f1\u97f2\u97f3\u97f5\u97f6\u97f8\u97f9\u97fa\u97fb\u97fd\u97fe\u97ff\u9800\u9801\u9802"+
"\u9803\u9804\u9805\u9806\u9807\u9808\u980a\u980c\u980d\u980e\u980f\u9810\u9811\u9812\u9813\u9814\u9815\u9816\u9817\u9818\u981b\u981c\u981d\u981e\u981f\u9820\u9821\u9823\u9824\u9826\u9827\u9828\u9829\u982b\u982d\u982e\u982f\u9830\u9832\u9833\u9834\u9835\u9837\u9838\u9839\u983b\u9841\u9843\u9844\u9845\u9846\u9847\u9848\u9849\u984a\u984b\u984c\u984d\u984e\u984f\u9850\u9851\u9852\u9853\u9857\u9858\u9859\u985b\u985c\u985d\u985e\u985f\u9860\u9862\u9863\u9864\u9865\u9866\u9867\u9869\u986a\u986b\u986c\u986f\u9870\u9871\u9872\u9873\u9874\u9875\u98a8\u98a9\u98ac\u98ad\u98ae\u98af\u98b1\u98b2\u98b3\u98b4\u98b6\u98b7\u98b8\u98b9\u98ba\u98bb\u98bc\u98bd\u98be\u98bf\u98c0\u98c1\u98c2\u98c3\u98c4\u98c6\u98c7\u98c8\u98c9\u98ca\u98cb\u98cc\u98ce\u98db\u98dc\u98de\u98df\u98e0"+
"\u98e1\u98e2\u98e3\u98e5\u98e6\u98e7\u98e9\u98ea\u98eb\u98ec\u98ed\u98ef\u98f1\u98f2\u98f4\u98f5\u98f6\u98f9\u98fa\u98fc\u98fd\u98fe\u9900\u9902\u9903\u9905\u9907\u9908\u9909\u990a\u990c\u990e\u9910\u9911\u9912\u9913\u9914\u9915\u9916\u9917\u9918\u9919\u991a\u991b\u991c\u991e\u991f\u9921\u9924\u9925\u9927\u9928\u9929\u992a\u992b\u992c\u992d\u992e\u992f\u9930\u9931\u9932\u9933\u9935\u9937\u9938\u9939\u993a\u993b\u993c\u993d\u993e\u993f\u9940\u9941\u9942\u9943\u9945\u9947\u9948\u9949\u994a\u994b\u994c\u994d\u994e\u9950\u9951\u9952\u9953\u9954\u9955\u9956\u9957\u9958\u9959\u995b\u995c\u995d\u995e\u995f\u9961\u9962\u9963\u9996\u9997\u9998\u9999\u999b\u999c\u999d\u999e\u99a1\u99a3\u99a4\u99a5\u99a6\u99a7\u99a8\u99aa\u99ab\u99ac\u99ad\u99ae\u99af\u99b0\u99b1\u99b2"+
"\u99b3\u99b4\u99b5\u99b8\u99b9\u99ba\u99bb\u99bc\u99bd\u99c1\u99c2\u99c3\u99c4\u99c5\u99c7\u99c9\u99cb\u99cc\u99cd\u99ce\u99cf\u99d0\u99d1\u99d2\u99d3\u99d4\u99d5\u99d6\u99d7\u99d8\u99d9\u99da\u99db\u99dc\u99dd\u99df\u99e1\u99e2\u99e3\u99e4\u99e5\u99e6\u99e7\u99e9\u99ea\u99ec\u99ed\u99ee\u99f0\u99f1\u99f4\u99f5\u99f6\u99f7\u99f8\u99f9\u99fa\u99fb\u99fc\u99fd\u99fe\u99ff\u9a01\u9a02\u9a03\u9a04\u9a05\u9a06\u9a07\u9a09\u9a0a\u9a0b\u9a0c\u9a0d\u9a0e\u9a0f\u9a10\u9a11\u9a14\u9a15\u9a16\u9a19\u9a1a\u9a1b\u9a1c\u9a1d\u9a1e\u9a1f\u9a20\u9a21\u9a22\u9a23\u9a24\u9a25\u9a26\u9a27\u9a29\u9a2a\u9a2b\u9a2c\u9a2d\u9a2e\u9a2f\u9a30\u9a31\u9a32\u9a34\u9a35\u9a36\u9a37\u9a38\u9a39\u9a3a\u9a3b\u9a3c\u9a3d\u9a3e\u9a3f\u9a40\u9a41\u9a42\u9a43\u9a44\u9a45\u9a46\u9a48\u9a49\u9a4a"+
"\u9a4c\u9a4d\u9a4e\u9a4f\u9a50\u9a52\u9a53\u9a54\u9a55\u9a56\u9a57\u9a58\u9a59\u9a5a\u9a5b\u9a5c\u9a5e\u9a5f\u9a60\u9a62\u9a63\u9a64\u9a65\u9a66\u9a67\u9a68\u9a69\u9a6a\u9a6b\u9a6c\u9a8f\u9aa8\u9aab\u9aad\u9aaf\u9ab0\u9ab1\u9ab2\u9ab3\u9ab4\u9ab6\u9ab7\u9ab8\u9ab9\u9aba\u9abb\u9abc\u9abd\u9abe\u9abf\u9ac0\u9ac1\u9ac2\u9ac6\u9ac7\u9aca\u9acd\u9acf\u9ad0\u9ad1\u9ad2\u9ad3\u9ad4\u9ad5\u9ad6\u9ad7\u9ad8\u9adc\u9adf\u9ae0\u9ae1\u9ae2\u9ae3\u9ae6\u9ae7\u9aeb\u9aec\u9aed\u9aee\u9aef\u9af1\u9af2\u9af3\u9af4\u9af6\u9af7\u9af9\u9afa\u9afb\u9afc\u9afd\u9afe\u9aff\u9b01\u9b02\u9b03\u9b04\u9b05\u9b06\u9b08\u9b09\u9b0a\u9b0b\u9b0c\u9b0d\u9b0e\u9b0f\u9b10\u9b11\u9b12\u9b14\u9b15\u9b16\u9b17\u9b18\u9b19\u9b1a\u9b1e\u9b1f\u9b20\u9b22\u9b23\u9b24\u9b25\u9b27\u9b28\u9b29\u9b2a"+
"\u9b2b\u9b2d\u9b2e\u9b2f\u9b31\u9b32\u9b33\u9b34\u9b35\u9b37\u9b39\u9b3a\u9b3b\u9b3c\u9b3e\u9b3f\u9b40\u9b41\u9b42\u9b43\u9b44\u9b45\u9b46\u9b48\u9b4a\u9b4b\u9b4c\u9b4d\u9b4e\u9b4f\u9b50\u9b51\u9b52\u9b54\u9b55\u9b56\u9b58\u9b59\u9b5a\u9b5b\u9b5f\u9b60\u9b61\u9b64\u9b66\u9b67\u9b68\u9b69\u9b6c\u9b6f\u9b70\u9b71\u9b74\u9b75\u9b76\u9b77\u9b7a\u9b7b\u9b7c\u9b7d\u9b7e\u9b7f\u9b80\u9b81\u9b82\u9b83\u9b85\u9b86\u9b87\u9b88\u9b8b\u9b8d\u9b8e\u9b8f\u9b90\u9b91\u9b92\u9b93\u9b95\u9b97\u9b9a\u9b9b\u9b9d\u9b9e\u9b9f\u9ba0\u9ba1\u9ba2\u9ba4\u9ba5\u9ba6\u9ba8\u9baa\u9bab\u9bad\u9bae\u9baf\u9bb0\u9bb5\u9bb6\u9bb8\u9bb9\u9bbd\u9bbf\u9bc0\u9bc1\u9bc3\u9bc4\u9bc6\u9bc7\u9bc8\u9bc9\u9bca\u9bcf\u9bd3\u9bd4\u9bd5\u9bd6\u9bd7\u9bd9\u9bda\u9bdb\u9bdc\u9bdd\u9bde\u9be0\u9be1\u9be2"+
"\u9be4\u9be5\u9be6\u9be7\u9be8\u9be9\u9bea\u9beb\u9bec\u9bed\u9bf0\u9bf1\u9bf4\u9bf7\u9bf8\u9bfd\u9bff\u9c02\u9c05\u9c06\u9c07\u9c08\u9c09\u9c0a\u9c0b\u9c0c\u9c0d\u9c0e\u9c10\u9c12\u9c13\u9c14\u9c15\u9c17\u9c1b\u9c1c\u9c1d\u9c1f\u9c20\u9c21\u9c23\u9c24\u9c25\u9c26\u9c28\u9c29\u9c2b\u9c2c\u9c2d\u9c2f\u9c31\u9c32\u9c33\u9c34\u9c35\u9c36\u9c37\u9c39\u9c3a\u9c3b\u9c3c\u9c3d\u9c3e\u9c3f\u9c40\u9c41\u9c44\u9c45\u9c46\u9c48\u9c49\u9c4a\u9c4b\u9c4c\u9c4d\u9c4e\u9c4f\u9c50\u9c52\u9c53\u9c54\u9c55\u9c56\u9c57\u9c58\u9c59\u9c5d\u9c5e\u9c5f\u9c60\u9c62\u9c63\u9c66\u9c67\u9c68\u9c6d\u9c6e\u9c71\u9c72\u9c73\u9c74\u9c75\u9c77\u9c78\u9c79\u9c7a\u9c7b\u9c7c\u9ce5\u9ce6\u9ce7\u9ce9\u9cea\u9ced\u9cf1\u9cf2\u9cf3\u9cf4\u9cf5\u9cf6\u9cf7\u9cf9\u9cfa\u9cfb\u9cfc\u9cfd\u9cff\u9d00"+
"\u9d02\u9d03\u9d04\u9d05\u9d06\u9d07\u9d08\u9d09\u9d0c\u9d10\u9d12\u9d14\u9d15\u9d16\u9d17\u9d18\u9d19\u9d1b\u9d1d\u9d1e\u9d1f\u9d20\u9d21\u9d22\u9d23\u9d25\u9d26\u9d28\u9d29\u9d2d\u9d2e\u9d2f\u9d30\u9d31\u9d33\u9d34\u9d36\u9d37\u9d38\u9d39\u9d3b\u9d3d\u9d3e\u9d3f\u9d40\u9d41\u9d42\u9d43\u9d44\u9d45\u9d49\u9d4a\u9d4b\u9d4c\u9d4e\u9d4f\u9d50\u9d51\u9d52\u9d53\u9d54\u9d56\u9d57\u9d58\u9d59\u9d5a\u9d5b\u9d5c\u9d5d\u9d5e\u9d5f\u9d60\u9d61\u9d67\u9d68\u9d69\u9d6a\u9d6b\u9d6c\u9d6d\u9d6e\u9d6f\u9d70\u9d71\u9d72\u9d73\u9d74\u9d75\u9d77\u9d78\u9d79\u9d7b\u9d7c\u9d7d\u9d7e\u9d7f\u9d80\u9d81\u9d82\u9d83\u9d84\u9d85\u9d86\u9d87\u9d88\u9d89\u9d8a\u9d8b\u9d8c\u9d90\u9d92\u9d93\u9d94\u9d96\u9d97\u9d98\u9d99\u9d9a\u9d9b\u9d9c\u9d9d\u9d9e\u9d9f\u9da0\u9da1\u9da2\u9da3\u9da4"+
"\u9da5\u9da6\u9da7\u9da8\u9da9\u9daa\u9dab\u9dac\u9dad\u9daf\u9db1\u9db2\u9db3\u9db4\u9db5\u9db6\u9db7\u9db8\u9db9\u9dba\u9dbb\u9dbc\u9dbd\u9dbe\u9dbf\u9dc0\u9dc1\u9dc2\u9dc3\u9dc4\u9dc5\u9dc7\u9dc8\u9dc9\u9dca\u9dcb\u9dcc\u9dcd\u9dce\u9dcf\u9dd0\u9dd1\u9dd2\u9dd3\u9dd4\u9dd5\u9dd6\u9dd7\u9dd8\u9dd9\u9dda\u9ddb\u9ddc\u9ddd\u9dde\u9ddf\u9de1\u9de2\u9de3\u9de4\u9de5\u9de6\u9de8\u9de9\u9deb\u9dec\u9ded\u9dee\u9def\u9df0\u9df2\u9df3\u9df4\u9df5\u9df6\u9df7\u9df8\u9df9\u9dfa\u9dfb\u9dfc\u9dfd\u9dfe\u9dff\u9e00\u9e01\u9e02\u9e03\u9e04\u9e05\u9e06\u9e07\u9e09\u9e0a\u9e0b\u9e0c\u9e0d\u9e0e\u9e0f\u9e10\u9e11\u9e12\u9e13\u9e14\u9e15\u9e17\u9e18\u9e19\u9e1a\u9e1b\u9e1c\u9e1d\u9e1e\u9e1f\u9e75\u9e79\u9e7a\u9e7b\u9e7c\u9e7d\u9e7f\u9e80\u9e81\u9e82\u9e83\u9e84\u9e85\u9e86"+
"\u9e87\u9e88\u9e89\u9e8a\u9e8b\u9e8c\u9e8d\u9e8e\u9e90\u9e91\u9e92\u9e93\u9e94\u9e95\u9e96\u9e97\u9e98\u9e99\u9e9a\u9e9b\u9e9c\u9e9d\u9e9e\u9e9f\u9ea0\u9ea1\u9ea2\u9ea4\u9ea5\u9ea6\u9ea7\u9ea8\u9ea9\u9eaa\u9eab\u9eac\u9ead\u9eae\u9eaf\u9eb0\u9eb1\u9eb4\u9eb5\u9eb6\u9eb7\u9ebb\u9ebc\u9ebd\u9ebe\u9ebf\u9ec0\u9ec1\u9ec2\u9ec3\u9ec4\u9ec6\u9ec7\u9ec8\u9ecc\u9ecd\u9ece\u9ecf\u9ed0\u9ed1\u9ed3\u9ed4\u9ed5\u9ed6\u9ed8\u9eda\u9edb\u9edc\u9edd\u9ede\u9edf\u9ee0\u9ee2\u9ee4\u9ee5\u9ee6\u9ee7\u9ee8\u9eeb\u9eed\u9eee\u9eef\u9ef0\u9ef1\u9ef2\u9ef3\u9ef4\u9ef5\u9ef6\u9ef7\u9ef8\u9ef9\u9efa\u9efb\u9efc\u9efd\u9efe\u9eff\u9f00\u9f01\u9f02\u9f06\u9f07\u9f08\u9f09\u9f0a\u9f0e\u9f0f\u9f10\u9f12\u9f13\u9f15\u9f16\u9f17\u9f18\u9f19\u9f1a\u9f1b\u9f1c\u9f1e\u9f20\u9f22\u9f23\u9f24"+
"\u9f25\u9f26\u9f27\u9f28\u9f29\u9f2a\u9f2b\u9f2c\u9f2d\u9f2e\u9f2f\u9f30\u9f31\u9f32\u9f33\u9f34\u9f35\u9f36\u9f37\u9f38\u9f39\u9f3b\u9f3d\u9f3e\u9f40\u9f41\u9f42\u9f43\u9f44\u9f45\u9f46\u9f47\u9f48\u9f49\u9f4a\u9f4b\u9f4c\u9f4d\u9f4e\u9f4f\u9f50\u9f52\u9f53\u9f54\u9f55\u9f56\u9f57\u9f58\u9f59\u9f5a\u9f5b\u9f5c\u9f5d\u9f5e\u9f5f\u9f60\u9f61\u9f62\u9f63\u9f64\u9f65\u9f66\u9f67\u9f69\u9f6a\u9f6b\u9f6c\u9f6e\u9f6f\u9f70\u9f71\u9f72\u9f74\u9f75\u9f76\u9f77\u9f78\u9f79\u9f7a\u9f7b\u9f7e\u9f7f\u9f8d\u9f8e\u9f90\u9f91\u9f92\u9f94\u9f95\u9f98\u9f99\u9f9c\u9f9f\u9fa0\u9fa2\u9fa4\u9fa5\ufa0c\ufa0d";

function isCTString(s){
if (s)
  if (s.length)
    for (i=0;i<s.length;i++)
      if (UNICODE11_CHARSET_CT.indexOf(s.charAt(i))==-1) {
        //alert('"'+s.charAt(i)+'" is not allowed.');//
        return false;
      }
//alert('good string!');//
return true;
}
/**************************************************
* This function will validate the entered string.
* Parameter :
* - str ==> the entered string
*
* Return :
* - true ==> If the string cantain malicious/invalid characters.
* - false ==> If the string do't cantain malicious/invalid characters.
*
**************************************************/
function checkMaliciousChars(str){
	if(str==null || str.length==0){
		//alert("false");
		return false;
	}
	var reg = "";	  
	reg  = /<|>/gi;
	if(reg.test(str)){
		//alert("true");
		return true;
	}
	reg  = /[\"\'][\s]*javascript:(.*)[\"\']/gi;
	if(reg.test(str)){
		//alert("true");
		return true;
	}
	reg = /script(.*)/gi;
	if(reg.test(str)){
		//alert("true");
		return true;
	}
	reg = /eval\((.*)\)/gi;
	if(reg.test(str)){
		//alert("true");
		return true;
	}
	return false;
}

function checkMaliciousCharsWithRegExp(str,regExp){
	
	if(str==null || str.length==0){
		//alert("false");
		return false;
	}
	if(regExp==null || regExp.length==0){
		return checkMaliciousChars(str);
	}
	var reg = new RegExp(regExp,"gi");
	if(reg.test(str)){
		//alert("true");
		return true;
	}
	return checkMaliciousChars(str);
}
/**************************************************
* This function will validate the entered string and filer the malicious/invalid characters.
* Parameter :
* - str ==> the entered string
*
* Return :
* - str ==> had filerde str
*
**************************************************/
function replaceMaliciousChars(str){
	if(str==null || str.length==0){
		return(str);
	}
	str = str.replace(/&/gi,"&amp;");
	str = str.replace(/'/gi,"&#039;");
	str = str.replace(/\"/gi,"&#034;"); 
	str = str.replace(/</gi,"&lt;");
	str = str.replace(/>/gi,"&gt;");
	str = str.replace(/[\"\'][\s]*javascript:(.*)[\"\']/gi, "\"\"");
	//str = str.replace(/script/gi, "");   
	str = str.replace(/eval\((.*)\)/gi, "");

	return str; 
}

function replaceMaliciousCharsWithRegExp(str,regExp){
	if(str==null || str.length==0){
		return(str);
	}
	if(regExp==null || regExp.length==0){
		return replaceMaliciousChars(str);
	}
	var reg = new RegExp(regExp,"gi");
	str = str.replace(reg,"");
	
	return replaceMaliciousChars(str);
}

function checkOrganizerEditInputString(lastrow,language){
	//var cellPosition = 1;
	//var increment = 1;
	var maxRow = lastrow;
	var alertMessage = "Please enter valid information in corresponding column(s)";
	if(language == 'zh'){
		alertMessage = "請於相關欄位輸入有效資料";
	}
	var reg = "\'|\"|\\(|\\)|;|\/";
	for(var cellPosition = 1;cellPosition<=maxRow;cellPosition++){
		
		if(!isEmpty(document.getElementById("policy_id_"+cellPosition).value) || !isEmpty(document.getElementById("insurer_"+cellPosition).value) || !isEmpty(document.getElementById("plan_"+cellPosition).value) || !isEmpty(document.getElementById("policy_no_"+cellPosition).value) || !isEmpty(document.getElementById("discription_"+cellPosition).value) || !isEmpty(document.getElementById("sum_assured_"+cellPosition).value))
		{
			if(checkMaliciousCharsWithRegExp(document.getElementById("policy_id_"+cellPosition).value,reg)){
				 alert(alertMessage);
				 document.getElementById("policy_id_"+cellPosition).focus(); 
				 return false;
			}
			if(checkMaliciousCharsWithRegExp(document.getElementById("insurer_"+cellPosition).value,reg)){
				 alert(alertMessage);
				 document.getElementById("insurer_"+cellPosition).focus(); 
				 return false;
			}
			if(checkMaliciousCharsWithRegExp(document.getElementById("plan_"+cellPosition).value,reg)){
				 alert(alertMessage);
				 document.getElementById("plan_"+cellPosition).focus(); 
				 return false;
			}
			if(checkMaliciousCharsWithRegExp(document.getElementById("policy_no_"+cellPosition).value,reg)){
				 alert(alertMessage);
				 document.getElementById("policy_no_"+cellPosition).focus(); 
				 return false;
			}
			if(checkMaliciousCharsWithRegExp(document.getElementById("discription_"+cellPosition).value,reg)){
				 alert(alertMessage);
				 document.getElementById("discription_"+cellPosition).focus(); 
				 return false;
			}
			if(checkMaliciousCharsWithRegExp(document.getElementById("sum_assured_"+cellPosition).value,reg)){
				 alert(alertMessage);
				 document.getElementById("sum_assured_"+cellPosition).focus(); 
				 return false;
			}
			if (isEmpty(document.getElementById("insurer_"+cellPosition).value) || !isKeyboardCharacter(document.getElementById("insurer_"+cellPosition).value)) {
	            alert(str1);
	            document.getElementById("insurer_"+cellPosition).focus(); 
	            return false;
	        }
	        
			if (isEmpty(document.getElementById("sum_assured_"+cellPosition).value) || !checkDouble(document.getElementById("sum_assured_"+cellPosition).value)) {
	            alert(str2);
	            document.getElementById("sum_assured_"+cellPosition).focus(); 
	            return false;
	        }
	        
			if (document.getElementById("sum_assured_"+cellPosition).value > 999999999.99) {
	            alert(str3);
	            document.getElementById("sum_assured_"+cellPosition).focus(); 
	            return false;
	        }
			
	    }
	}
	
	return true;
}

function removeBad(strTemp) { 
    strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,""); 
    return strTemp;
} 

function checkAllInputMaxLength(){ 
    var input = document.getElementsByTagName("input"); 
     for(i=0;i<input.length;i++){
        var type  = input[i].type; 
        if(type == 'text' || type == 'textarea'){ 
            if (input[i].maxLength > 0 && input[i].value.length > input[i].maxLength){ 
                alert("The input value is too long.\n輸入值過長。"); 
                input[i].focus(); 
                return false; 
            }   
        }
     }
     return true; 
  }

