OLD | NEW |
1 /* crypto/ec/ec_err.c */ | 1 /* crypto/ec/ec_err.c */ |
2 /* ==================================================================== | 2 /* ==================================================================== |
3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. | 3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * | 8 * |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 | 67 |
68 #define ERR_FUNC(func) ERR_PACK(ERR_LIB_EC,func,0) | 68 #define ERR_FUNC(func) ERR_PACK(ERR_LIB_EC,func,0) |
69 #define ERR_REASON(reason) ERR_PACK(ERR_LIB_EC,0,reason) | 69 #define ERR_REASON(reason) ERR_PACK(ERR_LIB_EC,0,reason) |
70 | 70 |
71 static ERR_STRING_DATA EC_str_functs[]= | 71 static ERR_STRING_DATA EC_str_functs[]= |
72 { | 72 { |
73 {ERR_FUNC(EC_F_COMPUTE_WNAF), "COMPUTE_WNAF"}, | 73 {ERR_FUNC(EC_F_COMPUTE_WNAF), "COMPUTE_WNAF"}, |
74 {ERR_FUNC(EC_F_D2I_ECPARAMETERS), "d2i_ECParameters"}, | 74 {ERR_FUNC(EC_F_D2I_ECPARAMETERS), "d2i_ECParameters"}, |
75 {ERR_FUNC(EC_F_D2I_ECPKPARAMETERS), "d2i_ECPKParameters"}, | 75 {ERR_FUNC(EC_F_D2I_ECPKPARAMETERS), "d2i_ECPKParameters"}, |
76 {ERR_FUNC(EC_F_D2I_ECPRIVATEKEY), "d2i_ECPrivateKey"}, | 76 {ERR_FUNC(EC_F_D2I_ECPRIVATEKEY), "d2i_ECPrivateKey"}, |
| 77 {ERR_FUNC(EC_F_DO_EC_KEY_PRINT), "DO_EC_KEY_PRINT"}, |
| 78 {ERR_FUNC(EC_F_ECKEY_PARAM2TYPE), "ECKEY_PARAM2TYPE"}, |
| 79 {ERR_FUNC(EC_F_ECKEY_PARAM_DECODE), "ECKEY_PARAM_DECODE"}, |
| 80 {ERR_FUNC(EC_F_ECKEY_PRIV_DECODE), "ECKEY_PRIV_DECODE"}, |
| 81 {ERR_FUNC(EC_F_ECKEY_PRIV_ENCODE), "ECKEY_PRIV_ENCODE"}, |
| 82 {ERR_FUNC(EC_F_ECKEY_PUB_DECODE), "ECKEY_PUB_DECODE"}, |
| 83 {ERR_FUNC(EC_F_ECKEY_PUB_ENCODE), "ECKEY_PUB_ENCODE"}, |
| 84 {ERR_FUNC(EC_F_ECKEY_TYPE2PARAM), "ECKEY_TYPE2PARAM"}, |
77 {ERR_FUNC(EC_F_ECPARAMETERS_PRINT), "ECParameters_print"}, | 85 {ERR_FUNC(EC_F_ECPARAMETERS_PRINT), "ECParameters_print"}, |
78 {ERR_FUNC(EC_F_ECPARAMETERS_PRINT_FP), "ECParameters_print_fp"}, | 86 {ERR_FUNC(EC_F_ECPARAMETERS_PRINT_FP), "ECParameters_print_fp"}, |
79 {ERR_FUNC(EC_F_ECPKPARAMETERS_PRINT), "ECPKParameters_print"}, | 87 {ERR_FUNC(EC_F_ECPKPARAMETERS_PRINT), "ECPKParameters_print"}, |
80 {ERR_FUNC(EC_F_ECPKPARAMETERS_PRINT_FP), "ECPKParameters_print_fp"}, | 88 {ERR_FUNC(EC_F_ECPKPARAMETERS_PRINT_FP), "ECPKParameters_print_fp"}, |
81 {ERR_FUNC(EC_F_ECP_NIST_MOD_192), "ECP_NIST_MOD_192"}, | 89 {ERR_FUNC(EC_F_ECP_NIST_MOD_192), "ECP_NIST_MOD_192"}, |
82 {ERR_FUNC(EC_F_ECP_NIST_MOD_224), "ECP_NIST_MOD_224"}, | 90 {ERR_FUNC(EC_F_ECP_NIST_MOD_224), "ECP_NIST_MOD_224"}, |
83 {ERR_FUNC(EC_F_ECP_NIST_MOD_256), "ECP_NIST_MOD_256"}, | 91 {ERR_FUNC(EC_F_ECP_NIST_MOD_256), "ECP_NIST_MOD_256"}, |
84 {ERR_FUNC(EC_F_ECP_NIST_MOD_521), "ECP_NIST_MOD_521"}, | 92 {ERR_FUNC(EC_F_ECP_NIST_MOD_521), "ECP_NIST_MOD_521"}, |
85 {ERR_FUNC(EC_F_EC_ASN1_GROUP2CURVE), "EC_ASN1_GROUP2CURVE"}, | 93 {ERR_FUNC(EC_F_EC_ASN1_GROUP2CURVE), "EC_ASN1_GROUP2CURVE"}, |
86 {ERR_FUNC(EC_F_EC_ASN1_GROUP2FIELDID), "EC_ASN1_GROUP2FIELDID"}, | 94 {ERR_FUNC(EC_F_EC_ASN1_GROUP2FIELDID), "EC_ASN1_GROUP2FIELDID"}, |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 {ERR_FUNC(EC_F_EC_GROUP_SET_CURVE_GFP), "EC_GROUP_set_curve_GFp"}, | 148 {ERR_FUNC(EC_F_EC_GROUP_SET_CURVE_GFP), "EC_GROUP_set_curve_GFp"}, |
141 {ERR_FUNC(EC_F_EC_GROUP_SET_EXTRA_DATA), "EC_GROUP_SET_EXTRA_DATA"}, | 149 {ERR_FUNC(EC_F_EC_GROUP_SET_EXTRA_DATA), "EC_GROUP_SET_EXTRA_DATA"}, |
142 {ERR_FUNC(EC_F_EC_GROUP_SET_GENERATOR), "EC_GROUP_set_generator"}, | 150 {ERR_FUNC(EC_F_EC_GROUP_SET_GENERATOR), "EC_GROUP_set_generator"}, |
143 {ERR_FUNC(EC_F_EC_KEY_CHECK_KEY), "EC_KEY_check_key"}, | 151 {ERR_FUNC(EC_F_EC_KEY_CHECK_KEY), "EC_KEY_check_key"}, |
144 {ERR_FUNC(EC_F_EC_KEY_COPY), "EC_KEY_copy"}, | 152 {ERR_FUNC(EC_F_EC_KEY_COPY), "EC_KEY_copy"}, |
145 {ERR_FUNC(EC_F_EC_KEY_GENERATE_KEY), "EC_KEY_generate_key"}, | 153 {ERR_FUNC(EC_F_EC_KEY_GENERATE_KEY), "EC_KEY_generate_key"}, |
146 {ERR_FUNC(EC_F_EC_KEY_NEW), "EC_KEY_new"}, | 154 {ERR_FUNC(EC_F_EC_KEY_NEW), "EC_KEY_new"}, |
147 {ERR_FUNC(EC_F_EC_KEY_PRINT), "EC_KEY_print"}, | 155 {ERR_FUNC(EC_F_EC_KEY_PRINT), "EC_KEY_print"}, |
148 {ERR_FUNC(EC_F_EC_KEY_PRINT_FP), "EC_KEY_print_fp"}, | 156 {ERR_FUNC(EC_F_EC_KEY_PRINT_FP), "EC_KEY_print_fp"}, |
149 {ERR_FUNC(EC_F_EC_POINTS_MAKE_AFFINE), "EC_POINTs_make_affine"}, | 157 {ERR_FUNC(EC_F_EC_POINTS_MAKE_AFFINE), "EC_POINTs_make_affine"}, |
150 {ERR_FUNC(EC_F_EC_POINTS_MUL), "EC_POINTs_mul"}, | |
151 {ERR_FUNC(EC_F_EC_POINT_ADD), "EC_POINT_add"}, | 158 {ERR_FUNC(EC_F_EC_POINT_ADD), "EC_POINT_add"}, |
152 {ERR_FUNC(EC_F_EC_POINT_CMP), "EC_POINT_cmp"}, | 159 {ERR_FUNC(EC_F_EC_POINT_CMP), "EC_POINT_cmp"}, |
153 {ERR_FUNC(EC_F_EC_POINT_COPY), "EC_POINT_copy"}, | 160 {ERR_FUNC(EC_F_EC_POINT_COPY), "EC_POINT_copy"}, |
154 {ERR_FUNC(EC_F_EC_POINT_DBL), "EC_POINT_dbl"}, | 161 {ERR_FUNC(EC_F_EC_POINT_DBL), "EC_POINT_dbl"}, |
155 {ERR_FUNC(EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M), "EC_POINT_get_affine_coo
rdinates_GF2m"}, | 162 {ERR_FUNC(EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M), "EC_POINT_get_affine_coo
rdinates_GF2m"}, |
156 {ERR_FUNC(EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP), "EC_POINT_get_affine_coo
rdinates_GFp"}, | 163 {ERR_FUNC(EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP), "EC_POINT_get_affine_coo
rdinates_GFp"}, |
157 {ERR_FUNC(EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP), "EC_POINT_get_Jp
rojective_coordinates_GFp"}, | 164 {ERR_FUNC(EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP), "EC_POINT_get_Jp
rojective_coordinates_GFp"}, |
158 {ERR_FUNC(EC_F_EC_POINT_INVERT), "EC_POINT_invert"}, | 165 {ERR_FUNC(EC_F_EC_POINT_INVERT), "EC_POINT_invert"}, |
159 {ERR_FUNC(EC_F_EC_POINT_IS_AT_INFINITY), "EC_POINT_is_at_infinity"}, | 166 {ERR_FUNC(EC_F_EC_POINT_IS_AT_INFINITY), "EC_POINT_is_at_infinity"}, |
160 {ERR_FUNC(EC_F_EC_POINT_IS_ON_CURVE), "EC_POINT_is_on_curve"}, | 167 {ERR_FUNC(EC_F_EC_POINT_IS_ON_CURVE), "EC_POINT_is_on_curve"}, |
(...skipping 10 matching lines...) Expand all Loading... |
171 {ERR_FUNC(EC_F_EC_POINT_SET_TO_INFINITY), "EC_POINT_set_to_infinity"}, | 178 {ERR_FUNC(EC_F_EC_POINT_SET_TO_INFINITY), "EC_POINT_set_to_infinity"}, |
172 {ERR_FUNC(EC_F_EC_PRE_COMP_DUP), "EC_PRE_COMP_DUP"}, | 179 {ERR_FUNC(EC_F_EC_PRE_COMP_DUP), "EC_PRE_COMP_DUP"}, |
173 {ERR_FUNC(EC_F_EC_PRE_COMP_NEW), "EC_PRE_COMP_NEW"}, | 180 {ERR_FUNC(EC_F_EC_PRE_COMP_NEW), "EC_PRE_COMP_NEW"}, |
174 {ERR_FUNC(EC_F_EC_WNAF_MUL), "ec_wNAF_mul"}, | 181 {ERR_FUNC(EC_F_EC_WNAF_MUL), "ec_wNAF_mul"}, |
175 {ERR_FUNC(EC_F_EC_WNAF_PRECOMPUTE_MULT), "ec_wNAF_precompute_mult"}, | 182 {ERR_FUNC(EC_F_EC_WNAF_PRECOMPUTE_MULT), "ec_wNAF_precompute_mult"}, |
176 {ERR_FUNC(EC_F_I2D_ECPARAMETERS), "i2d_ECParameters"}, | 183 {ERR_FUNC(EC_F_I2D_ECPARAMETERS), "i2d_ECParameters"}, |
177 {ERR_FUNC(EC_F_I2D_ECPKPARAMETERS), "i2d_ECPKParameters"}, | 184 {ERR_FUNC(EC_F_I2D_ECPKPARAMETERS), "i2d_ECPKParameters"}, |
178 {ERR_FUNC(EC_F_I2D_ECPRIVATEKEY), "i2d_ECPrivateKey"}, | 185 {ERR_FUNC(EC_F_I2D_ECPRIVATEKEY), "i2d_ECPrivateKey"}, |
179 {ERR_FUNC(EC_F_I2O_ECPUBLICKEY), "i2o_ECPublicKey"}, | 186 {ERR_FUNC(EC_F_I2O_ECPUBLICKEY), "i2o_ECPublicKey"}, |
180 {ERR_FUNC(EC_F_O2I_ECPUBLICKEY), "o2i_ECPublicKey"}, | 187 {ERR_FUNC(EC_F_O2I_ECPUBLICKEY), "o2i_ECPublicKey"}, |
| 188 {ERR_FUNC(EC_F_OLD_EC_PRIV_DECODE), "OLD_EC_PRIV_DECODE"}, |
| 189 {ERR_FUNC(EC_F_PKEY_EC_CTRL), "PKEY_EC_CTRL"}, |
| 190 {ERR_FUNC(EC_F_PKEY_EC_CTRL_STR), "PKEY_EC_CTRL_STR"}, |
| 191 {ERR_FUNC(EC_F_PKEY_EC_DERIVE), "PKEY_EC_DERIVE"}, |
| 192 {ERR_FUNC(EC_F_PKEY_EC_KEYGEN), "PKEY_EC_KEYGEN"}, |
| 193 {ERR_FUNC(EC_F_PKEY_EC_PARAMGEN), "PKEY_EC_PARAMGEN"}, |
| 194 {ERR_FUNC(EC_F_PKEY_EC_SIGN), "PKEY_EC_SIGN"}, |
181 {0,NULL} | 195 {0,NULL} |
182 }; | 196 }; |
183 | 197 |
184 static ERR_STRING_DATA EC_str_reasons[]= | 198 static ERR_STRING_DATA EC_str_reasons[]= |
185 { | 199 { |
186 {ERR_REASON(EC_R_ASN1_ERROR) ,"asn1 error"}, | 200 {ERR_REASON(EC_R_ASN1_ERROR) ,"asn1 error"}, |
187 {ERR_REASON(EC_R_ASN1_UNKNOWN_FIELD) ,"asn1 unknown field"}, | 201 {ERR_REASON(EC_R_ASN1_UNKNOWN_FIELD) ,"asn1 unknown field"}, |
188 {ERR_REASON(EC_R_BUFFER_TOO_SMALL) ,"buffer too small"}, | 202 {ERR_REASON(EC_R_BUFFER_TOO_SMALL) ,"buffer too small"}, |
189 {ERR_REASON(EC_R_D2I_ECPKPARAMETERS_FAILURE),"d2i ecpkparameters failure"}, | 203 {ERR_REASON(EC_R_D2I_ECPKPARAMETERS_FAILURE),"d2i ecpkparameters failure"}, |
| 204 {ERR_REASON(EC_R_DECODE_ERROR) ,"decode error"}, |
190 {ERR_REASON(EC_R_DISCRIMINANT_IS_ZERO) ,"discriminant is zero"}, | 205 {ERR_REASON(EC_R_DISCRIMINANT_IS_ZERO) ,"discriminant is zero"}, |
191 {ERR_REASON(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE),"ec group new by name failure"}, | 206 {ERR_REASON(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE),"ec group new by name failure"}, |
192 {ERR_REASON(EC_R_FIELD_TOO_LARGE) ,"field too large"}, | 207 {ERR_REASON(EC_R_FIELD_TOO_LARGE) ,"field too large"}, |
193 {ERR_REASON(EC_R_GROUP2PKPARAMETERS_FAILURE),"group2pkparameters failure"}, | 208 {ERR_REASON(EC_R_GROUP2PKPARAMETERS_FAILURE),"group2pkparameters failure"}, |
194 {ERR_REASON(EC_R_I2D_ECPKPARAMETERS_FAILURE),"i2d ecpkparameters failure"}, | 209 {ERR_REASON(EC_R_I2D_ECPKPARAMETERS_FAILURE),"i2d ecpkparameters failure"}, |
195 {ERR_REASON(EC_R_INCOMPATIBLE_OBJECTS) ,"incompatible objects"}, | 210 {ERR_REASON(EC_R_INCOMPATIBLE_OBJECTS) ,"incompatible objects"}, |
196 {ERR_REASON(EC_R_INVALID_ARGUMENT) ,"invalid argument"}, | 211 {ERR_REASON(EC_R_INVALID_ARGUMENT) ,"invalid argument"}, |
197 {ERR_REASON(EC_R_INVALID_COMPRESSED_POINT),"invalid compressed point"}, | 212 {ERR_REASON(EC_R_INVALID_COMPRESSED_POINT),"invalid compressed point"}, |
198 {ERR_REASON(EC_R_INVALID_COMPRESSION_BIT),"invalid compression bit"}, | 213 {ERR_REASON(EC_R_INVALID_COMPRESSION_BIT),"invalid compression bit"}, |
| 214 {ERR_REASON(EC_R_INVALID_CURVE) ,"invalid curve"}, |
| 215 {ERR_REASON(EC_R_INVALID_DIGEST_TYPE) ,"invalid digest type"}, |
199 {ERR_REASON(EC_R_INVALID_ENCODING) ,"invalid encoding"}, | 216 {ERR_REASON(EC_R_INVALID_ENCODING) ,"invalid encoding"}, |
200 {ERR_REASON(EC_R_INVALID_FIELD) ,"invalid field"}, | 217 {ERR_REASON(EC_R_INVALID_FIELD) ,"invalid field"}, |
201 {ERR_REASON(EC_R_INVALID_FORM) ,"invalid form"}, | 218 {ERR_REASON(EC_R_INVALID_FORM) ,"invalid form"}, |
202 {ERR_REASON(EC_R_INVALID_GROUP_ORDER) ,"invalid group order"}, | 219 {ERR_REASON(EC_R_INVALID_GROUP_ORDER) ,"invalid group order"}, |
203 {ERR_REASON(EC_R_INVALID_PENTANOMIAL_BASIS),"invalid pentanomial basis"}, | 220 {ERR_REASON(EC_R_INVALID_PENTANOMIAL_BASIS),"invalid pentanomial basis"}, |
204 {ERR_REASON(EC_R_INVALID_PRIVATE_KEY) ,"invalid private key"}, | 221 {ERR_REASON(EC_R_INVALID_PRIVATE_KEY) ,"invalid private key"}, |
205 {ERR_REASON(EC_R_INVALID_TRINOMIAL_BASIS),"invalid trinomial basis"}, | 222 {ERR_REASON(EC_R_INVALID_TRINOMIAL_BASIS),"invalid trinomial basis"}, |
| 223 {ERR_REASON(EC_R_KEYS_NOT_SET) ,"keys not set"}, |
206 {ERR_REASON(EC_R_MISSING_PARAMETERS) ,"missing parameters"}, | 224 {ERR_REASON(EC_R_MISSING_PARAMETERS) ,"missing parameters"}, |
207 {ERR_REASON(EC_R_MISSING_PRIVATE_KEY) ,"missing private key"}, | 225 {ERR_REASON(EC_R_MISSING_PRIVATE_KEY) ,"missing private key"}, |
208 {ERR_REASON(EC_R_NOT_A_NIST_PRIME) ,"not a NIST prime"}, | 226 {ERR_REASON(EC_R_NOT_A_NIST_PRIME) ,"not a NIST prime"}, |
209 {ERR_REASON(EC_R_NOT_A_SUPPORTED_NIST_PRIME),"not a supported NIST prime"}, | 227 {ERR_REASON(EC_R_NOT_A_SUPPORTED_NIST_PRIME),"not a supported NIST prime"}, |
210 {ERR_REASON(EC_R_NOT_IMPLEMENTED) ,"not implemented"}, | 228 {ERR_REASON(EC_R_NOT_IMPLEMENTED) ,"not implemented"}, |
211 {ERR_REASON(EC_R_NOT_INITIALIZED) ,"not initialized"}, | 229 {ERR_REASON(EC_R_NOT_INITIALIZED) ,"not initialized"}, |
212 {ERR_REASON(EC_R_NO_FIELD_MOD) ,"no field mod"}, | 230 {ERR_REASON(EC_R_NO_FIELD_MOD) ,"no field mod"}, |
| 231 {ERR_REASON(EC_R_NO_PARAMETERS_SET) ,"no parameters set"}, |
213 {ERR_REASON(EC_R_PASSED_NULL_PARAMETER) ,"passed null parameter"}, | 232 {ERR_REASON(EC_R_PASSED_NULL_PARAMETER) ,"passed null parameter"}, |
214 {ERR_REASON(EC_R_PKPARAMETERS2GROUP_FAILURE),"pkparameters2group failure"}, | 233 {ERR_REASON(EC_R_PKPARAMETERS2GROUP_FAILURE),"pkparameters2group failure"}, |
215 {ERR_REASON(EC_R_POINT_AT_INFINITY) ,"point at infinity"}, | 234 {ERR_REASON(EC_R_POINT_AT_INFINITY) ,"point at infinity"}, |
216 {ERR_REASON(EC_R_POINT_IS_NOT_ON_CURVE) ,"point is not on curve"}, | 235 {ERR_REASON(EC_R_POINT_IS_NOT_ON_CURVE) ,"point is not on curve"}, |
217 {ERR_REASON(EC_R_SLOT_FULL) ,"slot full"}, | 236 {ERR_REASON(EC_R_SLOT_FULL) ,"slot full"}, |
218 {ERR_REASON(EC_R_UNDEFINED_GENERATOR) ,"undefined generator"}, | 237 {ERR_REASON(EC_R_UNDEFINED_GENERATOR) ,"undefined generator"}, |
219 {ERR_REASON(EC_R_UNDEFINED_ORDER) ,"undefined order"}, | 238 {ERR_REASON(EC_R_UNDEFINED_ORDER) ,"undefined order"}, |
220 {ERR_REASON(EC_R_UNKNOWN_GROUP) ,"unknown group"}, | 239 {ERR_REASON(EC_R_UNKNOWN_GROUP) ,"unknown group"}, |
221 {ERR_REASON(EC_R_UNKNOWN_ORDER) ,"unknown order"}, | 240 {ERR_REASON(EC_R_UNKNOWN_ORDER) ,"unknown order"}, |
222 {ERR_REASON(EC_R_UNSUPPORTED_FIELD) ,"unsupported field"}, | 241 {ERR_REASON(EC_R_UNSUPPORTED_FIELD) ,"unsupported field"}, |
223 {ERR_REASON(EC_R_WRONG_ORDER) ,"wrong order"}, | 242 {ERR_REASON(EC_R_WRONG_ORDER) ,"wrong order"}, |
224 {0,NULL} | 243 {0,NULL} |
225 }; | 244 }; |
226 | 245 |
227 #endif | 246 #endif |
228 | 247 |
229 void ERR_load_EC_strings(void) | 248 void ERR_load_EC_strings(void) |
230 { | 249 { |
231 #ifndef OPENSSL_NO_ERR | 250 #ifndef OPENSSL_NO_ERR |
232 | 251 |
233 if (ERR_func_error_string(EC_str_functs[0].error) == NULL) | 252 if (ERR_func_error_string(EC_str_functs[0].error) == NULL) |
234 { | 253 { |
235 ERR_load_strings(0,EC_str_functs); | 254 ERR_load_strings(0,EC_str_functs); |
236 ERR_load_strings(0,EC_str_reasons); | 255 ERR_load_strings(0,EC_str_reasons); |
237 } | 256 } |
238 #endif | 257 #endif |
239 } | 258 } |
OLD | NEW |