1 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
---|
2 | /* ***** BEGIN LICENSE BLOCK *****
|
---|
3 | * Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
---|
4 | *
|
---|
5 | * The contents of this file are subject to the Mozilla Public License Version
|
---|
6 | * 1.1 (the "License"); you may not use this file except in compliance with
|
---|
7 | * the License. You may obtain a copy of the License at
|
---|
8 | * http://www.mozilla.org/MPL/
|
---|
9 | *
|
---|
10 | * Software distributed under the License is distributed on an "AS IS" basis,
|
---|
11 | * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
---|
12 | * for the specific language governing rights and limitations under the
|
---|
13 | * License.
|
---|
14 | *
|
---|
15 | * The Original Code is the Netscape Portable Runtime (NSPR).
|
---|
16 | *
|
---|
17 | * The Initial Developer of the Original Code is
|
---|
18 | * Netscape Communications Corporation.
|
---|
19 | * Portions created by the Initial Developer are Copyright (C) 1998-2000
|
---|
20 | * the Initial Developer. All Rights Reserved.
|
---|
21 | *
|
---|
22 | * Contributor(s):
|
---|
23 | *
|
---|
24 | * Alternatively, the contents of this file may be used under the terms of
|
---|
25 | * either the GNU General Public License Version 2 or later (the "GPL"), or
|
---|
26 | * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
---|
27 | * in which case the provisions of the GPL or the LGPL are applicable instead
|
---|
28 | * of those above. If you wish to allow use of your version of this file only
|
---|
29 | * under the terms of either the GPL or the LGPL, and not to allow others to
|
---|
30 | * use your version of this file under the terms of the MPL, indicate your
|
---|
31 | * decision by deleting the provisions above and replace them with the notice
|
---|
32 | * and other provisions required by the GPL or the LGPL. If you do not delete
|
---|
33 | * the provisions above, a recipient may use your version of this file under
|
---|
34 | * the terms of any one of the MPL, the GPL or the LGPL.
|
---|
35 | *
|
---|
36 | * ***** END LICENSE BLOCK ***** */
|
---|
37 |
|
---|
38 | #include "plbase64.h"
|
---|
39 | #include "plstr.h"
|
---|
40 | #include "nspr.h"
|
---|
41 |
|
---|
42 | #include <stdio.h>
|
---|
43 |
|
---|
44 | static unsigned char *base = (unsigned char *)"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
---|
45 |
|
---|
46 | /* PL_Base64Encode, single characters */
|
---|
47 | PRBool test_001(void)
|
---|
48 | {
|
---|
49 | PRUint32 a, b;
|
---|
50 | unsigned char plain[ 4 ];
|
---|
51 | unsigned char cypher[ 5 ];
|
---|
52 | char result[ 8 ];
|
---|
53 | char *rv;
|
---|
54 |
|
---|
55 | printf("Test 001 (PL_Base64Encode, single characters) ..."); fflush(stdout);
|
---|
56 |
|
---|
57 | plain[1] = plain[2] = plain[3] = (unsigned char)0;
|
---|
58 | cypher[2] = cypher[3] = (unsigned char)'=';
|
---|
59 | cypher[4] = (unsigned char)0;
|
---|
60 |
|
---|
61 | for( a = 0; a < 64; a++ )
|
---|
62 | {
|
---|
63 | cypher[0] = base[a];
|
---|
64 |
|
---|
65 | for( b = 0; b < 4; b++ )
|
---|
66 | {
|
---|
67 | plain[0] = (unsigned char)(a * 4 + b);
|
---|
68 | cypher[1] = base[(b * 16)];
|
---|
69 |
|
---|
70 | rv = PL_Base64Encode((char *)plain, 1, result);
|
---|
71 | if( rv != result )
|
---|
72 | {
|
---|
73 | printf("FAIL\n\t(%d, %d): return value\n", a, b);
|
---|
74 | return PR_FALSE;
|
---|
75 | }
|
---|
76 |
|
---|
77 | if( 0 != PL_strncmp((char *)cypher, result, 4) )
|
---|
78 | {
|
---|
79 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.4s.\"\n",
|
---|
80 | a, b, cypher, result);
|
---|
81 | return PR_FALSE;
|
---|
82 | }
|
---|
83 | }
|
---|
84 | }
|
---|
85 |
|
---|
86 | printf("PASS\n");
|
---|
87 | return PR_TRUE;
|
---|
88 | }
|
---|
89 |
|
---|
90 | /* PL_Base64Encode, double characters */
|
---|
91 | PRBool test_002(void)
|
---|
92 | {
|
---|
93 | PRUint32 a, b, c, d;
|
---|
94 | unsigned char plain[ 4 ];
|
---|
95 | unsigned char cypher[ 5 ];
|
---|
96 | char result[ 8 ];
|
---|
97 | char *rv;
|
---|
98 |
|
---|
99 | printf("Test 002 (PL_Base64Encode, double characters) ..."); fflush(stdout);
|
---|
100 |
|
---|
101 | plain[2] = plain[3] = (unsigned char)0;
|
---|
102 | cypher[3] = (unsigned char)'=';
|
---|
103 | cypher[4] = (unsigned char)0;
|
---|
104 |
|
---|
105 | for( a = 0; a < 64; a++ )
|
---|
106 | {
|
---|
107 | cypher[0] = base[a];
|
---|
108 | for( b = 0; b < 4; b++ )
|
---|
109 | {
|
---|
110 | plain[0] = (a*4) + b;
|
---|
111 | for( c = 0; c < 16; c++ )
|
---|
112 | {
|
---|
113 | cypher[1] = base[b*16 + c];
|
---|
114 | for( d = 0; d < 16; d++ )
|
---|
115 | {
|
---|
116 | plain[1] = c*16 + d;
|
---|
117 | cypher[2] = base[d*4];
|
---|
118 |
|
---|
119 | rv = PL_Base64Encode((char *)plain, 2, result);
|
---|
120 | if( rv != result )
|
---|
121 | {
|
---|
122 | printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d);
|
---|
123 | return PR_FALSE;
|
---|
124 | }
|
---|
125 |
|
---|
126 | if( 0 != PL_strncmp((char *)cypher, result, 4) )
|
---|
127 | {
|
---|
128 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n",
|
---|
129 | a, b, c, d, cypher, result);
|
---|
130 | return PR_FALSE;
|
---|
131 | }
|
---|
132 | }
|
---|
133 | }
|
---|
134 | }
|
---|
135 | }
|
---|
136 |
|
---|
137 | printf("PASS\n");
|
---|
138 | return PR_TRUE;
|
---|
139 | }
|
---|
140 |
|
---|
141 | /* PL_Base64Encode, triple characters */
|
---|
142 | PRBool test_003(void)
|
---|
143 | {
|
---|
144 | PRUint32 a, b, c, d, e, f;
|
---|
145 | unsigned char plain[ 4 ];
|
---|
146 | unsigned char cypher[ 5 ];
|
---|
147 | char result[ 8 ];
|
---|
148 | char *rv;
|
---|
149 |
|
---|
150 | printf("Test 003 (PL_Base64Encode, triple characters) ..."); fflush(stdout);
|
---|
151 |
|
---|
152 | cypher[4] = (unsigned char)0;
|
---|
153 |
|
---|
154 | for( a = 0; a < 64; a++ )
|
---|
155 | {
|
---|
156 | cypher[0] = base[a];
|
---|
157 | for( b = 0; b < 4; b++ )
|
---|
158 | {
|
---|
159 | plain[0] = (a*4) + b;
|
---|
160 | for( c = 0; c < 16; c++ )
|
---|
161 | {
|
---|
162 | cypher[1] = base[b*16 + c];
|
---|
163 | for( d = 0; d < 16; d++ )
|
---|
164 | {
|
---|
165 | plain[1] = c*16 + d;
|
---|
166 | for( e = 0; e < 4; e++ )
|
---|
167 | {
|
---|
168 | cypher[2] = base[d*4 + e];
|
---|
169 | for( f = 0; f < 64; f++ )
|
---|
170 | {
|
---|
171 | plain[2] = e * 64 + f;
|
---|
172 | cypher[3] = base[f];
|
---|
173 |
|
---|
174 | rv = PL_Base64Encode((char *)plain, 3, result);
|
---|
175 | if( rv != result )
|
---|
176 | {
|
---|
177 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): return value\n", a, b, c, d, e, f);
|
---|
178 | return PR_FALSE;
|
---|
179 | }
|
---|
180 |
|
---|
181 | if( 0 != PL_strncmp((char *)cypher, result, 4) )
|
---|
182 | {
|
---|
183 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n",
|
---|
184 | a, b, c, d, e, f, cypher, result);
|
---|
185 | return PR_FALSE;
|
---|
186 | }
|
---|
187 | }
|
---|
188 | }
|
---|
189 | }
|
---|
190 | }
|
---|
191 | }
|
---|
192 | }
|
---|
193 |
|
---|
194 | printf("PASS\n");
|
---|
195 | return PR_TRUE;
|
---|
196 | }
|
---|
197 |
|
---|
198 | static struct
|
---|
199 | {
|
---|
200 | const char *plaintext;
|
---|
201 | const char *cyphertext;
|
---|
202 | } array[] =
|
---|
203 | {
|
---|
204 | /* Cyphertexts generated with uuenview 0.5.13 */
|
---|
205 | { " ", "IA==" },
|
---|
206 | { ".", "Lg==" },
|
---|
207 | { "/", "Lw==" },
|
---|
208 | { "C", "Qw==" },
|
---|
209 | { "H", "SA==" },
|
---|
210 | { "S", "Uw==" },
|
---|
211 | { "^", "Xg==" },
|
---|
212 | { "a", "YQ==" },
|
---|
213 | { "o", "bw==" },
|
---|
214 | { "t", "dA==" },
|
---|
215 |
|
---|
216 | { "AB", "QUI=" },
|
---|
217 | { "AH", "QUg=" },
|
---|
218 | { "AQ", "QVE=" },
|
---|
219 | { "BD", "QkQ=" },
|
---|
220 | { "CR", "Q1I=" },
|
---|
221 | { "CS", "Q1M=" },
|
---|
222 | { "DB", "REI=" },
|
---|
223 | { "DC", "REM=" },
|
---|
224 | { "EK", "RUs=" },
|
---|
225 | { "ET", "RVQ=" },
|
---|
226 | { "IM", "SU0=" },
|
---|
227 | { "JR", "SlI=" },
|
---|
228 | { "LO", "TE8=" },
|
---|
229 | { "LW", "TFc=" },
|
---|
230 | { "ML", "TUw=" },
|
---|
231 | { "SB", "U0I=" },
|
---|
232 | { "TO", "VE8=" },
|
---|
233 | { "VS", "VlM=" },
|
---|
234 | { "WP", "V1A=" },
|
---|
235 | /* legitimate two-letter words */
|
---|
236 | { "ad", "YWQ=" },
|
---|
237 | { "ah", "YWg=" },
|
---|
238 | { "am", "YW0=" },
|
---|
239 | { "an", "YW4=" },
|
---|
240 | { "as", "YXM=" },
|
---|
241 | { "at", "YXQ=" },
|
---|
242 | { "ax", "YXg=" },
|
---|
243 | { "be", "YmU=" },
|
---|
244 | { "by", "Ynk=" },
|
---|
245 | { "do", "ZG8=" },
|
---|
246 | { "go", "Z28=" },
|
---|
247 | { "he", "aGU=" },
|
---|
248 | { "hi", "aGk=" },
|
---|
249 | { "if", "aWY=" },
|
---|
250 | { "in", "aW4=" },
|
---|
251 | { "is", "aXM=" },
|
---|
252 | { "it", "aXQ=" },
|
---|
253 | { "me", "bWU=" },
|
---|
254 | { "my", "bXk=" },
|
---|
255 | { "no", "bm8=" },
|
---|
256 | { "of", "b2Y=" },
|
---|
257 | { "on", "b24=" },
|
---|
258 | { "or", "b3I=" },
|
---|
259 | { "ox", "b3g=" },
|
---|
260 | { "so", "c28=" },
|
---|
261 | { "to", "dG8=" },
|
---|
262 | { "up", "dXA=" },
|
---|
263 | { "us", "dXM=" },
|
---|
264 | { "we", "d2U=" },
|
---|
265 | /* all three-letter entries in /usr/dict/words */
|
---|
266 | { "1st", "MXN0" },
|
---|
267 | { "2nd", "Mm5k" },
|
---|
268 | { "3rd", "M3Jk" },
|
---|
269 | { "4th", "NHRo" },
|
---|
270 | { "5th", "NXRo" },
|
---|
271 | { "6th", "NnRo" },
|
---|
272 | { "7th", "N3Ro" },
|
---|
273 | { "8th", "OHRo" },
|
---|
274 | { "9th", "OXRo" },
|
---|
275 | { "AAA", "QUFB" },
|
---|
276 | { "AAU", "QUFV" },
|
---|
277 | { "ABA", "QUJB" },
|
---|
278 | { "abc", "YWJj" },
|
---|
279 | { "Abe", "QWJl" },
|
---|
280 | { "Abo", "QWJv" },
|
---|
281 | { "ace", "YWNl" },
|
---|
282 | { "ACM", "QUNN" },
|
---|
283 | { "ACS", "QUNT" },
|
---|
284 | { "act", "YWN0" },
|
---|
285 | { "Ada", "QWRh" },
|
---|
286 | { "add", "YWRk" },
|
---|
287 | { "ado", "YWRv" },
|
---|
288 | { "aft", "YWZ0" },
|
---|
289 | { "age", "YWdl" },
|
---|
290 | { "ago", "YWdv" },
|
---|
291 | { "aid", "YWlk" },
|
---|
292 | { "ail", "YWls" },
|
---|
293 | { "aim", "YWlt" },
|
---|
294 | { "air", "YWly" },
|
---|
295 | { "ala", "YWxh" },
|
---|
296 | { "alb", "YWxi" },
|
---|
297 | { "ale", "YWxl" },
|
---|
298 | { "Ali", "QWxp" },
|
---|
299 | { "all", "YWxs" },
|
---|
300 | { "alp", "YWxw" },
|
---|
301 | { "A&M", "QSZN" },
|
---|
302 | { "AMA", "QU1B" },
|
---|
303 | { "ami", "YW1p" },
|
---|
304 | { "amp", "YW1w" },
|
---|
305 | { "Amy", "QW15" },
|
---|
306 | { "amy", "YW15" },
|
---|
307 | { "ana", "YW5h" },
|
---|
308 | { "and", "YW5k" },
|
---|
309 | { "ani", "YW5p" },
|
---|
310 | { "Ann", "QW5u" },
|
---|
311 | { "ant", "YW50" },
|
---|
312 | { "any", "YW55" },
|
---|
313 | { "A&P", "QSZQ" },
|
---|
314 | { "ape", "YXBl" },
|
---|
315 | { "Apr", "QXBy" },
|
---|
316 | { "APS", "QVBT" },
|
---|
317 | { "apt", "YXB0" },
|
---|
318 | { "arc", "YXJj" },
|
---|
319 | { "are", "YXJl" },
|
---|
320 | { "ark", "YXJr" },
|
---|
321 | { "arm", "YXJt" },
|
---|
322 | { "art", "YXJ0" },
|
---|
323 | { "a's", "YSdz" },
|
---|
324 | { "ash", "YXNo" },
|
---|
325 | { "ask", "YXNr" },
|
---|
326 | { "ass", "YXNz" },
|
---|
327 | { "ate", "YXRl" },
|
---|
328 | { "Aug", "QXVn" },
|
---|
329 | { "auk", "YXVr" },
|
---|
330 | { "Ave", "QXZl" },
|
---|
331 | { "awe", "YXdl" },
|
---|
332 | { "awl", "YXds" },
|
---|
333 | { "awn", "YXdu" },
|
---|
334 | { "axe", "YXhl" },
|
---|
335 | { "aye", "YXll" },
|
---|
336 | { "bad", "YmFk" },
|
---|
337 | { "bag", "YmFn" },
|
---|
338 | { "bah", "YmFo" },
|
---|
339 | { "bam", "YmFt" },
|
---|
340 | { "ban", "YmFu" },
|
---|
341 | { "bar", "YmFy" },
|
---|
342 | { "bat", "YmF0" },
|
---|
343 | { "bay", "YmF5" },
|
---|
344 | { "bed", "YmVk" },
|
---|
345 | { "bee", "YmVl" },
|
---|
346 | { "beg", "YmVn" },
|
---|
347 | { "bel", "YmVs" },
|
---|
348 | { "Ben", "QmVu" },
|
---|
349 | { "bet", "YmV0" },
|
---|
350 | { "bey", "YmV5" },
|
---|
351 | { "bib", "Ymli" },
|
---|
352 | { "bid", "Ymlk" },
|
---|
353 | { "big", "Ymln" },
|
---|
354 | { "bin", "Ymlu" },
|
---|
355 | { "bit", "Yml0" },
|
---|
356 | { "biz", "Yml6" },
|
---|
357 | { "BMW", "Qk1X" },
|
---|
358 | { "boa", "Ym9h" },
|
---|
359 | { "bob", "Ym9i" },
|
---|
360 | { "bog", "Ym9n" },
|
---|
361 | { "bon", "Ym9u" },
|
---|
362 | { "boo", "Ym9v" },
|
---|
363 | { "bop", "Ym9w" },
|
---|
364 | { "bow", "Ym93" },
|
---|
365 | { "box", "Ym94" },
|
---|
366 | { "boy", "Ym95" },
|
---|
367 | { "b's", "Yidz" },
|
---|
368 | { "BTL", "QlRM" },
|
---|
369 | { "BTU", "QlRV" },
|
---|
370 | { "bub", "YnVi" },
|
---|
371 | { "bud", "YnVk" },
|
---|
372 | { "bug", "YnVn" },
|
---|
373 | { "bum", "YnVt" },
|
---|
374 | { "bun", "YnVu" },
|
---|
375 | { "bus", "YnVz" },
|
---|
376 | { "but", "YnV0" },
|
---|
377 | { "buy", "YnV5" },
|
---|
378 | { "bye", "Ynll" },
|
---|
379 | { "cab", "Y2Fi" },
|
---|
380 | { "Cal", "Q2Fs" },
|
---|
381 | { "cam", "Y2Ft" },
|
---|
382 | { "can", "Y2Fu" },
|
---|
383 | { "cap", "Y2Fw" },
|
---|
384 | { "car", "Y2Fy" },
|
---|
385 | { "cat", "Y2F0" },
|
---|
386 | { "caw", "Y2F3" },
|
---|
387 | { "CBS", "Q0JT" },
|
---|
388 | { "CDC", "Q0RD" },
|
---|
389 | { "CEQ", "Q0VR" },
|
---|
390 | { "chi", "Y2hp" },
|
---|
391 | { "CIA", "Q0lB" },
|
---|
392 | { "cit", "Y2l0" },
|
---|
393 | { "cod", "Y29k" },
|
---|
394 | { "cog", "Y29n" },
|
---|
395 | { "col", "Y29s" },
|
---|
396 | { "con", "Y29u" },
|
---|
397 | { "coo", "Y29v" },
|
---|
398 | { "cop", "Y29w" },
|
---|
399 | { "cos", "Y29z" },
|
---|
400 | { "cot", "Y290" },
|
---|
401 | { "cow", "Y293" },
|
---|
402 | { "cox", "Y294" },
|
---|
403 | { "coy", "Y295" },
|
---|
404 | { "CPA", "Q1BB" },
|
---|
405 | { "cpu", "Y3B1" },
|
---|
406 | { "CRT", "Q1JU" },
|
---|
407 | { "cry", "Y3J5" },
|
---|
408 | { "c's", "Yydz" },
|
---|
409 | { "cub", "Y3Vi" },
|
---|
410 | { "cud", "Y3Vk" },
|
---|
411 | { "cue", "Y3Vl" },
|
---|
412 | { "cup", "Y3Vw" },
|
---|
413 | { "cur", "Y3Vy" },
|
---|
414 | { "cut", "Y3V0" },
|
---|
415 | { "dab", "ZGFi" },
|
---|
416 | { "dad", "ZGFk" },
|
---|
417 | { "dam", "ZGFt" },
|
---|
418 | { "Dan", "RGFu" },
|
---|
419 | { "Dar", "RGFy" },
|
---|
420 | { "day", "ZGF5" },
|
---|
421 | { "Dec", "RGVj" },
|
---|
422 | { "Dee", "RGVl" },
|
---|
423 | { "Del", "RGVs" },
|
---|
424 | { "den", "ZGVu" },
|
---|
425 | { "Des", "RGVz" },
|
---|
426 | { "dew", "ZGV3" },
|
---|
427 | { "dey", "ZGV5" },
|
---|
428 | { "did", "ZGlk" },
|
---|
429 | { "die", "ZGll" },
|
---|
430 | { "dig", "ZGln" },
|
---|
431 | { "dim", "ZGlt" },
|
---|
432 | { "din", "ZGlu" },
|
---|
433 | { "dip", "ZGlw" },
|
---|
434 | { "Dis", "RGlz" },
|
---|
435 | { "DNA", "RE5B" },
|
---|
436 | { "DOD", "RE9E" },
|
---|
437 | { "doe", "ZG9l" },
|
---|
438 | { "dog", "ZG9n" },
|
---|
439 | { "don", "ZG9u" },
|
---|
440 | { "dot", "ZG90" },
|
---|
441 | { "Dow", "RG93" },
|
---|
442 | { "dry", "ZHJ5" },
|
---|
443 | { "d's", "ZCdz" },
|
---|
444 | { "dub", "ZHVi" },
|
---|
445 | { "dud", "ZHVk" },
|
---|
446 | { "due", "ZHVl" },
|
---|
447 | { "dug", "ZHVn" },
|
---|
448 | { "dun", "ZHVu" },
|
---|
449 | { "dye", "ZHll" },
|
---|
450 | { "ear", "ZWFy" },
|
---|
451 | { "eat", "ZWF0" },
|
---|
452 | { "ebb", "ZWJi" },
|
---|
453 | { "EDT", "RURU" },
|
---|
454 | { "eel", "ZWVs" },
|
---|
455 | { "eft", "ZWZ0" },
|
---|
456 | { "e.g", "ZS5n" },
|
---|
457 | { "egg", "ZWdn" },
|
---|
458 | { "ego", "ZWdv" },
|
---|
459 | { "eke", "ZWtl" },
|
---|
460 | { "Eli", "RWxp" },
|
---|
461 | { "elk", "ZWxr" },
|
---|
462 | { "ell", "ZWxs" },
|
---|
463 | { "elm", "ZWxt" },
|
---|
464 | { "Ely", "RWx5" },
|
---|
465 | { "end", "ZW5k" },
|
---|
466 | { "Eng", "RW5n" },
|
---|
467 | { "EPA", "RVBB" },
|
---|
468 | { "era", "ZXJh" },
|
---|
469 | { "ere", "ZXJl" },
|
---|
470 | { "erg", "ZXJn" },
|
---|
471 | { "err", "ZXJy" },
|
---|
472 | { "e's", "ZSdz" },
|
---|
473 | { "EST", "RVNU" },
|
---|
474 | { "eta", "ZXRh" },
|
---|
475 | { "etc", "ZXRj" },
|
---|
476 | { "Eva", "RXZh" },
|
---|
477 | { "eve", "ZXZl" },
|
---|
478 | { "ewe", "ZXdl" },
|
---|
479 | { "eye", "ZXll" },
|
---|
480 | { "FAA", "RkFB" },
|
---|
481 | { "fad", "ZmFk" },
|
---|
482 | { "fag", "ZmFn" },
|
---|
483 | { "fan", "ZmFu" },
|
---|
484 | { "far", "ZmFy" },
|
---|
485 | { "fat", "ZmF0" },
|
---|
486 | { "fay", "ZmF5" },
|
---|
487 | { "FBI", "RkJJ" },
|
---|
488 | { "FCC", "RkND" },
|
---|
489 | { "FDA", "RkRB" },
|
---|
490 | { "Feb", "RmVi" },
|
---|
491 | { "fed", "ZmVk" },
|
---|
492 | { "fee", "ZmVl" },
|
---|
493 | { "few", "ZmV3" },
|
---|
494 | { "fib", "Zmli" },
|
---|
495 | { "fig", "Zmln" },
|
---|
496 | { "fin", "Zmlu" },
|
---|
497 | { "fir", "Zmly" },
|
---|
498 | { "fit", "Zml0" },
|
---|
499 | { "fix", "Zml4" },
|
---|
500 | { "Flo", "Rmxv" },
|
---|
501 | { "flu", "Zmx1" },
|
---|
502 | { "fly", "Zmx5" },
|
---|
503 | { "FMC", "Rk1D" },
|
---|
504 | { "fob", "Zm9i" },
|
---|
505 | { "foe", "Zm9l" },
|
---|
506 | { "fog", "Zm9n" },
|
---|
507 | { "fop", "Zm9w" },
|
---|
508 | { "for", "Zm9y" },
|
---|
509 | { "fox", "Zm94" },
|
---|
510 | { "FPC", "RlBD" },
|
---|
511 | { "fro", "ZnJv" },
|
---|
512 | { "fry", "ZnJ5" },
|
---|
513 | { "f's", "Zidz" },
|
---|
514 | { "FTC", "RlRD" },
|
---|
515 | { "fum", "ZnVt" },
|
---|
516 | { "fun", "ZnVu" },
|
---|
517 | { "fur", "ZnVy" },
|
---|
518 | { "gab", "Z2Fi" },
|
---|
519 | { "gad", "Z2Fk" },
|
---|
520 | { "gag", "Z2Fn" },
|
---|
521 | { "gal", "Z2Fs" },
|
---|
522 | { "gam", "Z2Ft" },
|
---|
523 | { "GAO", "R0FP" },
|
---|
524 | { "gap", "Z2Fw" },
|
---|
525 | { "gar", "Z2Fy" },
|
---|
526 | { "gas", "Z2Fz" },
|
---|
527 | { "gay", "Z2F5" },
|
---|
528 | { "gee", "Z2Vl" },
|
---|
529 | { "gel", "Z2Vs" },
|
---|
530 | { "gem", "Z2Vt" },
|
---|
531 | { "get", "Z2V0" },
|
---|
532 | { "gig", "Z2ln" },
|
---|
533 | { "Gil", "R2ls" },
|
---|
534 | { "gin", "Z2lu" },
|
---|
535 | { "GMT", "R01U" },
|
---|
536 | { "GNP", "R05Q" },
|
---|
537 | { "gnu", "Z251" },
|
---|
538 | { "Goa", "R29h" },
|
---|
539 | { "gob", "Z29i" },
|
---|
540 | { "god", "Z29k" },
|
---|
541 | { "gog", "Z29n" },
|
---|
542 | { "GOP", "R09Q" },
|
---|
543 | { "got", "Z290" },
|
---|
544 | { "GPO", "R1BP" },
|
---|
545 | { "g's", "Zydz" },
|
---|
546 | { "GSA", "R1NB" },
|
---|
547 | { "gum", "Z3Vt" },
|
---|
548 | { "gun", "Z3Vu" },
|
---|
549 | { "Gus", "R3Vz" },
|
---|
550 | { "gut", "Z3V0" },
|
---|
551 | { "guy", "Z3V5" },
|
---|
552 | { "gym", "Z3lt" },
|
---|
553 | { "gyp", "Z3lw" },
|
---|
554 | { "had", "aGFk" },
|
---|
555 | { "Hal", "SGFs" },
|
---|
556 | { "ham", "aGFt" },
|
---|
557 | { "Han", "SGFu" },
|
---|
558 | { "hap", "aGFw" },
|
---|
559 | { "hat", "aGF0" },
|
---|
560 | { "haw", "aGF3" },
|
---|
561 | { "hay", "aGF5" },
|
---|
562 | { "hem", "aGVt" },
|
---|
563 | { "hen", "aGVu" },
|
---|
564 | { "her", "aGVy" },
|
---|
565 | { "hew", "aGV3" },
|
---|
566 | { "hex", "aGV4" },
|
---|
567 | { "hey", "aGV5" },
|
---|
568 | { "hid", "aGlk" },
|
---|
569 | { "him", "aGlt" },
|
---|
570 | { "hip", "aGlw" },
|
---|
571 | { "his", "aGlz" },
|
---|
572 | { "hit", "aGl0" },
|
---|
573 | { "hob", "aG9i" },
|
---|
574 | { "hoc", "aG9j" },
|
---|
575 | { "hoe", "aG9l" },
|
---|
576 | { "hog", "aG9n" },
|
---|
577 | { "hoi", "aG9p" },
|
---|
578 | { "Hom", "SG9t" },
|
---|
579 | { "hop", "aG9w" },
|
---|
580 | { "hot", "aG90" },
|
---|
581 | { "how", "aG93" },
|
---|
582 | { "hoy", "aG95" },
|
---|
583 | { "h's", "aCdz" },
|
---|
584 | { "hub", "aHVi" },
|
---|
585 | { "hue", "aHVl" },
|
---|
586 | { "hug", "aHVn" },
|
---|
587 | { "huh", "aHVo" },
|
---|
588 | { "hum", "aHVt" },
|
---|
589 | { "Hun", "SHVu" },
|
---|
590 | { "hut", "aHV0" },
|
---|
591 | { "Ian", "SWFu" },
|
---|
592 | { "IBM", "SUJN" },
|
---|
593 | { "Ibn", "SWJu" },
|
---|
594 | { "ICC", "SUND" },
|
---|
595 | { "ice", "aWNl" },
|
---|
596 | { "icy", "aWN5" },
|
---|
597 | { "I'd", "SSdk" },
|
---|
598 | { "Ida", "SWRh" },
|
---|
599 | { "i.e", "aS5l" },
|
---|
600 | { "iii", "aWlp" },
|
---|
601 | { "Ike", "SWtl" },
|
---|
602 | { "ill", "aWxs" },
|
---|
603 | { "I'm", "SSdt" },
|
---|
604 | { "imp", "aW1w" },
|
---|
605 | { "Inc", "SW5j" },
|
---|
606 | { "ink", "aW5r" },
|
---|
607 | { "inn", "aW5u" },
|
---|
608 | { "ion", "aW9u" },
|
---|
609 | { "Ira", "SXJh" },
|
---|
610 | { "ire", "aXJl" },
|
---|
611 | { "irk", "aXJr" },
|
---|
612 | { "IRS", "SVJT" },
|
---|
613 | { "i's", "aSdz" },
|
---|
614 | { "Ito", "SXRv" },
|
---|
615 | { "ITT", "SVRU" },
|
---|
616 | { "ivy", "aXZ5" },
|
---|
617 | { "jab", "amFi" },
|
---|
618 | { "jag", "amFn" },
|
---|
619 | { "jam", "amFt" },
|
---|
620 | { "Jan", "SmFu" },
|
---|
621 | { "jar", "amFy" },
|
---|
622 | { "jaw", "amF3" },
|
---|
623 | { "jay", "amF5" },
|
---|
624 | { "Jed", "SmVk" },
|
---|
625 | { "jet", "amV0" },
|
---|
626 | { "Jew", "SmV3" },
|
---|
627 | { "jig", "amln" },
|
---|
628 | { "Jim", "Smlt" },
|
---|
629 | { "job", "am9i" },
|
---|
630 | { "Joe", "Sm9l" },
|
---|
631 | { "jog", "am9n" },
|
---|
632 | { "Jon", "Sm9u" },
|
---|
633 | { "jot", "am90" },
|
---|
634 | { "joy", "am95" },
|
---|
635 | { "j's", "aidz" },
|
---|
636 | { "jug", "anVn" },
|
---|
637 | { "jut", "anV0" },
|
---|
638 | { "Kay", "S2F5" },
|
---|
639 | { "keg", "a2Vn" },
|
---|
640 | { "ken", "a2Vu" },
|
---|
641 | { "key", "a2V5" },
|
---|
642 | { "kid", "a2lk" },
|
---|
643 | { "Kim", "S2lt" },
|
---|
644 | { "kin", "a2lu" },
|
---|
645 | { "kit", "a2l0" },
|
---|
646 | { "k's", "aydz" },
|
---|
647 | { "lab", "bGFi" },
|
---|
648 | { "lac", "bGFj" },
|
---|
649 | { "lad", "bGFk" },
|
---|
650 | { "lag", "bGFn" },
|
---|
651 | { "lam", "bGFt" },
|
---|
652 | { "Lao", "TGFv" },
|
---|
653 | { "lap", "bGFw" },
|
---|
654 | { "law", "bGF3" },
|
---|
655 | { "lax", "bGF4" },
|
---|
656 | { "lay", "bGF5" },
|
---|
657 | { "lea", "bGVh" },
|
---|
658 | { "led", "bGVk" },
|
---|
659 | { "lee", "bGVl" },
|
---|
660 | { "leg", "bGVn" },
|
---|
661 | { "Len", "TGVu" },
|
---|
662 | { "Leo", "TGVv" },
|
---|
663 | { "let", "bGV0" },
|
---|
664 | { "Lev", "TGV2" },
|
---|
665 | { "Lew", "TGV3" },
|
---|
666 | { "lew", "bGV3" },
|
---|
667 | { "lid", "bGlk" },
|
---|
668 | { "lie", "bGll" },
|
---|
669 | { "lim", "bGlt" },
|
---|
670 | { "Lin", "TGlu" },
|
---|
671 | { "lip", "bGlw" },
|
---|
672 | { "lit", "bGl0" },
|
---|
673 | { "Liz", "TGl6" },
|
---|
674 | { "lob", "bG9i" },
|
---|
675 | { "log", "bG9n" },
|
---|
676 | { "lop", "bG9w" },
|
---|
677 | { "Los", "TG9z" },
|
---|
678 | { "lot", "bG90" },
|
---|
679 | { "Lou", "TG91" },
|
---|
680 | { "low", "bG93" },
|
---|
681 | { "loy", "bG95" },
|
---|
682 | { "l's", "bCdz" },
|
---|
683 | { "LSI", "TFNJ" },
|
---|
684 | { "Ltd", "THRk" },
|
---|
685 | { "LTV", "TFRW" },
|
---|
686 | { "lug", "bHVn" },
|
---|
687 | { "lux", "bHV4" },
|
---|
688 | { "lye", "bHll" },
|
---|
689 | { "Mac", "TWFj" },
|
---|
690 | { "mad", "bWFk" },
|
---|
691 | { "Mae", "TWFl" },
|
---|
692 | { "man", "bWFu" },
|
---|
693 | { "Mao", "TWFv" },
|
---|
694 | { "map", "bWFw" },
|
---|
695 | { "mar", "bWFy" },
|
---|
696 | { "mat", "bWF0" },
|
---|
697 | { "maw", "bWF3" },
|
---|
698 | { "Max", "TWF4" },
|
---|
699 | { "max", "bWF4" },
|
---|
700 | { "may", "bWF5" },
|
---|
701 | { "MBA", "TUJB" },
|
---|
702 | { "Meg", "TWVn" },
|
---|
703 | { "Mel", "TWVs" },
|
---|
704 | { "men", "bWVu" },
|
---|
705 | { "met", "bWV0" },
|
---|
706 | { "mew", "bWV3" },
|
---|
707 | { "mid", "bWlk" },
|
---|
708 | { "mig", "bWln" },
|
---|
709 | { "min", "bWlu" },
|
---|
710 | { "MIT", "TUlU" },
|
---|
711 | { "mix", "bWl4" },
|
---|
712 | { "mob", "bW9i" },
|
---|
713 | { "Moe", "TW9l" },
|
---|
714 | { "moo", "bW9v" },
|
---|
715 | { "mop", "bW9w" },
|
---|
716 | { "mot", "bW90" },
|
---|
717 | { "mow", "bW93" },
|
---|
718 | { "MPH", "TVBI" },
|
---|
719 | { "Mrs", "TXJz" },
|
---|
720 | { "m's", "bSdz" },
|
---|
721 | { "mud", "bXVk" },
|
---|
722 | { "mug", "bXVn" },
|
---|
723 | { "mum", "bXVt" },
|
---|
724 | { "nab", "bmFi" },
|
---|
725 | { "nag", "bmFn" },
|
---|
726 | { "Nan", "TmFu" },
|
---|
727 | { "nap", "bmFw" },
|
---|
728 | { "Nat", "TmF0" },
|
---|
729 | { "nay", "bmF5" },
|
---|
730 | { "NBC", "TkJD" },
|
---|
731 | { "NBS", "TkJT" },
|
---|
732 | { "NCO", "TkNP" },
|
---|
733 | { "NCR", "TkNS" },
|
---|
734 | { "Ned", "TmVk" },
|
---|
735 | { "nee", "bmVl" },
|
---|
736 | { "net", "bmV0" },
|
---|
737 | { "new", "bmV3" },
|
---|
738 | { "nib", "bmli" },
|
---|
739 | { "NIH", "TklI" },
|
---|
740 | { "nil", "bmls" },
|
---|
741 | { "nip", "bmlw" },
|
---|
742 | { "nit", "bml0" },
|
---|
743 | { "NNE", "Tk5F" },
|
---|
744 | { "NNW", "Tk5X" },
|
---|
745 | { "nob", "bm9i" },
|
---|
746 | { "nod", "bm9k" },
|
---|
747 | { "non", "bm9u" },
|
---|
748 | { "nor", "bm9y" },
|
---|
749 | { "not", "bm90" },
|
---|
750 | { "Nov", "Tm92" },
|
---|
751 | { "now", "bm93" },
|
---|
752 | { "NRC", "TlJD" },
|
---|
753 | { "n's", "bidz" },
|
---|
754 | { "NSF", "TlNG" },
|
---|
755 | { "nun", "bnVu" },
|
---|
756 | { "nut", "bnV0" },
|
---|
757 | { "NYC", "TllD" },
|
---|
758 | { "NYU", "TllV" },
|
---|
759 | { "oaf", "b2Fm" },
|
---|
760 | { "oak", "b2Fr" },
|
---|
761 | { "oar", "b2Fy" },
|
---|
762 | { "oat", "b2F0" },
|
---|
763 | { "Oct", "T2N0" },
|
---|
764 | { "odd", "b2Rk" },
|
---|
765 | { "ode", "b2Rl" },
|
---|
766 | { "off", "b2Zm" },
|
---|
767 | { "oft", "b2Z0" },
|
---|
768 | { "ohm", "b2ht" },
|
---|
769 | { "oil", "b2ls" },
|
---|
770 | { "old", "b2xk" },
|
---|
771 | { "one", "b25l" },
|
---|
772 | { "opt", "b3B0" },
|
---|
773 | { "orb", "b3Ji" },
|
---|
774 | { "ore", "b3Jl" },
|
---|
775 | { "Orr", "T3Jy" },
|
---|
776 | { "o's", "bydz" },
|
---|
777 | { "Ott", "T3R0" },
|
---|
778 | { "our", "b3Vy" },
|
---|
779 | { "out", "b3V0" },
|
---|
780 | { "ova", "b3Zh" },
|
---|
781 | { "owe", "b3dl" },
|
---|
782 | { "owl", "b3ds" },
|
---|
783 | { "own", "b3du" },
|
---|
784 | { "pad", "cGFk" },
|
---|
785 | { "pal", "cGFs" },
|
---|
786 | { "Pam", "UGFt" },
|
---|
787 | { "pan", "cGFu" },
|
---|
788 | { "pap", "cGFw" },
|
---|
789 | { "par", "cGFy" },
|
---|
790 | { "pat", "cGF0" },
|
---|
791 | { "paw", "cGF3" },
|
---|
792 | { "pax", "cGF4" },
|
---|
793 | { "pay", "cGF5" },
|
---|
794 | { "Paz", "UGF6" },
|
---|
795 | { "PBS", "UEJT" },
|
---|
796 | { "PDP", "UERQ" },
|
---|
797 | { "pea", "cGVh" },
|
---|
798 | { "pee", "cGVl" },
|
---|
799 | { "peg", "cGVn" },
|
---|
800 | { "pen", "cGVu" },
|
---|
801 | { "pep", "cGVw" },
|
---|
802 | { "per", "cGVy" },
|
---|
803 | { "pet", "cGV0" },
|
---|
804 | { "pew", "cGV3" },
|
---|
805 | { "PhD", "UGhE" },
|
---|
806 | { "phi", "cGhp" },
|
---|
807 | { "pie", "cGll" },
|
---|
808 | { "pig", "cGln" },
|
---|
809 | { "pin", "cGlu" },
|
---|
810 | { "pip", "cGlw" },
|
---|
811 | { "pit", "cGl0" },
|
---|
812 | { "ply", "cGx5" },
|
---|
813 | { "pod", "cG9k" },
|
---|
814 | { "Poe", "UG9l" },
|
---|
815 | { "poi", "cG9p" },
|
---|
816 | { "pol", "cG9s" },
|
---|
817 | { "pop", "cG9w" },
|
---|
818 | { "pot", "cG90" },
|
---|
819 | { "pow", "cG93" },
|
---|
820 | { "ppm", "cHBt" },
|
---|
821 | { "pro", "cHJv" },
|
---|
822 | { "pry", "cHJ5" },
|
---|
823 | { "p's", "cCdz" },
|
---|
824 | { "psi", "cHNp" },
|
---|
825 | { "PTA", "UFRB" },
|
---|
826 | { "pub", "cHVi" },
|
---|
827 | { "PUC", "UFVD" },
|
---|
828 | { "pug", "cHVn" },
|
---|
829 | { "pun", "cHVu" },
|
---|
830 | { "pup", "cHVw" },
|
---|
831 | { "pus", "cHVz" },
|
---|
832 | { "put", "cHV0" },
|
---|
833 | { "PVC", "UFZD" },
|
---|
834 | { "QED", "UUVE" },
|
---|
835 | { "q's", "cSdz" },
|
---|
836 | { "qua", "cXVh" },
|
---|
837 | { "quo", "cXVv" },
|
---|
838 | { "Rae", "UmFl" },
|
---|
839 | { "rag", "cmFn" },
|
---|
840 | { "raj", "cmFq" },
|
---|
841 | { "ram", "cmFt" },
|
---|
842 | { "ran", "cmFu" },
|
---|
843 | { "rap", "cmFw" },
|
---|
844 | { "rat", "cmF0" },
|
---|
845 | { "raw", "cmF3" },
|
---|
846 | { "ray", "cmF5" },
|
---|
847 | { "RCA", "UkNB" },
|
---|
848 | { "R&D", "UiZE" },
|
---|
849 | { "reb", "cmVi" },
|
---|
850 | { "red", "cmVk" },
|
---|
851 | { "rep", "cmVw" },
|
---|
852 | { "ret", "cmV0" },
|
---|
853 | { "rev", "cmV2" },
|
---|
854 | { "Rex", "UmV4" },
|
---|
855 | { "rho", "cmhv" },
|
---|
856 | { "rib", "cmli" },
|
---|
857 | { "rid", "cmlk" },
|
---|
858 | { "rig", "cmln" },
|
---|
859 | { "rim", "cmlt" },
|
---|
860 | { "Rio", "Umlv" },
|
---|
861 | { "rip", "cmlw" },
|
---|
862 | { "RNA", "Uk5B" },
|
---|
863 | { "rob", "cm9i" },
|
---|
864 | { "rod", "cm9k" },
|
---|
865 | { "roe", "cm9l" },
|
---|
866 | { "Ron", "Um9u" },
|
---|
867 | { "rot", "cm90" },
|
---|
868 | { "row", "cm93" },
|
---|
869 | { "Roy", "Um95" },
|
---|
870 | { "RPM", "UlBN" },
|
---|
871 | { "r's", "cidz" },
|
---|
872 | { "rub", "cnVi" },
|
---|
873 | { "rue", "cnVl" },
|
---|
874 | { "rug", "cnVn" },
|
---|
875 | { "rum", "cnVt" },
|
---|
876 | { "run", "cnVu" },
|
---|
877 | { "rut", "cnV0" },
|
---|
878 | { "rye", "cnll" },
|
---|
879 | { "sac", "c2Fj" },
|
---|
880 | { "sad", "c2Fk" },
|
---|
881 | { "sag", "c2Fn" },
|
---|
882 | { "Sal", "U2Fs" },
|
---|
883 | { "Sam", "U2Ft" },
|
---|
884 | { "San", "U2Fu" },
|
---|
885 | { "Sao", "U2Fv" },
|
---|
886 | { "sap", "c2Fw" },
|
---|
887 | { "sat", "c2F0" },
|
---|
888 | { "saw", "c2F3" },
|
---|
889 | { "sax", "c2F4" },
|
---|
890 | { "say", "c2F5" },
|
---|
891 | { "Sci", "U2Np" },
|
---|
892 | { "SCM", "U0NN" },
|
---|
893 | { "sea", "c2Vh" },
|
---|
894 | { "sec", "c2Vj" },
|
---|
895 | { "see", "c2Vl" },
|
---|
896 | { "sen", "c2Vu" },
|
---|
897 | { "seq", "c2Vx" },
|
---|
898 | { "set", "c2V0" },
|
---|
899 | { "sew", "c2V3" },
|
---|
900 | { "sex", "c2V4" },
|
---|
901 | { "she", "c2hl" },
|
---|
902 | { "Shu", "U2h1" },
|
---|
903 | { "shy", "c2h5" },
|
---|
904 | { "sib", "c2li" },
|
---|
905 | { "sic", "c2lj" },
|
---|
906 | { "sin", "c2lu" },
|
---|
907 | { "sip", "c2lw" },
|
---|
908 | { "sir", "c2ly" },
|
---|
909 | { "sis", "c2lz" },
|
---|
910 | { "sit", "c2l0" },
|
---|
911 | { "six", "c2l4" },
|
---|
912 | { "ski", "c2tp" },
|
---|
913 | { "sky", "c2t5" },
|
---|
914 | { "sly", "c2x5" },
|
---|
915 | { "sob", "c29i" },
|
---|
916 | { "Soc", "U29j" },
|
---|
917 | { "sod", "c29k" },
|
---|
918 | { "Sol", "U29s" },
|
---|
919 | { "son", "c29u" },
|
---|
920 | { "sop", "c29w" },
|
---|
921 | { "sou", "c291" },
|
---|
922 | { "sow", "c293" },
|
---|
923 | { "soy", "c295" },
|
---|
924 | { "spa", "c3Bh" },
|
---|
925 | { "spy", "c3B5" },
|
---|
926 | { "Sri", "U3Jp" },
|
---|
927 | { "s's", "cydz" },
|
---|
928 | { "SSE", "U1NF" },
|
---|
929 | { "SST", "U1NU" },
|
---|
930 | { "SSW", "U1NX" },
|
---|
931 | { "Stu", "U3R1" },
|
---|
932 | { "sub", "c3Vi" },
|
---|
933 | { "sud", "c3Vk" },
|
---|
934 | { "sue", "c3Vl" },
|
---|
935 | { "sum", "c3Vt" },
|
---|
936 | { "sun", "c3Vu" },
|
---|
937 | { "sup", "c3Vw" },
|
---|
938 | { "Sus", "U3Vz" },
|
---|
939 | { "tab", "dGFi" },
|
---|
940 | { "tad", "dGFk" },
|
---|
941 | { "tag", "dGFn" },
|
---|
942 | { "tam", "dGFt" },
|
---|
943 | { "tan", "dGFu" },
|
---|
944 | { "tao", "dGFv" },
|
---|
945 | { "tap", "dGFw" },
|
---|
946 | { "tar", "dGFy" },
|
---|
947 | { "tat", "dGF0" },
|
---|
948 | { "tau", "dGF1" },
|
---|
949 | { "tax", "dGF4" },
|
---|
950 | { "tea", "dGVh" },
|
---|
951 | { "Ted", "VGVk" },
|
---|
952 | { "ted", "dGVk" },
|
---|
953 | { "tee", "dGVl" },
|
---|
954 | { "Tel", "VGVs" },
|
---|
955 | { "ten", "dGVu" },
|
---|
956 | { "the", "dGhl" },
|
---|
957 | { "thy", "dGh5" },
|
---|
958 | { "tic", "dGlj" },
|
---|
959 | { "tid", "dGlk" },
|
---|
960 | { "tie", "dGll" },
|
---|
961 | { "til", "dGls" },
|
---|
962 | { "Tim", "VGlt" },
|
---|
963 | { "tin", "dGlu" },
|
---|
964 | { "tip", "dGlw" },
|
---|
965 | { "tit", "dGl0" },
|
---|
966 | { "TNT", "VE5U" },
|
---|
967 | { "toe", "dG9l" },
|
---|
968 | { "tog", "dG9n" },
|
---|
969 | { "Tom", "VG9t" },
|
---|
970 | { "ton", "dG9u" },
|
---|
971 | { "too", "dG9v" },
|
---|
972 | { "top", "dG9w" },
|
---|
973 | { "tor", "dG9y" },
|
---|
974 | { "tot", "dG90" },
|
---|
975 | { "tow", "dG93" },
|
---|
976 | { "toy", "dG95" },
|
---|
977 | { "TRW", "VFJX" },
|
---|
978 | { "try", "dHJ5" },
|
---|
979 | { "t's", "dCdz" },
|
---|
980 | { "TTL", "VFRM" },
|
---|
981 | { "TTY", "VFRZ" },
|
---|
982 | { "tub", "dHVi" },
|
---|
983 | { "tug", "dHVn" },
|
---|
984 | { "tum", "dHVt" },
|
---|
985 | { "tun", "dHVu" },
|
---|
986 | { "TVA", "VFZB" },
|
---|
987 | { "TWA", "VFdB" },
|
---|
988 | { "two", "dHdv" },
|
---|
989 | { "TWX", "VFdY" },
|
---|
990 | { "ugh", "dWdo" },
|
---|
991 | { "UHF", "VUhG" },
|
---|
992 | { "Uri", "VXJp" },
|
---|
993 | { "urn", "dXJu" },
|
---|
994 | { "U.S", "VS5T" },
|
---|
995 | { "u's", "dSdz" },
|
---|
996 | { "USA", "VVNB" },
|
---|
997 | { "USC", "VVND" },
|
---|
998 | { "use", "dXNl" },
|
---|
999 | { "USN", "VVNO" },
|
---|
1000 | { "van", "dmFu" },
|
---|
1001 | { "vat", "dmF0" },
|
---|
1002 | { "vee", "dmVl" },
|
---|
1003 | { "vet", "dmV0" },
|
---|
1004 | { "vex", "dmV4" },
|
---|
1005 | { "VHF", "VkhG" },
|
---|
1006 | { "via", "dmlh" },
|
---|
1007 | { "vie", "dmll" },
|
---|
1008 | { "vii", "dmlp" },
|
---|
1009 | { "vis", "dmlz" },
|
---|
1010 | { "viz", "dml6" },
|
---|
1011 | { "von", "dm9u" },
|
---|
1012 | { "vow", "dm93" },
|
---|
1013 | { "v's", "didz" },
|
---|
1014 | { "WAC", "V0FD" },
|
---|
1015 | { "wad", "d2Fk" },
|
---|
1016 | { "wag", "d2Fn" },
|
---|
1017 | { "wah", "d2Fo" },
|
---|
1018 | { "wan", "d2Fu" },
|
---|
1019 | { "war", "d2Fy" },
|
---|
1020 | { "was", "d2Fz" },
|
---|
1021 | { "wax", "d2F4" },
|
---|
1022 | { "way", "d2F5" },
|
---|
1023 | { "web", "d2Vi" },
|
---|
1024 | { "wed", "d2Vk" },
|
---|
1025 | { "wee", "d2Vl" },
|
---|
1026 | { "Wei", "V2Vp" },
|
---|
1027 | { "wet", "d2V0" },
|
---|
1028 | { "who", "d2hv" },
|
---|
1029 | { "why", "d2h5" },
|
---|
1030 | { "wig", "d2ln" },
|
---|
1031 | { "win", "d2lu" },
|
---|
1032 | { "wit", "d2l0" },
|
---|
1033 | { "woe", "d29l" },
|
---|
1034 | { "wok", "d29r" },
|
---|
1035 | { "won", "d29u" },
|
---|
1036 | { "woo", "d29v" },
|
---|
1037 | { "wop", "d29w" },
|
---|
1038 | { "wow", "d293" },
|
---|
1039 | { "wry", "d3J5" },
|
---|
1040 | { "w's", "dydz" },
|
---|
1041 | { "x's", "eCdz" },
|
---|
1042 | { "yah", "eWFo" },
|
---|
1043 | { "yak", "eWFr" },
|
---|
1044 | { "yam", "eWFt" },
|
---|
1045 | { "yap", "eWFw" },
|
---|
1046 | { "yaw", "eWF3" },
|
---|
1047 | { "yea", "eWVh" },
|
---|
1048 | { "yen", "eWVu" },
|
---|
1049 | { "yet", "eWV0" },
|
---|
1050 | { "yin", "eWlu" },
|
---|
1051 | { "yip", "eWlw" },
|
---|
1052 | { "yon", "eW9u" },
|
---|
1053 | { "you", "eW91" },
|
---|
1054 | { "yow", "eW93" },
|
---|
1055 | { "y's", "eSdz" },
|
---|
1056 | { "yuh", "eXVo" },
|
---|
1057 | { "zag", "emFn" },
|
---|
1058 | { "Zan", "WmFu" },
|
---|
1059 | { "zap", "emFw" },
|
---|
1060 | { "Zen", "WmVu" },
|
---|
1061 | { "zig", "emln" },
|
---|
1062 | { "zip", "emlw" },
|
---|
1063 | { "Zoe", "Wm9l" },
|
---|
1064 | { "zoo", "em9v" },
|
---|
1065 | { "z's", "eidz" },
|
---|
1066 | /* the false rumors file */
|
---|
1067 | { "\"So when I die, the first thing I will see in heaven is a score list?\"",
|
---|
1068 | "IlNvIHdoZW4gSSBkaWUsIHRoZSBmaXJzdCB0aGluZyBJIHdpbGwgc2VlIGluIGhlYXZlbiBpcyBhIHNjb3JlIGxpc3Q/Ig==" },
|
---|
1069 | { "1st Law of Hacking: leaving is much more difficult than entering.",
|
---|
1070 | "MXN0IExhdyBvZiBIYWNraW5nOiBsZWF2aW5nIGlzIG11Y2ggbW9yZSBkaWZmaWN1bHQgdGhhbiBlbnRlcmluZy4=" },
|
---|
1071 | { "2nd Law of Hacking: first in, first out.",
|
---|
1072 | "Mm5kIExhdyBvZiBIYWNraW5nOiBmaXJzdCBpbiwgZmlyc3Qgb3V0Lg==" },
|
---|
1073 | { "3rd Law of Hacking: the last blow counts most.",
|
---|
1074 | "M3JkIExhdyBvZiBIYWNraW5nOiB0aGUgbGFzdCBibG93IGNvdW50cyBtb3N0Lg==" },
|
---|
1075 | { "4th Law of Hacking: you will find the exit at the entrance.",
|
---|
1076 | "NHRoIExhdyBvZiBIYWNraW5nOiB5b3Ugd2lsbCBmaW5kIHRoZSBleGl0IGF0IHRoZSBlbnRyYW5jZS4=" },
|
---|
1077 | { "A chameleon imitating a mail daemon often delivers scrolls of fire.",
|
---|
1078 | "QSBjaGFtZWxlb24gaW1pdGF0aW5nIGEgbWFpbCBkYWVtb24gb2Z0ZW4gZGVsaXZlcnMgc2Nyb2xscyBvZiBmaXJlLg==" },
|
---|
1079 | { "A cockatrice corpse is guaranteed to be untainted!",
|
---|
1080 | "QSBjb2NrYXRyaWNlIGNvcnBzZSBpcyBndWFyYW50ZWVkIHRvIGJlIHVudGFpbnRlZCE=" },
|
---|
1081 | { "A dead cockatrice is just a dead lizard.",
|
---|
1082 | "QSBkZWFkIGNvY2thdHJpY2UgaXMganVzdCBhIGRlYWQgbGl6YXJkLg==" },
|
---|
1083 | { "A dragon is just a snake that ate a scroll of fire.",
|
---|
1084 | "QSBkcmFnb24gaXMganVzdCBhIHNuYWtlIHRoYXQgYXRlIGEgc2Nyb2xsIG9mIGZpcmUu" },
|
---|
1085 | { "A fading corridor enlightens your insight.",
|
---|
1086 | "QSBmYWRpbmcgY29ycmlkb3IgZW5saWdodGVucyB5b3VyIGluc2lnaHQu" },
|
---|
1087 | { "A glowing potion is too hot to drink.",
|
---|
1088 | "QSBnbG93aW5nIHBvdGlvbiBpcyB0b28gaG90IHRvIGRyaW5rLg==" },
|
---|
1089 | { "A good amulet may protect you against guards.",
|
---|
1090 | "QSBnb29kIGFtdWxldCBtYXkgcHJvdGVjdCB5b3UgYWdhaW5zdCBndWFyZHMu" },
|
---|
1091 | { "A lizard corpse is a good thing to turn undead.",
|
---|
1092 | "QSBsaXphcmQgY29ycHNlIGlzIGEgZ29vZCB0aGluZyB0byB0dXJuIHVuZGVhZC4=" },
|
---|
1093 | { "A long worm can be defined recursively. So how should you attack it?",
|
---|
1094 | "QSBsb25nIHdvcm0gY2FuIGJlIGRlZmluZWQgcmVjdXJzaXZlbHkuIFNvIGhvdyBzaG91bGQgeW91IGF0dGFjayBpdD8=" },
|
---|
1095 | { "A monstrous mind is a toy forever.",
|
---|
1096 | "QSBtb25zdHJvdXMgbWluZCBpcyBhIHRveSBmb3JldmVyLg==" },
|
---|
1097 | { "A nymph will be very pleased if you call her by her real name: Lorelei.",
|
---|
1098 | "QSBueW1waCB3aWxsIGJlIHZlcnkgcGxlYXNlZCBpZiB5b3UgY2FsbCBoZXIgYnkgaGVyIHJlYWwgbmFtZTogTG9yZWxlaS4=" },
|
---|
1099 | { "A ring of dungeon master control is a great find.",
|
---|
1100 | "QSByaW5nIG9mIGR1bmdlb24gbWFzdGVyIGNvbnRyb2wgaXMgYSBncmVhdCBmaW5kLg==" },
|
---|
1101 | { "A ring of extra ring finger is useless if not enchanted.",
|
---|
1102 | "QSByaW5nIG9mIGV4dHJhIHJpbmcgZmluZ2VyIGlzIHVzZWxlc3MgaWYgbm90IGVuY2hhbnRlZC4=" },
|
---|
1103 | { "A rope may form a trail in a maze.",
|
---|
1104 | "QSByb3BlIG1heSBmb3JtIGEgdHJhaWwgaW4gYSBtYXplLg==" },
|
---|
1105 | { "A staff may recharge if you drop it for awhile.",
|
---|
1106 | "QSBzdGFmZiBtYXkgcmVjaGFyZ2UgaWYgeW91IGRyb3AgaXQgZm9yIGF3aGlsZS4=" },
|
---|
1107 | { "A visit to the Zoo is very educational; you meet interesting animals.",
|
---|
1108 | "QSB2aXNpdCB0byB0aGUgWm9vIGlzIHZlcnkgZWR1Y2F0aW9uYWw7IHlvdSBtZWV0IGludGVyZXN0aW5nIGFuaW1hbHMu" },
|
---|
1109 | { "A wand of deaf is a more dangerous weapon than a wand of sheep.",
|
---|
1110 | "QSB3YW5kIG9mIGRlYWYgaXMgYSBtb3JlIGRhbmdlcm91cyB3ZWFwb24gdGhhbiBhIHdhbmQgb2Ygc2hlZXAu" },
|
---|
1111 | { "A wand of vibration might bring the whole cave crashing about your ears.",
|
---|
1112 | "QSB3YW5kIG9mIHZpYnJhdGlvbiBtaWdodCBicmluZyB0aGUgd2hvbGUgY2F2ZSBjcmFzaGluZyBhYm91dCB5b3VyIGVhcnMu" },
|
---|
1113 | { "A winner never quits. A quitter never wins.",
|
---|
1114 | "QSB3aW5uZXIgbmV2ZXIgcXVpdHMuIEEgcXVpdHRlciBuZXZlciB3aW5zLg==" },
|
---|
1115 | { "A wish? Okay, make me a fortune cookie!",
|
---|
1116 | "QSB3aXNoPyBPa2F5LCBtYWtlIG1lIGEgZm9ydHVuZSBjb29raWUh" },
|
---|
1117 | { "Afraid of mimics? Try to wear a ring of true seeing.",
|
---|
1118 | "QWZyYWlkIG9mIG1pbWljcz8gVHJ5IHRvIHdlYXIgYSByaW5nIG9mIHRydWUgc2VlaW5nLg==" },
|
---|
1119 | { "All monsters are created evil, but some are more evil than others.",
|
---|
1120 | "QWxsIG1vbnN0ZXJzIGFyZSBjcmVhdGVkIGV2aWwsIGJ1dCBzb21lIGFyZSBtb3JlIGV2aWwgdGhhbiBvdGhlcnMu" },
|
---|
1121 | { "Always attack a floating eye from behind!",
|
---|
1122 | "QWx3YXlzIGF0dGFjayBhIGZsb2F0aW5nIGV5ZSBmcm9tIGJlaGluZCE=" },
|
---|
1123 | { "An elven cloak is always the height of fashion.",
|
---|
1124 | "QW4gZWx2ZW4gY2xvYWsgaXMgYWx3YXlzIHRoZSBoZWlnaHQgb2YgZmFzaGlvbi4=" },
|
---|
1125 | { "Any small object that is accidentally dropped will hide under a larger object.",
|
---|
1126 | "QW55IHNtYWxsIG9iamVjdCB0aGF0IGlzIGFjY2lkZW50YWxseSBkcm9wcGVkIHdpbGwgaGlkZSB1bmRlciBhIGxhcmdlciBvYmplY3Qu" },
|
---|
1127 | { "Balrogs do not appear above level 20.",
|
---|
1128 | "QmFscm9ncyBkbyBub3QgYXBwZWFyIGFib3ZlIGxldmVsIDIwLg==" },
|
---|
1129 | { "Banana peels work especially well against Keystone Kops.",
|
---|
1130 | "QmFuYW5hIHBlZWxzIHdvcmsgZXNwZWNpYWxseSB3ZWxsIGFnYWluc3QgS2V5c3RvbmUgS29wcy4=" },
|
---|
1131 | { "Be careful when eating bananas. Monsters might slip on the peels.",
|
---|
1132 | "QmUgY2FyZWZ1bCB3aGVuIGVhdGluZyBiYW5hbmFzLiBNb25zdGVycyBtaWdodCBzbGlwIG9uIHRoZSBwZWVscy4=" },
|
---|
1133 | { "Better leave the dungeon; otherwise you might get hurt badly.",
|
---|
1134 | "QmV0dGVyIGxlYXZlIHRoZSBkdW5nZW9uOyBvdGhlcndpc2UgeW91IG1pZ2h0IGdldCBodXJ0IGJhZGx5Lg==" },
|
---|
1135 | { "Beware of the potion of nitroglycerin -- it's not for the weak of heart.",
|
---|
1136 | "QmV3YXJlIG9mIHRoZSBwb3Rpb24gb2Ygbml0cm9nbHljZXJpbiAtLSBpdCdzIG5vdCBmb3IgdGhlIHdlYWsgb2YgaGVhcnQu" },
|
---|
1137 | { "Beware: there's always a chance that your wand explodes as you try to zap it!",
|
---|
1138 | "QmV3YXJlOiB0aGVyZSdzIGFsd2F5cyBhIGNoYW5jZSB0aGF0IHlvdXIgd2FuZCBleHBsb2RlcyBhcyB5b3UgdHJ5IHRvIHphcCBpdCE=" },
|
---|
1139 | { "Beyond the 23rd level lies a happy retirement in a room of your own.",
|
---|
1140 | "QmV5b25kIHRoZSAyM3JkIGxldmVsIGxpZXMgYSBoYXBweSByZXRpcmVtZW50IGluIGEgcm9vbSBvZiB5b3VyIG93bi4=" },
|
---|
1141 | { "Changing your suit without dropping your sword? You must be kidding!",
|
---|
1142 | "Q2hhbmdpbmcgeW91ciBzdWl0IHdpdGhvdXQgZHJvcHBpbmcgeW91ciBzd29yZD8gWW91IG11c3QgYmUga2lkZGluZyE=" },
|
---|
1143 | { "Cockatrices might turn themselves to stone faced with a mirror.",
|
---|
1144 | "Q29ja2F0cmljZXMgbWlnaHQgdHVybiB0aGVtc2VsdmVzIHRvIHN0b25lIGZhY2VkIHdpdGggYSBtaXJyb3Iu" },
|
---|
1145 | { "Consumption of home-made food is strictly forbidden in this dungeon.",
|
---|
1146 | "Q29uc3VtcHRpb24gb2YgaG9tZS1tYWRlIGZvb2QgaXMgc3RyaWN0bHkgZm9yYmlkZGVuIGluIHRoaXMgZHVuZ2Vvbi4=" },
|
---|
1147 | { "Dark room? Your chance to develop your photographs!",
|
---|
1148 | "RGFyayByb29tPyBZb3VyIGNoYW5jZSB0byBkZXZlbG9wIHlvdXIgcGhvdG9ncmFwaHMh" },
|
---|
1149 | { "Dark rooms are not *completely* dark: just wait and let your eyes adjust...",
|
---|
1150 | "RGFyayByb29tcyBhcmUgbm90ICpjb21wbGV0ZWx5KiBkYXJrOiBqdXN0IHdhaXQgYW5kIGxldCB5b3VyIGV5ZXMgYWRqdXN0Li4u" },
|
---|
1151 | { "David London sez, \"Hey guys, *WIELD* a lizard corpse against a cockatrice!\"",
|
---|
1152 | "RGF2aWQgTG9uZG9uIHNleiwgIkhleSBndXlzLCAqV0lFTEQqIGEgbGl6YXJkIGNvcnBzZSBhZ2FpbnN0IGEgY29ja2F0cmljZSEi" },
|
---|
1153 | { "Death is just life's way of telling you you've been fired.",
|
---|
1154 | "RGVhdGggaXMganVzdCBsaWZlJ3Mgd2F5IG9mIHRlbGxpbmcgeW91IHlvdSd2ZSBiZWVuIGZpcmVkLg==" },
|
---|
1155 | { "Demi-gods don't need any help from the gods.",
|
---|
1156 | "RGVtaS1nb2RzIGRvbid0IG5lZWQgYW55IGhlbHAgZnJvbSB0aGUgZ29kcy4=" },
|
---|
1157 | { "Demons *HATE* Priests and Priestesses.",
|
---|
1158 | "RGVtb25zICpIQVRFKiBQcmllc3RzIGFuZCBQcmllc3Rlc3Nlcy4=" },
|
---|
1159 | { "Didn't you forget to pay?",
|
---|
1160 | "RGlkbid0IHlvdSBmb3JnZXQgdG8gcGF5Pw==" },
|
---|
1161 | { "Didn't your mother tell you not to eat food off the floor?",
|
---|
1162 | "RGlkbid0IHlvdXIgbW90aGVyIHRlbGwgeW91IG5vdCB0byBlYXQgZm9vZCBvZmYgdGhlIGZsb29yPw==" },
|
---|
1163 | { "Direct a direct hit on your direct opponent, directing in the right direction.",
|
---|
1164 | "RGlyZWN0IGEgZGlyZWN0IGhpdCBvbiB5b3VyIGRpcmVjdCBvcHBvbmVudCwgZGlyZWN0aW5nIGluIHRoZSByaWdodCBkaXJlY3Rpb24u" },
|
---|
1165 | { "Do you want to make more money? Sure, we all do! Join the Fort Ludios guard!",
|
---|
1166 | "RG8geW91IHdhbnQgdG8gbWFrZSBtb3JlIG1vbmV5PyBTdXJlLCB3ZSBhbGwgZG8hIEpvaW4gdGhlIEZvcnQgTHVkaW9zIGd1YXJkIQ==" },
|
---|
1167 | { "Don't eat too much: you might start hiccoughing!",
|
---|
1168 | "RG9uJ3QgZWF0IHRvbyBtdWNoOiB5b3UgbWlnaHQgc3RhcnQgaGljY291Z2hpbmch" },
|
---|
1169 | { "Don't play hack at your work; your boss might hit you!",
|
---|
1170 | "RG9uJ3QgcGxheSBoYWNrIGF0IHlvdXIgd29yazsgeW91ciBib3NzIG1pZ2h0IGhpdCB5b3Uh" },
|
---|
1171 | { "Don't tell a soul you found a secret door, otherwise it isn't a secret anymore.",
|
---|
1172 | "RG9uJ3QgdGVsbCBhIHNvdWwgeW91IGZvdW5kIGEgc2VjcmV0IGRvb3IsIG90aGVyd2lzZSBpdCBpc24ndCBhIHNlY3JldCBhbnltb3JlLg==" },
|
---|
1173 | { "Drinking potions of booze may land you in jail if you are under 21.",
|
---|
1174 | "RHJpbmtpbmcgcG90aW9ucyBvZiBib296ZSBtYXkgbGFuZCB5b3UgaW4gamFpbCBpZiB5b3UgYXJlIHVuZGVyIDIxLg==" },
|
---|
1175 | { "Drop your vanity and get rid of your jewels! Pickpockets about!",
|
---|
1176 | "RHJvcCB5b3VyIHZhbml0eSBhbmQgZ2V0IHJpZCBvZiB5b3VyIGpld2VscyEgUGlja3BvY2tldHMgYWJvdXQh" },
|
---|
1177 | { "Eat 10 cloves of garlic and keep all humans at a two-square distance.",
|
---|
1178 | "RWF0IDEwIGNsb3ZlcyBvZiBnYXJsaWMgYW5kIGtlZXAgYWxsIGh1bWFucyBhdCBhIHR3by1zcXVhcmUgZGlzdGFuY2Uu" },
|
---|
1179 | { "Eels hide under mud. Use a unicorn to clear the water and make them visible.",
|
---|
1180 | "RWVscyBoaWRlIHVuZGVyIG11ZC4gVXNlIGEgdW5pY29ybiB0byBjbGVhciB0aGUgd2F0ZXIgYW5kIG1ha2UgdGhlbSB2aXNpYmxlLg==" },
|
---|
1181 | { "Engrave your wishes with a wand of wishing.",
|
---|
1182 | "RW5ncmF2ZSB5b3VyIHdpc2hlcyB3aXRoIGEgd2FuZCBvZiB3aXNoaW5nLg==" },
|
---|
1183 | { "Eventually you will come to admire the swift elegance of a retreating nymph.",
|
---|
1184 | "RXZlbnR1YWxseSB5b3Ugd2lsbCBjb21lIHRvIGFkbWlyZSB0aGUgc3dpZnQgZWxlZ2FuY2Ugb2YgYSByZXRyZWF0aW5nIG55bXBoLg==" },
|
---|
1185 | { "Ever heard hissing outside? I *knew* you hadn't!",
|
---|
1186 | "RXZlciBoZWFyZCBoaXNzaW5nIG91dHNpZGU/IEkgKmtuZXcqIHlvdSBoYWRuJ3Qh" },
|
---|
1187 | { "Ever lifted a dragon corpse?",
|
---|
1188 | "RXZlciBsaWZ0ZWQgYSBkcmFnb24gY29ycHNlPw==" },
|
---|
1189 | { "Ever seen a leocrotta dancing the tengu?",
|
---|
1190 | "RXZlciBzZWVuIGEgbGVvY3JvdHRhIGRhbmNpbmcgdGhlIHRlbmd1Pw==" },
|
---|
1191 | { "Ever seen your weapon glow plaid?",
|
---|
1192 | "RXZlciBzZWVuIHlvdXIgd2VhcG9uIGdsb3cgcGxhaWQ/" },
|
---|
1193 | { "Ever tamed a shopkeeper?",
|
---|
1194 | "RXZlciB0YW1lZCBhIHNob3BrZWVwZXI/" },
|
---|
1195 | { "Ever tried digging through a Vault Guard?",
|
---|
1196 | "RXZlciB0cmllZCBkaWdnaW5nIHRocm91Z2ggYSBWYXVsdCBHdWFyZD8=" },
|
---|
1197 | { "Ever tried enchanting a rope?",
|
---|
1198 | "RXZlciB0cmllZCBlbmNoYW50aW5nIGEgcm9wZT8=" },
|
---|
1199 | { "Floating eyes can't stand Hawaiian shirts.",
|
---|
1200 | "RmxvYXRpbmcgZXllcyBjYW4ndCBzdGFuZCBIYXdhaWlhbiBzaGlydHMu" },
|
---|
1201 | { "For any remedy there is a misery.",
|
---|
1202 | "Rm9yIGFueSByZW1lZHkgdGhlcmUgaXMgYSBtaXNlcnku" },
|
---|
1203 | { "Giant bats turn into giant vampires.",
|
---|
1204 | "R2lhbnQgYmF0cyB0dXJuIGludG8gZ2lhbnQgdmFtcGlyZXMu" },
|
---|
1205 | { "Good day for overcoming obstacles. Try a steeplechase.",
|
---|
1206 | "R29vZCBkYXkgZm9yIG92ZXJjb21pbmcgb2JzdGFjbGVzLiBUcnkgYSBzdGVlcGxlY2hhc2Uu" },
|
---|
1207 | { "Half Moon tonight. (At least it's better than no Moon at all.)",
|
---|
1208 | "SGFsZiBNb29uIHRvbmlnaHQuIChBdCBsZWFzdCBpdCdzIGJldHRlciB0aGFuIG5vIE1vb24gYXQgYWxsLik=" },
|
---|
1209 | { "Help! I'm being held prisoner in a fortune cookie factory!",
|
---|
1210 | "SGVscCEgSSdtIGJlaW5nIGhlbGQgcHJpc29uZXIgaW4gYSBmb3J0dW5lIGNvb2tpZSBmYWN0b3J5IQ==" },
|
---|
1211 | { "Housecats have nine lives, kittens only one.",
|
---|
1212 | "SG91c2VjYXRzIGhhdmUgbmluZSBsaXZlcywga2l0dGVucyBvbmx5IG9uZS4=" },
|
---|
1213 | { "How long can you tread water?",
|
---|
1214 | "SG93IGxvbmcgY2FuIHlvdSB0cmVhZCB3YXRlcj8=" },
|
---|
1215 | { "Hungry? There is an abundance of food on the next level.",
|
---|
1216 | "SHVuZ3J5PyBUaGVyZSBpcyBhbiBhYnVuZGFuY2Ugb2YgZm9vZCBvbiB0aGUgbmV4dCBsZXZlbC4=" },
|
---|
1217 | { "I guess you've never hit a mail daemon with the Amulet of Yendor...",
|
---|
1218 | "SSBndWVzcyB5b3UndmUgbmV2ZXIgaGl0IGEgbWFpbCBkYWVtb24gd2l0aCB0aGUgQW11bGV0IG9mIFllbmRvci4uLg==" },
|
---|
1219 | { "If you are the shopkeeper, you can take things for free.",
|
---|
1220 | "SWYgeW91IGFyZSB0aGUgc2hvcGtlZXBlciwgeW91IGNhbiB0YWtlIHRoaW5ncyBmb3IgZnJlZS4=" },
|
---|
1221 | { "If you can't learn to do it well, learn to enjoy doing it badly.",
|
---|
1222 | "SWYgeW91IGNhbid0IGxlYXJuIHRvIGRvIGl0IHdlbGwsIGxlYXJuIHRvIGVuam95IGRvaW5nIGl0IGJhZGx5Lg==" },
|
---|
1223 | { "If you thought the Wizard was bad, just wait till you meet the Warlord!",
|
---|
1224 | "SWYgeW91IHRob3VnaHQgdGhlIFdpemFyZCB3YXMgYmFkLCBqdXN0IHdhaXQgdGlsbCB5b3UgbWVldCB0aGUgV2FybG9yZCE=" },
|
---|
1225 | { "If you turn blind, don't expect your dog to be turned into a seeing-eye dog.",
|
---|
1226 | "SWYgeW91IHR1cm4gYmxpbmQsIGRvbid0IGV4cGVjdCB5b3VyIGRvZyB0byBiZSB0dXJuZWQgaW50byBhIHNlZWluZy1leWUgZG9nLg==" },
|
---|
1227 | { "If you want to feel great, you must eat something real big.",
|
---|
1228 | "SWYgeW91IHdhbnQgdG8gZmVlbCBncmVhdCwgeW91IG11c3QgZWF0IHNvbWV0aGluZyByZWFsIGJpZy4=" },
|
---|
1229 | { "If you want to float, you'd better eat a floating eye.",
|
---|
1230 | "SWYgeW91IHdhbnQgdG8gZmxvYXQsIHlvdSdkIGJldHRlciBlYXQgYSBmbG9hdGluZyBleWUu" },
|
---|
1231 | { "If your ghost kills a player, it increases your score.",
|
---|
1232 | "SWYgeW91ciBnaG9zdCBraWxscyBhIHBsYXllciwgaXQgaW5jcmVhc2VzIHlvdXIgc2NvcmUu" },
|
---|
1233 | { "Increase mindpower: Tame your own ghost!",
|
---|
1234 | "SW5jcmVhc2UgbWluZHBvd2VyOiBUYW1lIHlvdXIgb3duIGdob3N0IQ==" },
|
---|
1235 | { "It furthers one to see the great man.",
|
---|
1236 | "SXQgZnVydGhlcnMgb25lIHRvIHNlZSB0aGUgZ3JlYXQgbWFuLg==" },
|
---|
1237 | { "It's easy to overlook a monster in a wood.",
|
---|
1238 | "SXQncyBlYXN5IHRvIG92ZXJsb29rIGEgbW9uc3RlciBpbiBhIHdvb2Qu" },
|
---|
1239 | { "Just below any trapdoor there may be another one. Just keep falling!",
|
---|
1240 | "SnVzdCBiZWxvdyBhbnkgdHJhcGRvb3IgdGhlcmUgbWF5IGJlIGFub3RoZXIgb25lLiBKdXN0IGtlZXAgZmFsbGluZyE=" },
|
---|
1241 | { "Katanas are very sharp; watch you don't cut yourself.",
|
---|
1242 | "S2F0YW5hcyBhcmUgdmVyeSBzaGFycDsgd2F0Y2ggeW91IGRvbid0IGN1dCB5b3Vyc2VsZi4=" },
|
---|
1243 | { "Keep a clear mind: quaff clear potions.",
|
---|
1244 | "S2VlcCBhIGNsZWFyIG1pbmQ6IHF1YWZmIGNsZWFyIHBvdGlvbnMu" },
|
---|
1245 | { "Kicking the terminal doesn't hurt the monsters.",
|
---|
1246 | "S2lja2luZyB0aGUgdGVybWluYWwgZG9lc24ndCBodXJ0IHRoZSBtb25zdGVycy4=" },
|
---|
1247 | { "Killer bees keep appearing till you kill their queen.",
|
---|
1248 | "S2lsbGVyIGJlZXMga2VlcCBhcHBlYXJpbmcgdGlsbCB5b3Uga2lsbCB0aGVpciBxdWVlbi4=" },
|
---|
1249 | { "Killer bunnies can be tamed with carrots only.",
|
---|
1250 | "S2lsbGVyIGJ1bm5pZXMgY2FuIGJlIHRhbWVkIHdpdGggY2Fycm90cyBvbmx5Lg==" },
|
---|
1251 | { "Latest news? Put `rec.games.roguelike.nethack' in your .newsrc!",
|
---|
1252 | "TGF0ZXN0IG5ld3M/IFB1dCBgcmVjLmdhbWVzLnJvZ3VlbGlrZS5uZXRoYWNrJyBpbiB5b3VyIC5uZXdzcmMh" },
|
---|
1253 | { "Learn how to spell. Play NetHack!",
|
---|
1254 | "TGVhcm4gaG93IHRvIHNwZWxsLiBQbGF5IE5ldEhhY2sh" },
|
---|
1255 | { "Leprechauns hide their gold in a secret room.",
|
---|
1256 | "TGVwcmVjaGF1bnMgaGlkZSB0aGVpciBnb2xkIGluIGEgc2VjcmV0IHJvb20u" },
|
---|
1257 | { "Let your fingers do the walking on the yulkjhnb keys.",
|
---|
1258 | "TGV0IHlvdXIgZmluZ2VycyBkbyB0aGUgd2Fsa2luZyBvbiB0aGUgeXVsa2pobmIga2V5cy4=" },
|
---|
1259 | { "Let's face it: this time you're not going to win.",
|
---|
1260 | "TGV0J3MgZmFjZSBpdDogdGhpcyB0aW1lIHlvdSdyZSBub3QgZ29pbmcgdG8gd2luLg==" },
|
---|
1261 | { "Let's have a party, drink a lot of booze.",
|
---|
1262 | "TGV0J3MgaGF2ZSBhIHBhcnR5LCBkcmluayBhIGxvdCBvZiBib296ZS4=" },
|
---|
1263 | { "Liquor sellers do not drink; they hate to see you twice.",
|
---|
1264 | "TGlxdW9yIHNlbGxlcnMgZG8gbm90IGRyaW5rOyB0aGV5IGhhdGUgdG8gc2VlIHlvdSB0d2ljZS4=" },
|
---|
1265 | { "Lunar eclipse tonight. May as well quit now!",
|
---|
1266 | "THVuYXIgZWNsaXBzZSB0b25pZ2h0LiBNYXkgYXMgd2VsbCBxdWl0IG5vdyE=" },
|
---|
1267 | { "Meeting your own ghost decreases your luck considerably!",
|
---|
1268 | "TWVldGluZyB5b3VyIG93biBnaG9zdCBkZWNyZWFzZXMgeW91ciBsdWNrIGNvbnNpZGVyYWJseSE=" },
|
---|
1269 | { "Money to invest? Take it to the local branch of the Magic Memory Vault!",
|
---|
1270 | "TW9uZXkgdG8gaW52ZXN0PyBUYWtlIGl0IHRvIHRoZSBsb2NhbCBicmFuY2ggb2YgdGhlIE1hZ2ljIE1lbW9yeSBWYXVsdCE=" },
|
---|
1271 | { "Monsters come from nowhere to hit you everywhere.",
|
---|
1272 | "TW9uc3RlcnMgY29tZSBmcm9tIG5vd2hlcmUgdG8gaGl0IHlvdSBldmVyeXdoZXJlLg==" },
|
---|
1273 | { "Monsters sleep because you are boring, not because they ever get tired.",
|
---|
1274 | "TW9uc3RlcnMgc2xlZXAgYmVjYXVzZSB5b3UgYXJlIGJvcmluZywgbm90IGJlY2F1c2UgdGhleSBldmVyIGdldCB0aXJlZC4=" },
|
---|
1275 | { "Most monsters prefer minced meat. That's why they are hitting you!",
|
---|
1276 | "TW9zdCBtb25zdGVycyBwcmVmZXIgbWluY2VkIG1lYXQuIFRoYXQncyB3aHkgdGhleSBhcmUgaGl0dGluZyB5b3Uh" },
|
---|
1277 | { "Most of the bugs in NetHack are on the floor.",
|
---|
1278 | "TW9zdCBvZiB0aGUgYnVncyBpbiBOZXRIYWNrIGFyZSBvbiB0aGUgZmxvb3Iu" },
|
---|
1279 | { "Much ado Nothing Happens.",
|
---|
1280 | "TXVjaCBhZG8gTm90aGluZyBIYXBwZW5zLg==" },
|
---|
1281 | { "Multi-player NetHack is a myth.",
|
---|
1282 | "TXVsdGktcGxheWVyIE5ldEhhY2sgaXMgYSBteXRoLg==" },
|
---|
1283 | { "NetHack is addictive. Too late, you're already hooked.",
|
---|
1284 | "TmV0SGFjayBpcyBhZGRpY3RpdmUuIFRvbyBsYXRlLCB5b3UncmUgYWxyZWFkeSBob29rZWQu" },
|
---|
1285 | { "Never ask a shopkeeper for a price list.",
|
---|
1286 | "TmV2ZXIgYXNrIGEgc2hvcGtlZXBlciBmb3IgYSBwcmljZSBsaXN0Lg==" },
|
---|
1287 | { "Never burn a tree, unless you like getting whacked with a +5 shovel.",
|
---|
1288 | "TmV2ZXIgYnVybiBhIHRyZWUsIHVubGVzcyB5b3UgbGlrZSBnZXR0aW5nIHdoYWNrZWQgd2l0aCBhICs1IHNob3ZlbC4=" },
|
---|
1289 | { "Never eat with glowing hands!",
|
---|
1290 | "TmV2ZXIgZWF0IHdpdGggZ2xvd2luZyBoYW5kcyE=" },
|
---|
1291 | { "Never mind the monsters hitting you: they just replace the charwomen.",
|
---|
1292 | "TmV2ZXIgbWluZCB0aGUgbW9uc3RlcnMgaGl0dGluZyB5b3U6IHRoZXkganVzdCByZXBsYWNlIHRoZSBjaGFyd29tZW4u" },
|
---|
1293 | { "Never play leapfrog with a unicorn.",
|
---|
1294 | "TmV2ZXIgcGxheSBsZWFwZnJvZyB3aXRoIGEgdW5pY29ybi4=" },
|
---|
1295 | { "Never step on a cursed engraving.",
|
---|
1296 | "TmV2ZXIgc3RlcCBvbiBhIGN1cnNlZCBlbmdyYXZpbmcu" },
|
---|
1297 | { "Never swim with a camera: there's nothing to take pictures of.",
|
---|
1298 | "TmV2ZXIgc3dpbSB3aXRoIGEgY2FtZXJhOiB0aGVyZSdzIG5vdGhpbmcgdG8gdGFrZSBwaWN0dXJlcyBvZi4=" },
|
---|
1299 | { "Never teach your pet rust monster to fetch.",
|
---|
1300 | "TmV2ZXIgdGVhY2ggeW91ciBwZXQgcnVzdCBtb25zdGVyIHRvIGZldGNoLg==" },
|
---|
1301 | { "Never trust a random generator in magic fields.",
|
---|
1302 | "TmV2ZXIgdHJ1c3QgYSByYW5kb20gZ2VuZXJhdG9yIGluIG1hZ2ljIGZpZWxkcy4=" },
|
---|
1303 | { "Never use a wand of death.",
|
---|
1304 | "TmV2ZXIgdXNlIGEgd2FuZCBvZiBkZWF0aC4=" },
|
---|
1305 | { "No level contains two shops. The maze is no level. So...",
|
---|
1306 | "Tm8gbGV2ZWwgY29udGFpbnMgdHdvIHNob3BzLiBUaGUgbWF6ZSBpcyBubyBsZXZlbC4gU28uLi4=" },
|
---|
1307 | { "No part of this fortune may be reproduced, stored in a retrieval system, ...",
|
---|
1308 | "Tm8gcGFydCBvZiB0aGlzIGZvcnR1bmUgbWF5IGJlIHJlcHJvZHVjZWQsIHN0b3JlZCBpbiBhIHJldHJpZXZhbCBzeXN0ZW0sIC4uLg==" },
|
---|
1309 | { "Not all rumors are as misleading as this one.",
|
---|
1310 | "Tm90IGFsbCBydW1vcnMgYXJlIGFzIG1pc2xlYWRpbmcgYXMgdGhpcyBvbmUu" },
|
---|
1311 | { "Nymphs and nurses like beautiful rings.",
|
---|
1312 | "TnltcGhzIGFuZCBudXJzZXMgbGlrZSBiZWF1dGlmdWwgcmluZ3Mu" },
|
---|
1313 | { "Nymphs are blondes. Are you a gentleman?",
|
---|
1314 | "TnltcGhzIGFyZSBibG9uZGVzLiBBcmUgeW91IGEgZ2VudGxlbWFuPw==" },
|
---|
1315 | { "Offering a unicorn a worthless piece of glass might prove to be fatal!",
|
---|
1316 | "T2ZmZXJpbmcgYSB1bmljb3JuIGEgd29ydGhsZXNzIHBpZWNlIG9mIGdsYXNzIG1pZ2h0IHByb3ZlIHRvIGJlIGZhdGFsIQ==" },
|
---|
1317 | { "Old hackers never die: young ones do.",
|
---|
1318 | "T2xkIGhhY2tlcnMgbmV2ZXIgZGllOiB5b3VuZyBvbmVzIGRvLg==" },
|
---|
1319 | { "One has to leave shops before closing time.",
|
---|
1320 | "T25lIGhhcyB0byBsZWF2ZSBzaG9wcyBiZWZvcmUgY2xvc2luZyB0aW1lLg==" },
|
---|
1321 | { "One homunculus a day keeps the doctor away.",
|
---|
1322 | "T25lIGhvbXVuY3VsdXMgYSBkYXkga2VlcHMgdGhlIGRvY3RvciBhd2F5Lg==" },
|
---|
1323 | { "One level further down somebody is getting killed, right now.",
|
---|
1324 | "T25lIGxldmVsIGZ1cnRoZXIgZG93biBzb21lYm9keSBpcyBnZXR0aW5nIGtpbGxlZCwgcmlnaHQgbm93Lg==" },
|
---|
1325 | { "Only a wizard can use a magic whistle.",
|
---|
1326 | "T25seSBhIHdpemFyZCBjYW4gdXNlIGEgbWFnaWMgd2hpc3RsZS4=" },
|
---|
1327 | { "Only adventurers of evil alignment think of killing their dog.",
|
---|
1328 | "T25seSBhZHZlbnR1cmVycyBvZiBldmlsIGFsaWdubWVudCB0aGluayBvZiBraWxsaW5nIHRoZWlyIGRvZy4=" },
|
---|
1329 | { "Only chaotic evils kill sleeping monsters.",
|
---|
1330 | "T25seSBjaGFvdGljIGV2aWxzIGtpbGwgc2xlZXBpbmcgbW9uc3RlcnMu" },
|
---|
1331 | { "Only real trappers escape traps.",
|
---|
1332 | "T25seSByZWFsIHRyYXBwZXJzIGVzY2FwZSB0cmFwcy4=" },
|
---|
1333 | { "Only real wizards can write scrolls.",
|
---|
1334 | "T25seSByZWFsIHdpemFyZHMgY2FuIHdyaXRlIHNjcm9sbHMu" },
|
---|
1335 | { "Operation OVERKILL has started now.",
|
---|
1336 | "T3BlcmF0aW9uIE9WRVJLSUxMIGhhcyBzdGFydGVkIG5vdy4=" },
|
---|
1337 | { "PLEASE ignore previous rumor.",
|
---|
1338 | "UExFQVNFIGlnbm9yZSBwcmV2aW91cyBydW1vci4=" },
|
---|
1339 | { "Polymorph into an ettin; meet your opponents face to face to face.",
|
---|
1340 | "UG9seW1vcnBoIGludG8gYW4gZXR0aW47IG1lZXQgeW91ciBvcHBvbmVudHMgZmFjZSB0byBmYWNlIHRvIGZhY2Uu" },
|
---|
1341 | { "Praying will frighten demons.",
|
---|
1342 | "UHJheWluZyB3aWxsIGZyaWdodGVuIGRlbW9ucy4=" },
|
---|
1343 | { "Row (3x) that boat gently down the stream, Charon (4x), death is but a dream.",
|
---|
1344 | "Um93ICgzeCkgdGhhdCBib2F0IGdlbnRseSBkb3duIHRoZSBzdHJlYW0sIENoYXJvbiAoNHgpLCBkZWF0aCBpcyBidXQgYSBkcmVhbS4=" },
|
---|
1345 | { "Running is good for your legs.",
|
---|
1346 | "UnVubmluZyBpcyBnb29kIGZvciB5b3VyIGxlZ3Mu" },
|
---|
1347 | { "Screw up your courage! You've screwed up everything else.",
|
---|
1348 | "U2NyZXcgdXAgeW91ciBjb3VyYWdlISBZb3UndmUgc2NyZXdlZCB1cCBldmVyeXRoaW5nIGVsc2Uu" },
|
---|
1349 | { "Seepage? Leaky pipes? Rising damp? Summon the plumber!",
|
---|
1350 | "U2VlcGFnZT8gTGVha3kgcGlwZXM/IFJpc2luZyBkYW1wPyBTdW1tb24gdGhlIHBsdW1iZXIh" },
|
---|
1351 | { "Segmentation fault (core dumped).",
|
---|
1352 | "U2VnbWVudGF0aW9uIGZhdWx0IChjb3JlIGR1bXBlZCku" },
|
---|
1353 | { "Shopkeepers sometimes die from old age.",
|
---|
1354 | "U2hvcGtlZXBlcnMgc29tZXRpbWVzIGRpZSBmcm9tIG9sZCBhZ2Uu" },
|
---|
1355 | { "Some mazes (especially small ones) have no solutions, says man 6 maze.",
|
---|
1356 | "U29tZSBtYXplcyAoZXNwZWNpYWxseSBzbWFsbCBvbmVzKSBoYXZlIG5vIHNvbHV0aW9ucywgc2F5cyBtYW4gNiBtYXplLg==" },
|
---|
1357 | { "Some questions the Sphynx asks just *don't* have any answers.",
|
---|
1358 | "U29tZSBxdWVzdGlvbnMgdGhlIFNwaHlueCBhc2tzIGp1c3QgKmRvbid0KiBoYXZlIGFueSBhbnN3ZXJzLg==" },
|
---|
1359 | { "Sometimes \"mu\" is the answer.",
|
---|
1360 | "U29tZXRpbWVzICJtdSIgaXMgdGhlIGFuc3dlci4=" },
|
---|
1361 | { "Sorry, no fortune this time. Better luck next cookie!",
|
---|
1362 | "U29ycnksIG5vIGZvcnR1bmUgdGhpcyB0aW1lLiBCZXR0ZXIgbHVjayBuZXh0IGNvb2tpZSE=" },
|
---|
1363 | { "Spare your scrolls of make-edible until it's really necessary!",
|
---|
1364 | "U3BhcmUgeW91ciBzY3JvbGxzIG9mIG1ha2UtZWRpYmxlIHVudGlsIGl0J3MgcmVhbGx5IG5lY2Vzc2FyeSE=" },
|
---|
1365 | { "Suddenly, the dungeon will collapse...",
|
---|
1366 | "U3VkZGVubHksIHRoZSBkdW5nZW9uIHdpbGwgY29sbGFwc2UuLi4=" },
|
---|
1367 | { "Taming a mail daemon may cause a system security violation.",
|
---|
1368 | "VGFtaW5nIGEgbWFpbCBkYWVtb24gbWF5IGNhdXNlIGEgc3lzdGVtIHNlY3VyaXR5IHZpb2xhdGlvbi4=" },
|
---|
1369 | { "The crowd was so tough, the Stooges won't play the Dungeon anymore, nyuk nyuk.",
|
---|
1370 | "VGhlIGNyb3dkIHdhcyBzbyB0b3VnaCwgdGhlIFN0b29nZXMgd29uJ3QgcGxheSB0aGUgRHVuZ2VvbiBhbnltb3JlLCBueXVrIG55dWsu" },
|
---|
1371 | { "The leprechauns hide their treasure in a small hidden room.",
|
---|
1372 | "VGhlIGxlcHJlY2hhdW5zIGhpZGUgdGhlaXIgdHJlYXN1cmUgaW4gYSBzbWFsbCBoaWRkZW4gcm9vbS4=" },
|
---|
1373 | { "The longer the wand the better.",
|
---|
1374 | "VGhlIGxvbmdlciB0aGUgd2FuZCB0aGUgYmV0dGVyLg==" },
|
---|
1375 | { "The magic word is \"XYZZY\".",
|
---|
1376 | "VGhlIG1hZ2ljIHdvcmQgaXMgIlhZWlpZIi4=" },
|
---|
1377 | { "The meek shall inherit your bones files.",
|
---|
1378 | "VGhlIG1lZWsgc2hhbGwgaW5oZXJpdCB5b3VyIGJvbmVzIGZpbGVzLg==" },
|
---|
1379 | { "The mines are dark and deep, and I have levels to go before I sleep.",
|
---|
1380 | "VGhlIG1pbmVzIGFyZSBkYXJrIGFuZCBkZWVwLCBhbmQgSSBoYXZlIGxldmVscyB0byBnbyBiZWZvcmUgSSBzbGVlcC4=" },
|
---|
1381 | { "The use of dynamite is dangerous.",
|
---|
1382 | "VGhlIHVzZSBvZiBkeW5hbWl0ZSBpcyBkYW5nZXJvdXMu" },
|
---|
1383 | { "There are no worms in the UNIX version.",
|
---|
1384 | "VGhlcmUgYXJlIG5vIHdvcm1zIGluIHRoZSBVTklYIHZlcnNpb24u" },
|
---|
1385 | { "There is a trap on this level!",
|
---|
1386 | "VGhlcmUgaXMgYSB0cmFwIG9uIHRoaXMgbGV2ZWwh" },
|
---|
1387 | { "They say that Demogorgon, Asmodeus, Orcus, Yeenoghu & Juiblex is no law firm.",
|
---|
1388 | "VGhleSBzYXkgdGhhdCBEZW1vZ29yZ29uLCBBc21vZGV1cywgT3JjdXMsIFllZW5vZ2h1ICYgSnVpYmxleCBpcyBubyBsYXcgZmlybS4=" },
|
---|
1389 | { "They say that Geryon has an evil twin, beware!",
|
---|
1390 | "VGhleSBzYXkgdGhhdCBHZXJ5b24gaGFzIGFuIGV2aWwgdHdpbiwgYmV3YXJlIQ==" },
|
---|
1391 | { "They say that Medusa would make a terrible pet.",
|
---|
1392 | "VGhleSBzYXkgdGhhdCBNZWR1c2Egd291bGQgbWFrZSBhIHRlcnJpYmxlIHBldC4=" },
|
---|
1393 | { "They say that NetHack bugs are Seldon planned.",
|
---|
1394 | "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGJ1Z3MgYXJlIFNlbGRvbiBwbGFubmVkLg==" },
|
---|
1395 | { "They say that NetHack comes in 256 flavors.",
|
---|
1396 | "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGNvbWVzIGluIDI1NiBmbGF2b3JzLg==" },
|
---|
1397 | { "They say that NetHack is just a computer game.",
|
---|
1398 | "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIGp1c3QgYSBjb21wdXRlciBnYW1lLg==" },
|
---|
1399 | { "They say that NetHack is more than just a computer game.",
|
---|
1400 | "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIG1vcmUgdGhhbiBqdXN0IGEgY29tcHV0ZXIgZ2FtZS4=" },
|
---|
1401 | { "They say that NetHack is never what it used to be.",
|
---|
1402 | "VGhleSBzYXkgdGhhdCBOZXRIYWNrIGlzIG5ldmVyIHdoYXQgaXQgdXNlZCB0byBiZS4=" },
|
---|
1403 | { "They say that a baby dragon is too small to hurt or help you.",
|
---|
1404 | "VGhleSBzYXkgdGhhdCBhIGJhYnkgZHJhZ29uIGlzIHRvbyBzbWFsbCB0byBodXJ0IG9yIGhlbHAgeW91Lg==" },
|
---|
1405 | { "They say that a black pudding is simply a brown pudding gone bad.",
|
---|
1406 | "VGhleSBzYXkgdGhhdCBhIGJsYWNrIHB1ZGRpbmcgaXMgc2ltcGx5IGEgYnJvd24gcHVkZGluZyBnb25lIGJhZC4=" },
|
---|
1407 | { "They say that a black sheep has 3 bags full of wool.",
|
---|
1408 | "VGhleSBzYXkgdGhhdCBhIGJsYWNrIHNoZWVwIGhhcyAzIGJhZ3MgZnVsbCBvZiB3b29sLg==" },
|
---|
1409 | { "They say that a blank scroll is like a blank check.",
|
---|
1410 | "VGhleSBzYXkgdGhhdCBhIGJsYW5rIHNjcm9sbCBpcyBsaWtlIGEgYmxhbmsgY2hlY2su" },
|
---|
1411 | { "They say that a cat named Morris has nine lives.",
|
---|
1412 | "VGhleSBzYXkgdGhhdCBhIGNhdCBuYW1lZCBNb3JyaXMgaGFzIG5pbmUgbGl2ZXMu" },
|
---|
1413 | { "They say that a desperate shopper might pay any price in a shop.",
|
---|
1414 | "VGhleSBzYXkgdGhhdCBhIGRlc3BlcmF0ZSBzaG9wcGVyIG1pZ2h0IHBheSBhbnkgcHJpY2UgaW4gYSBzaG9wLg==" },
|
---|
1415 | { "They say that a diamond dog is everybody's best friend.",
|
---|
1416 | "VGhleSBzYXkgdGhhdCBhIGRpYW1vbmQgZG9nIGlzIGV2ZXJ5Ym9keSdzIGJlc3QgZnJpZW5kLg==" },
|
---|
1417 | { "They say that a dwarf lord can carry a pick-axe because his armor is light.",
|
---|
1418 | "VGhleSBzYXkgdGhhdCBhIGR3YXJmIGxvcmQgY2FuIGNhcnJ5IGEgcGljay1heGUgYmVjYXVzZSBoaXMgYXJtb3IgaXMgbGlnaHQu" },
|
---|
1419 | { "They say that a floating eye can defeat Medusa.",
|
---|
1420 | "VGhleSBzYXkgdGhhdCBhIGZsb2F0aW5nIGV5ZSBjYW4gZGVmZWF0IE1lZHVzYS4=" },
|
---|
1421 | { "They say that a fortune only has 1 line and you can't read between it.",
|
---|
1422 | "VGhleSBzYXkgdGhhdCBhIGZvcnR1bmUgb25seSBoYXMgMSBsaW5lIGFuZCB5b3UgY2FuJ3QgcmVhZCBiZXR3ZWVuIGl0Lg==" },
|
---|
1423 | { "They say that a fortune only has 1 line, but you can read between it.",
|
---|
1424 | "VGhleSBzYXkgdGhhdCBhIGZvcnR1bmUgb25seSBoYXMgMSBsaW5lLCBidXQgeW91IGNhbiByZWFkIGJldHdlZW4gaXQu" },
|
---|
1425 | { "They say that a fountain looks nothing like a regularly erupting geyser.",
|
---|
1426 | "VGhleSBzYXkgdGhhdCBhIGZvdW50YWluIGxvb2tzIG5vdGhpbmcgbGlrZSBhIHJlZ3VsYXJseSBlcnVwdGluZyBnZXlzZXIu" },
|
---|
1427 | { "They say that a gold doubloon is worth more than its weight in gold.",
|
---|
1428 | "VGhleSBzYXkgdGhhdCBhIGdvbGQgZG91Ymxvb24gaXMgd29ydGggbW9yZSB0aGFuIGl0cyB3ZWlnaHQgaW4gZ29sZC4=" },
|
---|
1429 | { "They say that a grid bug won't pay a shopkeeper for zapping you in a shop.",
|
---|
1430 | "VGhleSBzYXkgdGhhdCBhIGdyaWQgYnVnIHdvbid0IHBheSBhIHNob3BrZWVwZXIgZm9yIHphcHBpbmcgeW91IGluIGEgc2hvcC4=" },
|
---|
1431 | { "They say that a gypsy could tell your fortune for a price.",
|
---|
1432 | "VGhleSBzYXkgdGhhdCBhIGd5cHN5IGNvdWxkIHRlbGwgeW91ciBmb3J0dW5lIGZvciBhIHByaWNlLg==" },
|
---|
1433 | { "They say that a hacker named Alice once level teleported by using a mirror.",
|
---|
1434 | "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBBbGljZSBvbmNlIGxldmVsIHRlbGVwb3J0ZWQgYnkgdXNpbmcgYSBtaXJyb3Iu" },
|
---|
1435 | { "They say that a hacker named David once slew a giant with a sling and a rock.",
|
---|
1436 | "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBEYXZpZCBvbmNlIHNsZXcgYSBnaWFudCB3aXRoIGEgc2xpbmcgYW5kIGEgcm9jay4=" },
|
---|
1437 | { "They say that a hacker named Dorothy once rode a fog cloud to Oz.",
|
---|
1438 | "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBEb3JvdGh5IG9uY2Ugcm9kZSBhIGZvZyBjbG91ZCB0byBPei4=" },
|
---|
1439 | { "They say that a hacker named Mary once lost a white sheep in the mazes.",
|
---|
1440 | "VGhleSBzYXkgdGhhdCBhIGhhY2tlciBuYW1lZCBNYXJ5IG9uY2UgbG9zdCBhIHdoaXRlIHNoZWVwIGluIHRoZSBtYXplcy4=" },
|
---|
1441 | { "They say that a helm of brilliance is not to be taken lightly.",
|
---|
1442 | "VGhleSBzYXkgdGhhdCBhIGhlbG0gb2YgYnJpbGxpYW5jZSBpcyBub3QgdG8gYmUgdGFrZW4gbGlnaHRseS4=" },
|
---|
1443 | { "They say that a hot dog and a hell hound are the same thing.",
|
---|
1444 | "VGhleSBzYXkgdGhhdCBhIGhvdCBkb2cgYW5kIGEgaGVsbCBob3VuZCBhcmUgdGhlIHNhbWUgdGhpbmcu" },
|
---|
1445 | { "They say that a lamp named Aladdin's Lamp contains a djinni with 3 wishes.",
|
---|
1446 | "VGhleSBzYXkgdGhhdCBhIGxhbXAgbmFtZWQgQWxhZGRpbidzIExhbXAgY29udGFpbnMgYSBkamlubmkgd2l0aCAzIHdpc2hlcy4=" },
|
---|
1447 | { "They say that a large dog named Lassie will lead you to the amulet.",
|
---|
1448 | "VGhleSBzYXkgdGhhdCBhIGxhcmdlIGRvZyBuYW1lZCBMYXNzaWUgd2lsbCBsZWFkIHlvdSB0byB0aGUgYW11bGV0Lg==" },
|
---|
1449 | { "They say that a long sword is not a light sword.",
|
---|
1450 | "VGhleSBzYXkgdGhhdCBhIGxvbmcgc3dvcmQgaXMgbm90IGEgbGlnaHQgc3dvcmQu" },
|
---|
1451 | { "They say that a manes won't mince words with you.",
|
---|
1452 | "VGhleSBzYXkgdGhhdCBhIG1hbmVzIHdvbid0IG1pbmNlIHdvcmRzIHdpdGggeW91Lg==" },
|
---|
1453 | { "They say that a mind is a terrible thing to waste.",
|
---|
1454 | "VGhleSBzYXkgdGhhdCBhIG1pbmQgaXMgYSB0ZXJyaWJsZSB0aGluZyB0byB3YXN0ZS4=" },
|
---|
1455 | { "They say that a plain nymph will only wear a wire ring in one ear.",
|
---|
1456 | "VGhleSBzYXkgdGhhdCBhIHBsYWluIG55bXBoIHdpbGwgb25seSB3ZWFyIGEgd2lyZSByaW5nIGluIG9uZSBlYXIu" },
|
---|
1457 | { "They say that a plumed hat could be a previously used crested helmet.",
|
---|
1458 | "VGhleSBzYXkgdGhhdCBhIHBsdW1lZCBoYXQgY291bGQgYmUgYSBwcmV2aW91c2x5IHVzZWQgY3Jlc3RlZCBoZWxtZXQu" },
|
---|
1459 | { "They say that a potion of oil is difficult to grasp.",
|
---|
1460 | "VGhleSBzYXkgdGhhdCBhIHBvdGlvbiBvZiBvaWwgaXMgZGlmZmljdWx0IHRvIGdyYXNwLg==" },
|
---|
1461 | { "They say that a potion of yogurt is a cancelled potion of sickness.",
|
---|
1462 | "VGhleSBzYXkgdGhhdCBhIHBvdGlvbiBvZiB5b2d1cnQgaXMgYSBjYW5jZWxsZWQgcG90aW9uIG9mIHNpY2tuZXNzLg==" },
|
---|
1463 | { "They say that a purple worm is not a baby purple dragon.",
|
---|
1464 | "VGhleSBzYXkgdGhhdCBhIHB1cnBsZSB3b3JtIGlzIG5vdCBhIGJhYnkgcHVycGxlIGRyYWdvbi4=" },
|
---|
1465 | { "They say that a quivering blob tastes different than a gelatinous cube.",
|
---|
1466 | "VGhleSBzYXkgdGhhdCBhIHF1aXZlcmluZyBibG9iIHRhc3RlcyBkaWZmZXJlbnQgdGhhbiBhIGdlbGF0aW5vdXMgY3ViZS4=" },
|
---|
1467 | { "They say that a runed broadsword named Stormbringer attracts vortices.",
|
---|
1468 | "VGhleSBzYXkgdGhhdCBhIHJ1bmVkIGJyb2Fkc3dvcmQgbmFtZWQgU3Rvcm1icmluZ2VyIGF0dHJhY3RzIHZvcnRpY2VzLg==" },
|
---|
1469 | { "They say that a scroll of summoning has other names.",
|
---|
1470 | "VGhleSBzYXkgdGhhdCBhIHNjcm9sbCBvZiBzdW1tb25pbmcgaGFzIG90aGVyIG5hbWVzLg==" },
|
---|
1471 | { "They say that a shaman can bestow blessings but usually doesn't.",
|
---|
1472 | "VGhleSBzYXkgdGhhdCBhIHNoYW1hbiBjYW4gYmVzdG93IGJsZXNzaW5ncyBidXQgdXN1YWxseSBkb2Vzbid0Lg==" },
|
---|
1473 | { "They say that a shaman will bless you for an eye of newt and wing of bat.",
|
---|
1474 | "VGhleSBzYXkgdGhhdCBhIHNoYW1hbiB3aWxsIGJsZXNzIHlvdSBmb3IgYW4gZXllIG9mIG5ld3QgYW5kIHdpbmcgb2YgYmF0Lg==" },
|
---|
1475 | { "They say that a shimmering gold shield is not a polished silver shield.",
|
---|
1476 | "VGhleSBzYXkgdGhhdCBhIHNoaW1tZXJpbmcgZ29sZCBzaGllbGQgaXMgbm90IGEgcG9saXNoZWQgc2lsdmVyIHNoaWVsZC4=" },
|
---|
1477 | { "They say that a spear will hit a neo-otyugh. (Do YOU know what that is?)",
|
---|
1478 | "VGhleSBzYXkgdGhhdCBhIHNwZWFyIHdpbGwgaGl0IGEgbmVvLW90eXVnaC4gKERvIFlPVSBrbm93IHdoYXQgdGhhdCBpcz8p" },
|
---|
1479 | { "They say that a spotted dragon is the ultimate shape changer.",
|
---|
1480 | "VGhleSBzYXkgdGhhdCBhIHNwb3R0ZWQgZHJhZ29uIGlzIHRoZSB1bHRpbWF0ZSBzaGFwZSBjaGFuZ2VyLg==" },
|
---|
1481 | { "They say that a stethoscope is no good if you can only hear your heartbeat.",
|
---|
1482 | "VGhleSBzYXkgdGhhdCBhIHN0ZXRob3Njb3BlIGlzIG5vIGdvb2QgaWYgeW91IGNhbiBvbmx5IGhlYXIgeW91ciBoZWFydGJlYXQu" },
|
---|
1483 | { "They say that a succubus named Suzy will sometimes warn you of danger.",
|
---|
1484 | "VGhleSBzYXkgdGhhdCBhIHN1Y2N1YnVzIG5hbWVkIFN1enkgd2lsbCBzb21ldGltZXMgd2FybiB5b3Ugb2YgZGFuZ2VyLg==" },
|
---|
1485 | { "They say that a wand of cancellation is not like a wand of polymorph.",
|
---|
1486 | "VGhleSBzYXkgdGhhdCBhIHdhbmQgb2YgY2FuY2VsbGF0aW9uIGlzIG5vdCBsaWtlIGEgd2FuZCBvZiBwb2x5bW9ycGgu" },
|
---|
1487 | { "They say that a wood golem named Pinocchio would be easy to control.",
|
---|
1488 | "VGhleSBzYXkgdGhhdCBhIHdvb2QgZ29sZW0gbmFtZWQgUGlub2NjaGlvIHdvdWxkIGJlIGVhc3kgdG8gY29udHJvbC4=" },
|
---|
1489 | { "They say that after killing a dragon it's time for a change of scenery.",
|
---|
1490 | "VGhleSBzYXkgdGhhdCBhZnRlciBraWxsaW5nIGEgZHJhZ29uIGl0J3MgdGltZSBmb3IgYSBjaGFuZ2Ugb2Ygc2NlbmVyeS4=" },
|
---|
1491 | { "They say that an amulet of strangulation is worse than ring around the collar.",
|
---|
1492 | "VGhleSBzYXkgdGhhdCBhbiBhbXVsZXQgb2Ygc3RyYW5ndWxhdGlvbiBpcyB3b3JzZSB0aGFuIHJpbmcgYXJvdW5kIHRoZSBjb2xsYXIu" },
|
---|
1493 | { "They say that an attic is the best place to hide your toys.",
|
---|
1494 | "VGhleSBzYXkgdGhhdCBhbiBhdHRpYyBpcyB0aGUgYmVzdCBwbGFjZSB0byBoaWRlIHlvdXIgdG95cy4=" },
|
---|
1495 | { "They say that an axe named Cleaver once belonged to a hacker named Beaver.",
|
---|
1496 | "VGhleSBzYXkgdGhhdCBhbiBheGUgbmFtZWQgQ2xlYXZlciBvbmNlIGJlbG9uZ2VkIHRvIGEgaGFja2VyIG5hbWVkIEJlYXZlci4=" },
|
---|
1497 | { "They say that an eye of newt and a wing of bat are double the trouble.",
|
---|
1498 | "VGhleSBzYXkgdGhhdCBhbiBleWUgb2YgbmV3dCBhbmQgYSB3aW5nIG9mIGJhdCBhcmUgZG91YmxlIHRoZSB0cm91YmxlLg==" },
|
---|
1499 | { "They say that an incubus named Izzy sometimes makes women feel sensitive.",
|
---|
1500 | "VGhleSBzYXkgdGhhdCBhbiBpbmN1YnVzIG5hbWVkIEl6enkgc29tZXRpbWVzIG1ha2VzIHdvbWVuIGZlZWwgc2Vuc2l0aXZlLg==" },
|
---|
1501 | { "They say that an opulent throne room is rarely a place to wish you'd be in.",
|
---|
1502 | "VGhleSBzYXkgdGhhdCBhbiBvcHVsZW50IHRocm9uZSByb29tIGlzIHJhcmVseSBhIHBsYWNlIHRvIHdpc2ggeW91J2QgYmUgaW4u" },
|
---|
1503 | { "They say that an unlucky hacker once had a nose bleed at an altar and died.",
|
---|
1504 | "VGhleSBzYXkgdGhhdCBhbiB1bmx1Y2t5IGhhY2tlciBvbmNlIGhhZCBhIG5vc2UgYmxlZWQgYXQgYW4gYWx0YXIgYW5kIGRpZWQu" },
|
---|
1505 | { "They say that and they say this but they never say never, never!",
|
---|
1506 | "VGhleSBzYXkgdGhhdCBhbmQgdGhleSBzYXkgdGhpcyBidXQgdGhleSBuZXZlciBzYXkgbmV2ZXIsIG5ldmVyIQ==" },
|
---|
1507 | { "They say that any quantum mechanic knows that speed kills.",
|
---|
1508 | "VGhleSBzYXkgdGhhdCBhbnkgcXVhbnR1bSBtZWNoYW5pYyBrbm93cyB0aGF0IHNwZWVkIGtpbGxzLg==" },
|
---|
1509 | { "They say that applying a unicorn horn means you've missed the point.",
|
---|
1510 | "VGhleSBzYXkgdGhhdCBhcHBseWluZyBhIHVuaWNvcm4gaG9ybiBtZWFucyB5b3UndmUgbWlzc2VkIHRoZSBwb2ludC4=" },
|
---|
1511 | { "They say that blue stones are radioactive, beware.",
|
---|
1512 | "VGhleSBzYXkgdGhhdCBibHVlIHN0b25lcyBhcmUgcmFkaW9hY3RpdmUsIGJld2FyZS4=" },
|
---|
1513 | { "They say that building a dungeon is a team effort.",
|
---|
1514 | "VGhleSBzYXkgdGhhdCBidWlsZGluZyBhIGR1bmdlb24gaXMgYSB0ZWFtIGVmZm9ydC4=" },
|
---|
1515 | { "They say that chaotic characters never get a kick out of altars.",
|
---|
1516 | "VGhleSBzYXkgdGhhdCBjaGFvdGljIGNoYXJhY3RlcnMgbmV2ZXIgZ2V0IGEga2ljayBvdXQgb2YgYWx0YXJzLg==" },
|
---|
1517 | { "They say that collapsing a dungeon often creates a panic.",
|
---|
1518 | "VGhleSBzYXkgdGhhdCBjb2xsYXBzaW5nIGEgZHVuZ2VvbiBvZnRlbiBjcmVhdGVzIGEgcGFuaWMu" },
|
---|
1519 | { "They say that counting your eggs before they hatch shows that you care.",
|
---|
1520 | "VGhleSBzYXkgdGhhdCBjb3VudGluZyB5b3VyIGVnZ3MgYmVmb3JlIHRoZXkgaGF0Y2ggc2hvd3MgdGhhdCB5b3UgY2FyZS4=" },
|
---|
1521 | { "They say that dipping a bag of tricks in a fountain won't make it an icebox.",
|
---|
1522 | "VGhleSBzYXkgdGhhdCBkaXBwaW5nIGEgYmFnIG9mIHRyaWNrcyBpbiBhIGZvdW50YWluIHdvbid0IG1ha2UgaXQgYW4gaWNlYm94Lg==" },
|
---|
1523 | { "They say that dipping an eel and brown mold in hot water makes bouillabaisse.",
|
---|
1524 | "VGhleSBzYXkgdGhhdCBkaXBwaW5nIGFuIGVlbCBhbmQgYnJvd24gbW9sZCBpbiBob3Qgd2F0ZXIgbWFrZXMgYm91aWxsYWJhaXNzZS4=" },
|
---|
1525 | { "They say that donating a doubloon is extremely pious charity.",
|
---|
1526 | "VGhleSBzYXkgdGhhdCBkb25hdGluZyBhIGRvdWJsb29uIGlzIGV4dHJlbWVseSBwaW91cyBjaGFyaXR5Lg==" },
|
---|
1527 | { "They say that eating royal jelly attracts grizzly owlbears.",
|
---|
1528 | "VGhleSBzYXkgdGhhdCBlYXRpbmcgcm95YWwgamVsbHkgYXR0cmFjdHMgZ3JpenpseSBvd2xiZWFycy4=" },
|
---|
1529 | { "They say that eggs, pancakes and juice are just a mundane breakfast.",
|
---|
1530 | "VGhleSBzYXkgdGhhdCBlZ2dzLCBwYW5jYWtlcyBhbmQganVpY2UgYXJlIGp1c3QgYSBtdW5kYW5lIGJyZWFrZmFzdC4=" },
|
---|
1531 | { "They say that everyone knows why Medusa stands alone in the dark.",
|
---|
1532 | "VGhleSBzYXkgdGhhdCBldmVyeW9uZSBrbm93cyB3aHkgTWVkdXNhIHN0YW5kcyBhbG9uZSBpbiB0aGUgZGFyay4=" },
|
---|
1533 | { "They say that everyone wanted rec.games.hack to undergo a name change.",
|
---|
1534 | "VGhleSBzYXkgdGhhdCBldmVyeW9uZSB3YW50ZWQgcmVjLmdhbWVzLmhhY2sgdG8gdW5kZXJnbyBhIG5hbWUgY2hhbmdlLg==" },
|
---|
1535 | { "They say that finding a winning strategy is a deliberate move on your part.",
|
---|
1536 | "VGhleSBzYXkgdGhhdCBmaW5kaW5nIGEgd2lubmluZyBzdHJhdGVneSBpcyBhIGRlbGliZXJhdGUgbW92ZSBvbiB5b3VyIHBhcnQu" },
|
---|
1537 | { "They say that finding worthless glass is worth something.",
|
---|
1538 | "VGhleSBzYXkgdGhhdCBmaW5kaW5nIHdvcnRobGVzcyBnbGFzcyBpcyB3b3J0aCBzb21ldGhpbmcu" },
|
---|
1539 | { "They say that fortune cookies are food for thought.",
|
---|
1540 | "VGhleSBzYXkgdGhhdCBmb3J0dW5lIGNvb2tpZXMgYXJlIGZvb2QgZm9yIHRob3VnaHQu" },
|
---|
1541 | { "They say that gold is only wasted on a pet dragon.",
|
---|
1542 | "VGhleSBzYXkgdGhhdCBnb2xkIGlzIG9ubHkgd2FzdGVkIG9uIGEgcGV0IGRyYWdvbi4=" },
|
---|
1543 | { "They say that good things come to those that wait.",
|
---|
1544 | "VGhleSBzYXkgdGhhdCBnb29kIHRoaW5ncyBjb21lIHRvIHRob3NlIHRoYXQgd2FpdC4=" },
|
---|
1545 | { "They say that greased objects will slip out of monsters' hands.",
|
---|
1546 | "VGhleSBzYXkgdGhhdCBncmVhc2VkIG9iamVjdHMgd2lsbCBzbGlwIG91dCBvZiBtb25zdGVycycgaGFuZHMu" },
|
---|
1547 | { "They say that if you can't spell then you'll wish you had a spell book.",
|
---|
1548 | "VGhleSBzYXkgdGhhdCBpZiB5b3UgY2FuJ3Qgc3BlbGwgdGhlbiB5b3UnbGwgd2lzaCB5b3UgaGFkIGEgc3BlbGwgYm9vay4=" },
|
---|
1549 | { "They say that if you live by the sword, you'll die by the sword.",
|
---|
1550 | "VGhleSBzYXkgdGhhdCBpZiB5b3UgbGl2ZSBieSB0aGUgc3dvcmQsIHlvdSdsbCBkaWUgYnkgdGhlIHN3b3JkLg==" },
|
---|
1551 | { "They say that if you play like a monster you'll have a better game.",
|
---|
1552 | "VGhleSBzYXkgdGhhdCBpZiB5b3UgcGxheSBsaWtlIGEgbW9uc3RlciB5b3UnbGwgaGF2ZSBhIGJldHRlciBnYW1lLg==" },
|
---|
1553 | { "They say that if you sleep with a demon you might awake with a headache.",
|
---|
1554 | "VGhleSBzYXkgdGhhdCBpZiB5b3Ugc2xlZXAgd2l0aCBhIGRlbW9uIHlvdSBtaWdodCBhd2FrZSB3aXRoIGEgaGVhZGFjaGUu" },
|
---|
1555 | { "They say that if you step on a crack you could break your mother's back.",
|
---|
1556 | "VGhleSBzYXkgdGhhdCBpZiB5b3Ugc3RlcCBvbiBhIGNyYWNrIHlvdSBjb3VsZCBicmVhayB5b3VyIG1vdGhlcidzIGJhY2su" },
|
---|
1557 | { "They say that if you're invisible you can still be heard!",
|
---|
1558 | "VGhleSBzYXkgdGhhdCBpZiB5b3UncmUgaW52aXNpYmxlIHlvdSBjYW4gc3RpbGwgYmUgaGVhcmQh" },
|
---|
1559 | { "They say that if you're lucky you can feel the runes on a scroll.",
|
---|
1560 | "VGhleSBzYXkgdGhhdCBpZiB5b3UncmUgbHVja3kgeW91IGNhbiBmZWVsIHRoZSBydW5lcyBvbiBhIHNjcm9sbC4=" },
|
---|
1561 | { "They say that in the big picture gold is only small change.",
|
---|
1562 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgYmlnIHBpY3R1cmUgZ29sZCBpcyBvbmx5IHNtYWxsIGNoYW5nZS4=" },
|
---|
1563 | { "They say that in the dungeon it's not what you know that really matters.",
|
---|
1564 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiBpdCdzIG5vdCB3aGF0IHlvdSBrbm93IHRoYXQgcmVhbGx5IG1hdHRlcnMu" },
|
---|
1565 | { "They say that in the dungeon moon rocks are really dilithium crystals.",
|
---|
1566 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiBtb29uIHJvY2tzIGFyZSByZWFsbHkgZGlsaXRoaXVtIGNyeXN0YWxzLg==" },
|
---|
1567 | { "They say that in the dungeon the boorish customer is never right.",
|
---|
1568 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB0aGUgYm9vcmlzaCBjdXN0b21lciBpcyBuZXZlciByaWdodC4=" },
|
---|
1569 | { "They say that in the dungeon you don't need a watch to tell time.",
|
---|
1570 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3UgZG9uJ3QgbmVlZCBhIHdhdGNoIHRvIHRlbGwgdGltZS4=" },
|
---|
1571 | { "They say that in the dungeon you need something old, new, burrowed and blue.",
|
---|
1572 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3UgbmVlZCBzb21ldGhpbmcgb2xkLCBuZXcsIGJ1cnJvd2VkIGFuZCBibHVlLg==" },
|
---|
1573 | { "They say that in the dungeon you should always count your blessings.",
|
---|
1574 | "VGhleSBzYXkgdGhhdCBpbiB0aGUgZHVuZ2VvbiB5b3Ugc2hvdWxkIGFsd2F5cyBjb3VudCB5b3VyIGJsZXNzaW5ncy4=" },
|
---|
1575 | { "They say that iron golem plate mail isn't worth wishing for.",
|
---|
1576 | "VGhleSBzYXkgdGhhdCBpcm9uIGdvbGVtIHBsYXRlIG1haWwgaXNuJ3Qgd29ydGggd2lzaGluZyBmb3Iu" },
|
---|
1577 | { "They say that it takes four quarterstaffs to make one staff.",
|
---|
1578 | "VGhleSBzYXkgdGhhdCBpdCB0YWtlcyBmb3VyIHF1YXJ0ZXJzdGFmZnMgdG8gbWFrZSBvbmUgc3RhZmYu" },
|
---|
1579 | { "They say that it's not over till the fat ladies sing.",
|
---|
1580 | "VGhleSBzYXkgdGhhdCBpdCdzIG5vdCBvdmVyIHRpbGwgdGhlIGZhdCBsYWRpZXMgc2luZy4=" },
|
---|
1581 | { "They say that it's not over till the fat lady shouts `Off with its head'.",
|
---|
1582 | "VGhleSBzYXkgdGhhdCBpdCdzIG5vdCBvdmVyIHRpbGwgdGhlIGZhdCBsYWR5IHNob3V0cyBgT2ZmIHdpdGggaXRzIGhlYWQnLg==" },
|
---|
1583 | { "They say that kicking a heavy statue is really a dumb move.",
|
---|
1584 | "VGhleSBzYXkgdGhhdCBraWNraW5nIGEgaGVhdnkgc3RhdHVlIGlzIHJlYWxseSBhIGR1bWIgbW92ZS4=" },
|
---|
1585 | { "They say that kicking a valuable gem doesn't seem to make sense.",
|
---|
1586 | "VGhleSBzYXkgdGhhdCBraWNraW5nIGEgdmFsdWFibGUgZ2VtIGRvZXNuJ3Qgc2VlbSB0byBtYWtlIHNlbnNlLg==" },
|
---|
1587 | { "They say that leprechauns know Latin and you should too.",
|
---|
1588 | "VGhleSBzYXkgdGhhdCBsZXByZWNoYXVucyBrbm93IExhdGluIGFuZCB5b3Ugc2hvdWxkIHRvby4=" },
|
---|
1589 | { "They say that minotaurs get lost outside of the mazes.",
|
---|
1590 | "VGhleSBzYXkgdGhhdCBtaW5vdGF1cnMgZ2V0IGxvc3Qgb3V0c2lkZSBvZiB0aGUgbWF6ZXMu" },
|
---|
1591 | { "They say that most trolls are born again.",
|
---|
1592 | "VGhleSBzYXkgdGhhdCBtb3N0IHRyb2xscyBhcmUgYm9ybiBhZ2Fpbi4=" },
|
---|
1593 | { "They say that naming your cat Garfield will make you more attractive.",
|
---|
1594 | "VGhleSBzYXkgdGhhdCBuYW1pbmcgeW91ciBjYXQgR2FyZmllbGQgd2lsbCBtYWtlIHlvdSBtb3JlIGF0dHJhY3RpdmUu" },
|
---|
1595 | { "They say that no one knows everything about everything in the dungeon.",
|
---|
1596 | "VGhleSBzYXkgdGhhdCBubyBvbmUga25vd3MgZXZlcnl0aGluZyBhYm91dCBldmVyeXRoaW5nIGluIHRoZSBkdW5nZW9uLg==" },
|
---|
1597 | { "They say that no one plays NetHack just for the fun of it.",
|
---|
1598 | "VGhleSBzYXkgdGhhdCBubyBvbmUgcGxheXMgTmV0SGFjayBqdXN0IGZvciB0aGUgZnVuIG9mIGl0Lg==" },
|
---|
1599 | { "They say that no one really subscribes to rec.games.roguelike.nethack.",
|
---|
1600 | "VGhleSBzYXkgdGhhdCBubyBvbmUgcmVhbGx5IHN1YnNjcmliZXMgdG8gcmVjLmdhbWVzLnJvZ3VlbGlrZS5uZXRoYWNrLg==" },
|
---|
1601 | { "They say that no one will admit to starting a rumor.",
|
---|
1602 | "VGhleSBzYXkgdGhhdCBubyBvbmUgd2lsbCBhZG1pdCB0byBzdGFydGluZyBhIHJ1bW9yLg==" },
|
---|
1603 | { "They say that nurses sometimes carry scalpels and never use them.",
|
---|
1604 | "VGhleSBzYXkgdGhhdCBudXJzZXMgc29tZXRpbWVzIGNhcnJ5IHNjYWxwZWxzIGFuZCBuZXZlciB1c2UgdGhlbS4=" },
|
---|
1605 | { "They say that once you've met one wizard you've met them all.",
|
---|
1606 | "VGhleSBzYXkgdGhhdCBvbmNlIHlvdSd2ZSBtZXQgb25lIHdpemFyZCB5b3UndmUgbWV0IHRoZW0gYWxsLg==" },
|
---|
1607 | { "They say that one troll is worth 10,000 newts.",
|
---|
1608 | "VGhleSBzYXkgdGhhdCBvbmUgdHJvbGwgaXMgd29ydGggMTAsMDAwIG5ld3RzLg==" },
|
---|
1609 | { "They say that only David can find the zoo!",
|
---|
1610 | "VGhleSBzYXkgdGhhdCBvbmx5IERhdmlkIGNhbiBmaW5kIHRoZSB6b28h" },
|
---|
1611 | { "They say that only angels play their harps for their pets.",
|
---|
1612 | "VGhleSBzYXkgdGhhdCBvbmx5IGFuZ2VscyBwbGF5IHRoZWlyIGhhcnBzIGZvciB0aGVpciBwZXRzLg==" },
|
---|
1613 | { "They say that only big spenders carry gold.",
|
---|
1614 | "VGhleSBzYXkgdGhhdCBvbmx5IGJpZyBzcGVuZGVycyBjYXJyeSBnb2xkLg==" },
|
---|
1615 | { "They say that orc shamans are healthy, wealthy and wise.",
|
---|
1616 | "VGhleSBzYXkgdGhhdCBvcmMgc2hhbWFucyBhcmUgaGVhbHRoeSwgd2VhbHRoeSBhbmQgd2lzZS4=" },
|
---|
1617 | { "They say that playing NetHack is like walking into a death trap.",
|
---|
1618 | "VGhleSBzYXkgdGhhdCBwbGF5aW5nIE5ldEhhY2sgaXMgbGlrZSB3YWxraW5nIGludG8gYSBkZWF0aCB0cmFwLg==" },
|
---|
1619 | { "They say that problem breathing is best treated by a proper diet.",
|
---|
1620 | "VGhleSBzYXkgdGhhdCBwcm9ibGVtIGJyZWF0aGluZyBpcyBiZXN0IHRyZWF0ZWQgYnkgYSBwcm9wZXIgZGlldC4=" },
|
---|
1621 | { "They say that quaffing many potions of levitation can give you a headache.",
|
---|
1622 | "VGhleSBzYXkgdGhhdCBxdWFmZmluZyBtYW55IHBvdGlvbnMgb2YgbGV2aXRhdGlvbiBjYW4gZ2l2ZSB5b3UgYSBoZWFkYWNoZS4=" },
|
---|
1623 | { "They say that queen bees get that way by eating royal jelly.",
|
---|
1624 | "VGhleSBzYXkgdGhhdCBxdWVlbiBiZWVzIGdldCB0aGF0IHdheSBieSBlYXRpbmcgcm95YWwgamVsbHku" },
|
---|
1625 | { "They say that reading a scare monster scroll is the same as saying Elbereth.",
|
---|
1626 | "VGhleSBzYXkgdGhhdCByZWFkaW5nIGEgc2NhcmUgbW9uc3RlciBzY3JvbGwgaXMgdGhlIHNhbWUgYXMgc2F5aW5nIEVsYmVyZXRoLg==" },
|
---|
1627 | { "They say that real hackers always are controlled.",
|
---|
1628 | "VGhleSBzYXkgdGhhdCByZWFsIGhhY2tlcnMgYWx3YXlzIGFyZSBjb250cm9sbGVkLg==" },
|
---|
1629 | { "They say that real hackers never sleep.",
|
---|
1630 | "VGhleSBzYXkgdGhhdCByZWFsIGhhY2tlcnMgbmV2ZXIgc2xlZXAu" },
|
---|
1631 | { "They say that shopkeepers are insured by Croesus himself!",
|
---|
1632 | "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBhcmUgaW5zdXJlZCBieSBDcm9lc3VzIGhpbXNlbGYh" },
|
---|
1633 | { "They say that shopkeepers never carry more than 20 gold pieces, at night.",
|
---|
1634 | "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBuZXZlciBjYXJyeSBtb3JlIHRoYW4gMjAgZ29sZCBwaWVjZXMsIGF0IG5pZ2h0Lg==" },
|
---|
1635 | { "They say that shopkeepers never sell blessed potions of invisibility.",
|
---|
1636 | "VGhleSBzYXkgdGhhdCBzaG9wa2VlcGVycyBuZXZlciBzZWxsIGJsZXNzZWQgcG90aW9ucyBvZiBpbnZpc2liaWxpdHku" },
|
---|
1637 | { "They say that soldiers wear kid gloves and silly helmets.",
|
---|
1638 | "VGhleSBzYXkgdGhhdCBzb2xkaWVycyB3ZWFyIGtpZCBnbG92ZXMgYW5kIHNpbGx5IGhlbG1ldHMu" },
|
---|
1639 | { "They say that some Kops are on the take.",
|
---|
1640 | "VGhleSBzYXkgdGhhdCBzb21lIEtvcHMgYXJlIG9uIHRoZSB0YWtlLg==" },
|
---|
1641 | { "They say that some guards' palms can be greased.",
|
---|
1642 | "VGhleSBzYXkgdGhhdCBzb21lIGd1YXJkcycgcGFsbXMgY2FuIGJlIGdyZWFzZWQu" },
|
---|
1643 | { "They say that some monsters may kiss your boots to stop your drum playing.",
|
---|
1644 | "VGhleSBzYXkgdGhhdCBzb21lIG1vbnN0ZXJzIG1heSBraXNzIHlvdXIgYm9vdHMgdG8gc3RvcCB5b3VyIGRydW0gcGxheWluZy4=" },
|
---|
1645 | { "They say that sometimes you can be the hit of the party when playing a horn.",
|
---|
1646 | "VGhleSBzYXkgdGhhdCBzb21ldGltZXMgeW91IGNhbiBiZSB0aGUgaGl0IG9mIHRoZSBwYXJ0eSB3aGVuIHBsYXlpbmcgYSBob3JuLg==" },
|
---|
1647 | { "They say that the NetHack gods generally welcome your sacrifices.",
|
---|
1648 | "VGhleSBzYXkgdGhhdCB0aGUgTmV0SGFjayBnb2RzIGdlbmVyYWxseSB3ZWxjb21lIHlvdXIgc2FjcmlmaWNlcy4=" },
|
---|
1649 | { "They say that the Three Rings are named Vilya, Nenya and Narya.",
|
---|
1650 | "VGhleSBzYXkgdGhhdCB0aGUgVGhyZWUgUmluZ3MgYXJlIG5hbWVkIFZpbHlhLCBOZW55YSBhbmQgTmFyeWEu" },
|
---|
1651 | { "They say that the Wizard of Yendor has a death wish.",
|
---|
1652 | "VGhleSBzYXkgdGhhdCB0aGUgV2l6YXJkIG9mIFllbmRvciBoYXMgYSBkZWF0aCB3aXNoLg==" },
|
---|
1653 | { "They say that the `hair of the dog' is sometimes an effective remedy.",
|
---|
1654 | "VGhleSBzYXkgdGhhdCB0aGUgYGhhaXIgb2YgdGhlIGRvZycgaXMgc29tZXRpbWVzIGFuIGVmZmVjdGl2ZSByZW1lZHku" },
|
---|
1655 | { "They say that the best time to save your game is now before its too late.",
|
---|
1656 | "VGhleSBzYXkgdGhhdCB0aGUgYmVzdCB0aW1lIHRvIHNhdmUgeW91ciBnYW1lIGlzIG5vdyBiZWZvcmUgaXRzIHRvbyBsYXRlLg==" },
|
---|
1657 | { "They say that the biggest obstacle in NetHack is your mind.",
|
---|
1658 | "VGhleSBzYXkgdGhhdCB0aGUgYmlnZ2VzdCBvYnN0YWNsZSBpbiBOZXRIYWNrIGlzIHlvdXIgbWluZC4=" },
|
---|
1659 | { "They say that the gods are angry when they hit you with objects.",
|
---|
1660 | "VGhleSBzYXkgdGhhdCB0aGUgZ29kcyBhcmUgYW5ncnkgd2hlbiB0aGV5IGhpdCB5b3Ugd2l0aCBvYmplY3RzLg==" },
|
---|
1661 | { "They say that the priesthood are specially favored by the gods.",
|
---|
1662 | "VGhleSBzYXkgdGhhdCB0aGUgcHJpZXN0aG9vZCBhcmUgc3BlY2lhbGx5IGZhdm9yZWQgYnkgdGhlIGdvZHMu" },
|
---|
1663 | { "They say that the way to make a unicorn happy is to give it what it wants.",
|
---|
1664 | "VGhleSBzYXkgdGhhdCB0aGUgd2F5IHRvIG1ha2UgYSB1bmljb3JuIGhhcHB5IGlzIHRvIGdpdmUgaXQgd2hhdCBpdCB3YW50cy4=" },
|
---|
1665 | { "They say that there are no black or white stones, only gray.",
|
---|
1666 | "VGhleSBzYXkgdGhhdCB0aGVyZSBhcmUgbm8gYmxhY2sgb3Igd2hpdGUgc3RvbmVzLCBvbmx5IGdyYXku" },
|
---|
1667 | { "They say that there are no skeletons hence there are no skeleton keys.",
|
---|
1668 | "VGhleSBzYXkgdGhhdCB0aGVyZSBhcmUgbm8gc2tlbGV0b25zIGhlbmNlIHRoZXJlIGFyZSBubyBza2VsZXRvbiBrZXlzLg==" },
|
---|
1669 | { "They say that there is a clever rogue in every hacker just dying to escape.",
|
---|
1670 | "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBhIGNsZXZlciByb2d1ZSBpbiBldmVyeSBoYWNrZXIganVzdCBkeWluZyB0byBlc2NhcGUu" },
|
---|
1671 | { "They say that there is no such thing as free advice.",
|
---|
1672 | "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBubyBzdWNoIHRoaW5nIGFzIGZyZWUgYWR2aWNlLg==" },
|
---|
1673 | { "They say that there is only one way to win at NetHack.",
|
---|
1674 | "VGhleSBzYXkgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSB3YXkgdG8gd2luIGF0IE5ldEhhY2su" },
|
---|
1675 | { "They say that there once was a fearsome chaotic samurai named Luk No.",
|
---|
1676 | "VGhleSBzYXkgdGhhdCB0aGVyZSBvbmNlIHdhcyBhIGZlYXJzb21lIGNoYW90aWMgc2FtdXJhaSBuYW1lZCBMdWsgTm8u" },
|
---|
1677 | { "They say that there was a time when cursed holy water wasn't water.",
|
---|
1678 | "VGhleSBzYXkgdGhhdCB0aGVyZSB3YXMgYSB0aW1lIHdoZW4gY3Vyc2VkIGhvbHkgd2F0ZXIgd2Fzbid0IHdhdGVyLg==" },
|
---|
1679 | { "They say that there's no point in crying over a gray ooze.",
|
---|
1680 | "VGhleSBzYXkgdGhhdCB0aGVyZSdzIG5vIHBvaW50IGluIGNyeWluZyBvdmVyIGEgZ3JheSBvb3plLg==" },
|
---|
1681 | { "They say that there's only hope left after you've opened Pandora's box.",
|
---|
1682 | "VGhleSBzYXkgdGhhdCB0aGVyZSdzIG9ubHkgaG9wZSBsZWZ0IGFmdGVyIHlvdSd2ZSBvcGVuZWQgUGFuZG9yYSdzIGJveC4=" },
|
---|
1683 | { "They say that trapdoors should always be marked `Caution: Trap Door'.",
|
---|
1684 | "VGhleSBzYXkgdGhhdCB0cmFwZG9vcnMgc2hvdWxkIGFsd2F5cyBiZSBtYXJrZWQgYENhdXRpb246IFRyYXAgRG9vcicu" },
|
---|
1685 | { "They say that using an amulet of change isn't a difficult operation.",
|
---|
1686 | "VGhleSBzYXkgdGhhdCB1c2luZyBhbiBhbXVsZXQgb2YgY2hhbmdlIGlzbid0IGEgZGlmZmljdWx0IG9wZXJhdGlvbi4=" },
|
---|
1687 | { "They say that water walking boots are better if you are fast like Hermes.",
|
---|
1688 | "VGhleSBzYXkgdGhhdCB3YXRlciB3YWxraW5nIGJvb3RzIGFyZSBiZXR0ZXIgaWYgeW91IGFyZSBmYXN0IGxpa2UgSGVybWVzLg==" },
|
---|
1689 | { "They say that when you wear a circular amulet you might resemble a troll.",
|
---|
1690 | "VGhleSBzYXkgdGhhdCB3aGVuIHlvdSB3ZWFyIGEgY2lyY3VsYXIgYW11bGV0IHlvdSBtaWdodCByZXNlbWJsZSBhIHRyb2xsLg==" },
|
---|
1691 | { "They say that when you're hungry you can get a pizza in 30 moves or it's free.",
|
---|
1692 | "VGhleSBzYXkgdGhhdCB3aGVuIHlvdSdyZSBodW5ncnkgeW91IGNhbiBnZXQgYSBwaXp6YSBpbiAzMCBtb3ZlcyBvciBpdCdzIGZyZWUu" },
|
---|
1693 | { "They say that when your god is angry you should try another one.",
|
---|
1694 | "VGhleSBzYXkgdGhhdCB3aGVuIHlvdXIgZ29kIGlzIGFuZ3J5IHlvdSBzaG91bGQgdHJ5IGFub3RoZXIgb25lLg==" },
|
---|
1695 | { "They say that wielding a unicorn horn takes strength.",
|
---|
1696 | "VGhleSBzYXkgdGhhdCB3aWVsZGluZyBhIHVuaWNvcm4gaG9ybiB0YWtlcyBzdHJlbmd0aC4=" },
|
---|
1697 | { "They say that with speed boots you never worry about hit and run accidents.",
|
---|
1698 | "VGhleSBzYXkgdGhhdCB3aXRoIHNwZWVkIGJvb3RzIHlvdSBuZXZlciB3b3JyeSBhYm91dCBoaXQgYW5kIHJ1biBhY2NpZGVudHMu" },
|
---|
1699 | { "They say that you can defeat a killer bee with a unicorn horn.",
|
---|
1700 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIGRlZmVhdCBhIGtpbGxlciBiZWUgd2l0aCBhIHVuaWNvcm4gaG9ybi4=" },
|
---|
1701 | { "They say that you can only cross the River Styx in Charon's boat.",
|
---|
1702 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkgY3Jvc3MgdGhlIFJpdmVyIFN0eXggaW4gQ2hhcm9uJ3MgYm9hdC4=" },
|
---|
1703 | { "They say that you can only kill a lich once and then you'd better be careful.",
|
---|
1704 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkga2lsbCBhIGxpY2ggb25jZSBhbmQgdGhlbiB5b3UnZCBiZXR0ZXIgYmUgY2FyZWZ1bC4=" },
|
---|
1705 | { "They say that you can only wish for things you've already had.",
|
---|
1706 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIG9ubHkgd2lzaCBmb3IgdGhpbmdzIHlvdSd2ZSBhbHJlYWR5IGhhZC4=" },
|
---|
1707 | { "They say that you can train a cat by talking gently to it.",
|
---|
1708 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRyYWluIGEgY2F0IGJ5IHRhbGtpbmcgZ2VudGx5IHRvIGl0Lg==" },
|
---|
1709 | { "They say that you can train a dog by talking firmly to it.",
|
---|
1710 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRyYWluIGEgZG9nIGJ5IHRhbGtpbmcgZmlybWx5IHRvIGl0Lg==" },
|
---|
1711 | { "They say that you can trust your gold with the king.",
|
---|
1712 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuIHRydXN0IHlvdXIgZ29sZCB3aXRoIHRoZSBraW5nLg==" },
|
---|
1713 | { "They say that you can't wipe your greasy bare hands on a blank scroll.",
|
---|
1714 | "VGhleSBzYXkgdGhhdCB5b3UgY2FuJ3Qgd2lwZSB5b3VyIGdyZWFzeSBiYXJlIGhhbmRzIG9uIGEgYmxhbmsgc2Nyb2xsLg==" },
|
---|
1715 | { "They say that you cannot trust scrolls of rumor.",
|
---|
1716 | "VGhleSBzYXkgdGhhdCB5b3UgY2Fubm90IHRydXN0IHNjcm9sbHMgb2YgcnVtb3Iu" },
|
---|
1717 | { "They say that you could fall head over heels for an energy vortex.",
|
---|
1718 | "VGhleSBzYXkgdGhhdCB5b3UgY291bGQgZmFsbCBoZWFkIG92ZXIgaGVlbHMgZm9yIGFuIGVuZXJneSB2b3J0ZXgu" },
|
---|
1719 | { "They say that you need a key in order to open locked doors.",
|
---|
1720 | "VGhleSBzYXkgdGhhdCB5b3UgbmVlZCBhIGtleSBpbiBvcmRlciB0byBvcGVuIGxvY2tlZCBkb29ycy4=" },
|
---|
1721 | { "They say that you need a mirror to notice a mimic in an antique shop.",
|
---|
1722 | "VGhleSBzYXkgdGhhdCB5b3UgbmVlZCBhIG1pcnJvciB0byBub3RpY2UgYSBtaW1pYyBpbiBhbiBhbnRpcXVlIHNob3Au" },
|
---|
1723 | { "They say that you really can use a pick-axe unless you really can't.",
|
---|
1724 | "VGhleSBzYXkgdGhhdCB5b3UgcmVhbGx5IGNhbiB1c2UgYSBwaWNrLWF4ZSB1bmxlc3MgeW91IHJlYWxseSBjYW4ndC4=" },
|
---|
1725 | { "They say that you should always store your tools in the cellar.",
|
---|
1726 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGFsd2F5cyBzdG9yZSB5b3VyIHRvb2xzIGluIHRoZSBjZWxsYXIu" },
|
---|
1727 | { "They say that you should be careful while climbing the ladder to success.",
|
---|
1728 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGJlIGNhcmVmdWwgd2hpbGUgY2xpbWJpbmcgdGhlIGxhZGRlciB0byBzdWNjZXNzLg==" },
|
---|
1729 | { "They say that you should call your armor `rustproof'.",
|
---|
1730 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIGNhbGwgeW91ciBhcm1vciBgcnVzdHByb29mJy4=" },
|
---|
1731 | { "They say that you should name your dog Spuds to have a cool pet.",
|
---|
1732 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5hbWUgeW91ciBkb2cgU3B1ZHMgdG8gaGF2ZSBhIGNvb2wgcGV0Lg==" },
|
---|
1733 | { "They say that you should name your weapon after your first monster kill.",
|
---|
1734 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5hbWUgeW91ciB3ZWFwb24gYWZ0ZXIgeW91ciBmaXJzdCBtb25zdGVyIGtpbGwu" },
|
---|
1735 | { "They say that you should never introduce a rope golem to a succubus.",
|
---|
1736 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIGludHJvZHVjZSBhIHJvcGUgZ29sZW0gdG8gYSBzdWNjdWJ1cy4=" },
|
---|
1737 | { "They say that you should never sleep near invisible ring wraiths.",
|
---|
1738 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIHNsZWVwIG5lYXIgaW52aXNpYmxlIHJpbmcgd3JhaXRocy4=" },
|
---|
1739 | { "They say that you should never try to leave the dungeon with a bag of gems.",
|
---|
1740 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIG5ldmVyIHRyeSB0byBsZWF2ZSB0aGUgZHVuZ2VvbiB3aXRoIGEgYmFnIG9mIGdlbXMu" },
|
---|
1741 | { "They say that you should remove your armor before sitting on a throne.",
|
---|
1742 | "VGhleSBzYXkgdGhhdCB5b3Ugc2hvdWxkIHJlbW92ZSB5b3VyIGFybW9yIGJlZm9yZSBzaXR0aW5nIG9uIGEgdGhyb25lLg==" },
|
---|
1743 | { "This fortune cookie is copy protected.",
|
---|
1744 | "VGhpcyBmb3J0dW5lIGNvb2tpZSBpcyBjb3B5IHByb3RlY3RlZC4=" },
|
---|
1745 | { "This fortune cookie is the property of Fortune Cookies, Inc.",
|
---|
1746 | "VGhpcyBmb3J0dW5lIGNvb2tpZSBpcyB0aGUgcHJvcGVydHkgb2YgRm9ydHVuZSBDb29raWVzLCBJbmMu" },
|
---|
1747 | { "Tired? Try a scroll of charging on yourself.",
|
---|
1748 | "VGlyZWQ/IFRyeSBhIHNjcm9sbCBvZiBjaGFyZ2luZyBvbiB5b3Vyc2VsZi4=" },
|
---|
1749 | { "To achieve the next higher rating, you need 3 more points.",
|
---|
1750 | "VG8gYWNoaWV2ZSB0aGUgbmV4dCBoaWdoZXIgcmF0aW5nLCB5b3UgbmVlZCAzIG1vcmUgcG9pbnRzLg==" },
|
---|
1751 | { "To reach heaven, escape the dungeon while wearing a ring of levitation.",
|
---|
1752 | "VG8gcmVhY2ggaGVhdmVuLCBlc2NhcGUgdGhlIGR1bmdlb24gd2hpbGUgd2VhcmluZyBhIHJpbmcgb2YgbGV2aXRhdGlvbi4=" },
|
---|
1753 | { "Tourists wear shirts loud enough to wake the dead.",
|
---|
1754 | "VG91cmlzdHMgd2VhciBzaGlydHMgbG91ZCBlbm91Z2ggdG8gd2FrZSB0aGUgZGVhZC4=" },
|
---|
1755 | { "Try calling your katana Moulinette.",
|
---|
1756 | "VHJ5IGNhbGxpbmcgeW91ciBrYXRhbmEgTW91bGluZXR0ZS4=" },
|
---|
1757 | { "Ulch! That meat was painted!",
|
---|
1758 | "VWxjaCEgVGhhdCBtZWF0IHdhcyBwYWludGVkIQ==" },
|
---|
1759 | { "Unfortunately, this message was left intentionally blank.",
|
---|
1760 | "VW5mb3J0dW5hdGVseSwgdGhpcyBtZXNzYWdlIHdhcyBsZWZ0IGludGVudGlvbmFsbHkgYmxhbmsu" },
|
---|
1761 | { "Using a morning star in the evening has no effect.",
|
---|
1762 | "VXNpbmcgYSBtb3JuaW5nIHN0YXIgaW4gdGhlIGV2ZW5pbmcgaGFzIG5vIGVmZmVjdC4=" },
|
---|
1763 | { "Want a hint? Zap a wand of make invisible on your weapon!",
|
---|
1764 | "V2FudCBhIGhpbnQ/IFphcCBhIHdhbmQgb2YgbWFrZSBpbnZpc2libGUgb24geW91ciB3ZWFwb24h" },
|
---|
1765 | { "Want to ascend in a hurry? Apply at Gizmonic Institute.",
|
---|
1766 | "V2FudCB0byBhc2NlbmQgaW4gYSBodXJyeT8gQXBwbHkgYXQgR2l6bW9uaWMgSW5zdGl0dXRlLg==" },
|
---|
1767 | { "Wanted: shopkeepers. Send a scroll of mail to Mage of Yendor/Level 35/Dungeon.",
|
---|
1768 | "V2FudGVkOiBzaG9wa2VlcGVycy4gU2VuZCBhIHNjcm9sbCBvZiBtYWlsIHRvIE1hZ2Ugb2YgWWVuZG9yL0xldmVsIDM1L0R1bmdlb24u" },
|
---|
1769 | { "Warning: fortune reading can be hazardous to your health.",
|
---|
1770 | "V2FybmluZzogZm9ydHVuZSByZWFkaW5nIGNhbiBiZSBoYXphcmRvdXMgdG8geW91ciBoZWFsdGgu" },
|
---|
1771 | { "We have new ways of detecting treachery...",
|
---|
1772 | "V2UgaGF2ZSBuZXcgd2F5cyBvZiBkZXRlY3RpbmcgdHJlYWNoZXJ5Li4u" },
|
---|
1773 | { "Wet towels make great weapons!",
|
---|
1774 | "V2V0IHRvd2VscyBtYWtlIGdyZWF0IHdlYXBvbnMh" },
|
---|
1775 | { "What a pity, you cannot read it!",
|
---|
1776 | "V2hhdCBhIHBpdHksIHlvdSBjYW5ub3QgcmVhZCBpdCE=" },
|
---|
1777 | { "When a piercer drops in on you, you will be tempted to hit the ceiling!",
|
---|
1778 | "V2hlbiBhIHBpZXJjZXIgZHJvcHMgaW4gb24geW91LCB5b3Ugd2lsbCBiZSB0ZW1wdGVkIHRvIGhpdCB0aGUgY2VpbGluZyE=" },
|
---|
1779 | { "When in a maze follow the right wall and you will never get lost.",
|
---|
1780 | "V2hlbiBpbiBhIG1hemUgZm9sbG93IHRoZSByaWdodCB3YWxsIGFuZCB5b3Ugd2lsbCBuZXZlciBnZXQgbG9zdC4=" },
|
---|
1781 | { "When you have a key, you don't have to wait for the guard.",
|
---|
1782 | "V2hlbiB5b3UgaGF2ZSBhIGtleSwgeW91IGRvbid0IGhhdmUgdG8gd2FpdCBmb3IgdGhlIGd1YXJkLg==" },
|
---|
1783 | { "Why are you wasting time reading fortunes?",
|
---|
1784 | "V2h5IGFyZSB5b3Ugd2FzdGluZyB0aW1lIHJlYWRpbmcgZm9ydHVuZXM/" },
|
---|
1785 | { "Wish for a master key and open the Magic Memory Vault!",
|
---|
1786 | "V2lzaCBmb3IgYSBtYXN0ZXIga2V5IGFuZCBvcGVuIHRoZSBNYWdpYyBNZW1vcnkgVmF1bHQh" },
|
---|
1787 | { "Wizard expects every monster to do its duty.",
|
---|
1788 | "V2l6YXJkIGV4cGVjdHMgZXZlcnkgbW9uc3RlciB0byBkbyBpdHMgZHV0eS4=" },
|
---|
1789 | { "Wow! You could've had a potion of fruit juice!",
|
---|
1790 | "V293ISBZb3UgY291bGQndmUgaGFkIGEgcG90aW9uIG9mIGZydWl0IGp1aWNlIQ==" },
|
---|
1791 | { "Yet Another Silly Message (YASM).",
|
---|
1792 | "WWV0IEFub3RoZXIgU2lsbHkgTWVzc2FnZSAoWUFTTSku" },
|
---|
1793 | { "You are destined to be misled by a fortune.",
|
---|
1794 | "WW91IGFyZSBkZXN0aW5lZCB0byBiZSBtaXNsZWQgYnkgYSBmb3J0dW5lLg==" },
|
---|
1795 | { "You can get a genuine Amulet of Yendor by doing the following: --More--",
|
---|
1796 | "WW91IGNhbiBnZXQgYSBnZW51aW5lIEFtdWxldCBvZiBZZW5kb3IgYnkgZG9pbmcgdGhlIGZvbGxvd2luZzogLS1Nb3JlLS0=" },
|
---|
1797 | { "You can protect yourself from black dragons by doing the following: --More--",
|
---|
1798 | "WW91IGNhbiBwcm90ZWN0IHlvdXJzZWxmIGZyb20gYmxhY2sgZHJhZ29ucyBieSBkb2luZyB0aGUgZm9sbG93aW5nOiAtLU1vcmUtLQ==" },
|
---|
1799 | { "You can't get by the snake.",
|
---|
1800 | "WW91IGNhbid0IGdldCBieSB0aGUgc25ha2Uu" },
|
---|
1801 | { "You feel like someone is pulling your leg.",
|
---|
1802 | "WW91IGZlZWwgbGlrZSBzb21lb25lIGlzIHB1bGxpbmcgeW91ciBsZWcu" },
|
---|
1803 | { "You have to outwit the Sphynx or pay her.",
|
---|
1804 | "WW91IGhhdmUgdG8gb3V0d2l0IHRoZSBTcGh5bnggb3IgcGF5IGhlci4=" },
|
---|
1805 | { "You hear the fortune cookie's hissing!",
|
---|
1806 | "WW91IGhlYXIgdGhlIGZvcnR1bmUgY29va2llJ3MgaGlzc2luZyE=" },
|
---|
1807 | { "You may get rich selling letters, but beware of being blackmailed!",
|
---|
1808 | "WW91IG1heSBnZXQgcmljaCBzZWxsaW5nIGxldHRlcnMsIGJ1dCBiZXdhcmUgb2YgYmVpbmcgYmxhY2ttYWlsZWQh" },
|
---|
1809 | { "You offend Shai-Hulud by sheathing your crysknife without having drawn blood.",
|
---|
1810 | "WW91IG9mZmVuZCBTaGFpLUh1bHVkIGJ5IHNoZWF0aGluZyB5b3VyIGNyeXNrbmlmZSB3aXRob3V0IGhhdmluZyBkcmF3biBibG9vZC4=" },
|
---|
1811 | { "You swallowed the fortune!",
|
---|
1812 | "WW91IHN3YWxsb3dlZCB0aGUgZm9ydHVuZSE=" },
|
---|
1813 | { "You want to regain strength? Two levels ahead is a guesthouse!",
|
---|
1814 | "WW91IHdhbnQgdG8gcmVnYWluIHN0cmVuZ3RoPyBUd28gbGV2ZWxzIGFoZWFkIGlzIGEgZ3Vlc3Rob3VzZSE=" },
|
---|
1815 | { "You will encounter a tall, dark, and gruesome creature...",
|
---|
1816 | "WW91IHdpbGwgZW5jb3VudGVyIGEgdGFsbCwgZGFyaywgYW5kIGdydWVzb21lIGNyZWF0dXJlLi4u" },
|
---|
1817 |
|
---|
1818 | { "The End", "VGhlIEVuZA==" }
|
---|
1819 | };
|
---|
1820 |
|
---|
1821 | /* PL_Base64Encode, random strings */
|
---|
1822 | PRBool test_004(void)
|
---|
1823 | {
|
---|
1824 | int i;
|
---|
1825 | char result[ 4096 ];
|
---|
1826 |
|
---|
1827 | printf("Test 004 (PL_Base64Encode, random strings) ..."); fflush(stdout);
|
---|
1828 |
|
---|
1829 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
1830 | {
|
---|
1831 | PRUint32 plen = PL_strlen(array[i].plaintext);
|
---|
1832 | PRUint32 clen = ((plen + 2)/3)*4;
|
---|
1833 |
|
---|
1834 | char *rv = PL_Base64Encode(array[i].plaintext, plen, result);
|
---|
1835 |
|
---|
1836 | if( rv != result )
|
---|
1837 | {
|
---|
1838 | printf("FAIL\n\t(%d): return value\n", i);
|
---|
1839 | return PR_FALSE;
|
---|
1840 | }
|
---|
1841 |
|
---|
1842 | if( 0 != PL_strncmp(result, array[i].cyphertext, clen) )
|
---|
1843 | {
|
---|
1844 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n",
|
---|
1845 | i, array[i].plaintext, array[i].cyphertext, clen, result);
|
---|
1846 | return PR_FALSE;
|
---|
1847 | }
|
---|
1848 | }
|
---|
1849 |
|
---|
1850 | printf("PASS\n");
|
---|
1851 | return PR_TRUE;
|
---|
1852 | }
|
---|
1853 |
|
---|
1854 | /* PL_Base64Encode, single characters, malloc */
|
---|
1855 | PRBool test_005(void)
|
---|
1856 | {
|
---|
1857 | PRUint32 a, b;
|
---|
1858 | unsigned char plain[ 4 ];
|
---|
1859 | unsigned char cypher[ 5 ];
|
---|
1860 | char *rv;
|
---|
1861 |
|
---|
1862 | printf("Test 005 (PL_Base64Encode, single characters, malloc) ..."); fflush(stdout);
|
---|
1863 |
|
---|
1864 | plain[1] = plain[2] = plain[3] = (unsigned char)0;
|
---|
1865 | cypher[2] = cypher[3] = (unsigned char)'=';
|
---|
1866 | cypher[4] = (unsigned char)0;
|
---|
1867 |
|
---|
1868 | for( a = 0; a < 64; a++ )
|
---|
1869 | {
|
---|
1870 | cypher[0] = base[a];
|
---|
1871 |
|
---|
1872 | for( b = 0; b < 4; b++ )
|
---|
1873 | {
|
---|
1874 | plain[0] = (unsigned char)(a * 4 + b);
|
---|
1875 | cypher[1] = base[(b * 16)];
|
---|
1876 |
|
---|
1877 | rv = PL_Base64Encode((char *)plain, 1, (char *)0);
|
---|
1878 | if( (char *)0 == rv )
|
---|
1879 | {
|
---|
1880 | printf("FAIL\n\t(%d, %d): no return value\n", a, b);
|
---|
1881 | return PR_FALSE;
|
---|
1882 | }
|
---|
1883 |
|
---|
1884 | if( 0 != PL_strcmp((char *)cypher, rv) )
|
---|
1885 | {
|
---|
1886 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n",
|
---|
1887 | a, b, cypher, rv);
|
---|
1888 | PR_DELETE(rv);
|
---|
1889 | return PR_FALSE;
|
---|
1890 | }
|
---|
1891 |
|
---|
1892 | PR_DELETE(rv);
|
---|
1893 | }
|
---|
1894 | }
|
---|
1895 |
|
---|
1896 | printf("PASS\n");
|
---|
1897 | return PR_TRUE;
|
---|
1898 | }
|
---|
1899 |
|
---|
1900 | /* PL_Base64Encode, double characters, malloc */
|
---|
1901 | PRBool test_006(void)
|
---|
1902 | {
|
---|
1903 | PRUint32 a, b, c, d;
|
---|
1904 | unsigned char plain[ 4 ];
|
---|
1905 | unsigned char cypher[ 5 ];
|
---|
1906 | char *rv;
|
---|
1907 |
|
---|
1908 | printf("Test 006 (PL_Base64Encode, double characters, malloc) ..."); fflush(stdout);
|
---|
1909 |
|
---|
1910 | plain[2] = plain[3] = (unsigned char)0;
|
---|
1911 | cypher[3] = (unsigned char)'=';
|
---|
1912 | cypher[4] = (unsigned char)0;
|
---|
1913 |
|
---|
1914 | for( a = 0; a < 64; a++ )
|
---|
1915 | {
|
---|
1916 | cypher[0] = base[a];
|
---|
1917 | for( b = 0; b < 4; b++ )
|
---|
1918 | {
|
---|
1919 | plain[0] = (a*4) + b;
|
---|
1920 | for( c = 0; c < 16; c++ )
|
---|
1921 | {
|
---|
1922 | cypher[1] = base[b*16 + c];
|
---|
1923 | for( d = 0; d < 16; d++ )
|
---|
1924 | {
|
---|
1925 | plain[1] = c*16 + d;
|
---|
1926 | cypher[2] = base[d*4];
|
---|
1927 |
|
---|
1928 | rv = PL_Base64Encode((char *)plain, 2, (char *)0);
|
---|
1929 | if( (char *)0 == rv )
|
---|
1930 | {
|
---|
1931 | printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d);
|
---|
1932 | return PR_FALSE;
|
---|
1933 | }
|
---|
1934 |
|
---|
1935 | if( 0 != PL_strcmp((char *)cypher, rv) )
|
---|
1936 | {
|
---|
1937 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n",
|
---|
1938 | a, b, c, d, cypher, rv);
|
---|
1939 | PR_DELETE(rv);
|
---|
1940 | return PR_FALSE;
|
---|
1941 | }
|
---|
1942 |
|
---|
1943 | PR_DELETE(rv);
|
---|
1944 | }
|
---|
1945 | }
|
---|
1946 | }
|
---|
1947 | }
|
---|
1948 |
|
---|
1949 | printf("PASS\n");
|
---|
1950 | return PR_TRUE;
|
---|
1951 | }
|
---|
1952 |
|
---|
1953 | /* PL_Base64Encode, triple characters, malloc */
|
---|
1954 | PRBool test_007(void)
|
---|
1955 | {
|
---|
1956 | PRUint32 a, b, c, d, e, f;
|
---|
1957 | unsigned char plain[ 4 ];
|
---|
1958 | unsigned char cypher[ 5 ];
|
---|
1959 | char *rv;
|
---|
1960 |
|
---|
1961 | printf("Test 007 (PL_Base64Encode, triple characters, malloc) ..."); fflush(stdout);
|
---|
1962 |
|
---|
1963 | cypher[4] = (unsigned char)0;
|
---|
1964 |
|
---|
1965 | for( a = 0; a < 64; a++ )
|
---|
1966 | {
|
---|
1967 | cypher[0] = base[a];
|
---|
1968 | for( b = 0; b < 4; b++ )
|
---|
1969 | {
|
---|
1970 | plain[0] = (a*4) + b;
|
---|
1971 | for( c = 0; c < 16; c++ )
|
---|
1972 | {
|
---|
1973 | cypher[1] = base[b*16 + c];
|
---|
1974 | for( d = 0; d < 16; d++ )
|
---|
1975 | {
|
---|
1976 | plain[1] = c*16 + d;
|
---|
1977 | for( e = 0; e < 4; e++ )
|
---|
1978 | {
|
---|
1979 | cypher[2] = base[d*4 + e];
|
---|
1980 | for( f = 0; f < 64; f++ )
|
---|
1981 | {
|
---|
1982 | plain[2] = e * 64 + f;
|
---|
1983 | cypher[3] = base[f];
|
---|
1984 |
|
---|
1985 | rv = PL_Base64Encode((char *)plain, 3, (char *)0);
|
---|
1986 | if( (char *)0 == rv )
|
---|
1987 | {
|
---|
1988 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): no return value\n", a, b, c, d, e, f);
|
---|
1989 | return PR_FALSE;
|
---|
1990 | }
|
---|
1991 |
|
---|
1992 | if( 0 != PL_strcmp((char *)cypher, rv) )
|
---|
1993 | {
|
---|
1994 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.4s.\"\n",
|
---|
1995 | a, b, c, d, e, f, cypher, rv);
|
---|
1996 | PR_DELETE(rv);
|
---|
1997 | return PR_FALSE;
|
---|
1998 | }
|
---|
1999 |
|
---|
2000 | PR_DELETE(rv);
|
---|
2001 | }
|
---|
2002 | }
|
---|
2003 | }
|
---|
2004 | }
|
---|
2005 | }
|
---|
2006 | }
|
---|
2007 |
|
---|
2008 | printf("PASS\n");
|
---|
2009 | return PR_TRUE;
|
---|
2010 | }
|
---|
2011 |
|
---|
2012 | /* PL_Base64Encode, random strings, malloc */
|
---|
2013 | PRBool test_008(void)
|
---|
2014 | {
|
---|
2015 | int i;
|
---|
2016 |
|
---|
2017 | printf("Test 008 (PL_Base64Encode, random strings, malloc) ..."); fflush(stdout);
|
---|
2018 |
|
---|
2019 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
2020 | {
|
---|
2021 | PRUint32 plen = PL_strlen(array[i].plaintext);
|
---|
2022 | PRUint32 clen = ((plen + 2)/3)*4;
|
---|
2023 |
|
---|
2024 | char *rv = PL_Base64Encode(array[i].plaintext, plen, (char *)0);
|
---|
2025 |
|
---|
2026 | if( (char *)0 == rv )
|
---|
2027 | {
|
---|
2028 | printf("FAIL\n\t(%d): no return value\n", i);
|
---|
2029 | return PR_FALSE;
|
---|
2030 | }
|
---|
2031 |
|
---|
2032 | if( 0 != PL_strcmp(rv, array[i].cyphertext) )
|
---|
2033 | {
|
---|
2034 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n",
|
---|
2035 | i, array[i].plaintext, array[i].cyphertext, rv);
|
---|
2036 | return PR_FALSE;
|
---|
2037 | }
|
---|
2038 | }
|
---|
2039 |
|
---|
2040 | printf("PASS\n");
|
---|
2041 | return PR_TRUE;
|
---|
2042 | }
|
---|
2043 |
|
---|
2044 | /* PL_Base64Decode, single characters */
|
---|
2045 | PRBool test_009(void)
|
---|
2046 | {
|
---|
2047 | PRUint32 a, b;
|
---|
2048 | unsigned char plain[ 4 ];
|
---|
2049 | unsigned char cypher[ 5 ];
|
---|
2050 | char result[ 8 ];
|
---|
2051 | char *rv;
|
---|
2052 |
|
---|
2053 | printf("Test 009 (PL_Base64Decode, single characters, equals) ..."); fflush(stdout);
|
---|
2054 |
|
---|
2055 | plain[1] = plain[2] = plain[3] = (unsigned char)0;
|
---|
2056 | cypher[2] = cypher[3] = (unsigned char)'=';
|
---|
2057 | cypher[4] = (unsigned char)0;
|
---|
2058 |
|
---|
2059 | for( a = 0; a < 64; a++ )
|
---|
2060 | {
|
---|
2061 | cypher[0] = base[a];
|
---|
2062 |
|
---|
2063 | for( b = 0; b < 4; b++ )
|
---|
2064 | {
|
---|
2065 | plain[0] = (unsigned char)(a * 4 + b);
|
---|
2066 | cypher[1] = base[(b * 16)];
|
---|
2067 |
|
---|
2068 | rv = PL_Base64Decode((char *)cypher, 4, result);
|
---|
2069 | if( rv != result )
|
---|
2070 | {
|
---|
2071 | printf("FAIL\n\t(%d, %d): return value\n", a, b);
|
---|
2072 | return PR_FALSE;
|
---|
2073 | }
|
---|
2074 |
|
---|
2075 | if( 0 != PL_strncmp((char *)plain, result, 1) )
|
---|
2076 | {
|
---|
2077 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.1s.\"\n",
|
---|
2078 | a, b, plain, result);
|
---|
2079 | return PR_FALSE;
|
---|
2080 | }
|
---|
2081 | }
|
---|
2082 | }
|
---|
2083 |
|
---|
2084 | printf("PASS\n");
|
---|
2085 | return PR_TRUE;
|
---|
2086 | }
|
---|
2087 |
|
---|
2088 | /* PL_Base64Decode, single characters */
|
---|
2089 | PRBool test_010(void)
|
---|
2090 | {
|
---|
2091 | PRUint32 a, b;
|
---|
2092 | unsigned char plain[ 4 ];
|
---|
2093 | unsigned char cypher[ 5 ];
|
---|
2094 | char result[ 8 ];
|
---|
2095 | char *rv;
|
---|
2096 |
|
---|
2097 | printf("Test 010 (PL_Base64Decode, single characters, no equals) ..."); fflush(stdout);
|
---|
2098 |
|
---|
2099 | plain[1] = plain[2] = plain[3] = (unsigned char)0;
|
---|
2100 | cypher[2] = cypher[3] = (unsigned char)0;
|
---|
2101 | cypher[4] = (unsigned char)0;
|
---|
2102 |
|
---|
2103 | for( a = 0; a < 64; a++ )
|
---|
2104 | {
|
---|
2105 | cypher[0] = base[a];
|
---|
2106 |
|
---|
2107 | for( b = 0; b < 4; b++ )
|
---|
2108 | {
|
---|
2109 | plain[0] = (unsigned char)(a * 4 + b);
|
---|
2110 | cypher[1] = base[(b * 16)];
|
---|
2111 |
|
---|
2112 | rv = PL_Base64Decode((char *)cypher, 2, result);
|
---|
2113 | if( rv != result )
|
---|
2114 | {
|
---|
2115 | printf("FAIL\n\t(%d, %d): return value\n", a, b);
|
---|
2116 | return PR_FALSE;
|
---|
2117 | }
|
---|
2118 |
|
---|
2119 | if( 0 != PL_strncmp((char *)plain, result, 1) )
|
---|
2120 | {
|
---|
2121 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%.1s.\"\n",
|
---|
2122 | a, b, plain, result);
|
---|
2123 | return PR_FALSE;
|
---|
2124 | }
|
---|
2125 | }
|
---|
2126 | }
|
---|
2127 |
|
---|
2128 | printf("PASS\n");
|
---|
2129 | return PR_TRUE;
|
---|
2130 | }
|
---|
2131 |
|
---|
2132 | /* PL_Base64Decode, double characters */
|
---|
2133 | PRBool test_011(void)
|
---|
2134 | {
|
---|
2135 | PRUint32 a, b, c, d;
|
---|
2136 | unsigned char plain[ 4 ];
|
---|
2137 | unsigned char cypher[ 5 ];
|
---|
2138 | char result[ 8 ];
|
---|
2139 | char *rv;
|
---|
2140 |
|
---|
2141 | printf("Test 011 (PL_Base64Decode, double characters, equals) ..."); fflush(stdout);
|
---|
2142 |
|
---|
2143 | plain[2] = plain[3] = (unsigned char)0;
|
---|
2144 | cypher[3] = (unsigned char)'=';
|
---|
2145 | cypher[4] = (unsigned char)0;
|
---|
2146 |
|
---|
2147 | for( a = 0; a < 64; a++ )
|
---|
2148 | {
|
---|
2149 | cypher[0] = base[a];
|
---|
2150 | for( b = 0; b < 4; b++ )
|
---|
2151 | {
|
---|
2152 | plain[0] = (a*4) + b;
|
---|
2153 | for( c = 0; c < 16; c++ )
|
---|
2154 | {
|
---|
2155 | cypher[1] = base[b*16 + c];
|
---|
2156 | for( d = 0; d < 16; d++ )
|
---|
2157 | {
|
---|
2158 | plain[1] = c*16 + d;
|
---|
2159 | cypher[2] = base[d*4];
|
---|
2160 |
|
---|
2161 | rv = PL_Base64Decode((char *)cypher, 4, result);
|
---|
2162 | if( rv != result )
|
---|
2163 | {
|
---|
2164 | printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d);
|
---|
2165 | return PR_FALSE;
|
---|
2166 | }
|
---|
2167 |
|
---|
2168 | if( 0 != PL_strncmp((char *)plain, result, 2) )
|
---|
2169 | {
|
---|
2170 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.2s.\"\n",
|
---|
2171 | a, b, c, d, plain, result);
|
---|
2172 | return PR_FALSE;
|
---|
2173 | }
|
---|
2174 | }
|
---|
2175 | }
|
---|
2176 | }
|
---|
2177 | }
|
---|
2178 |
|
---|
2179 | printf("PASS\n");
|
---|
2180 | return PR_TRUE;
|
---|
2181 | }
|
---|
2182 |
|
---|
2183 | /* PL_Base64Decode, double characters */
|
---|
2184 | PRBool test_012(void)
|
---|
2185 | {
|
---|
2186 | PRUint32 a, b, c, d;
|
---|
2187 | unsigned char plain[ 4 ];
|
---|
2188 | unsigned char cypher[ 5 ];
|
---|
2189 | char result[ 8 ];
|
---|
2190 | char *rv;
|
---|
2191 |
|
---|
2192 | printf("Test 012 (PL_Base64Decode, double characters, no equals) ..."); fflush(stdout);
|
---|
2193 |
|
---|
2194 | plain[2] = plain[3] = (unsigned char)0;
|
---|
2195 | cypher[3] = (unsigned char)0;
|
---|
2196 | cypher[4] = (unsigned char)0;
|
---|
2197 |
|
---|
2198 | for( a = 0; a < 64; a++ )
|
---|
2199 | {
|
---|
2200 | cypher[0] = base[a];
|
---|
2201 | for( b = 0; b < 4; b++ )
|
---|
2202 | {
|
---|
2203 | plain[0] = (a*4) + b;
|
---|
2204 | for( c = 0; c < 16; c++ )
|
---|
2205 | {
|
---|
2206 | cypher[1] = base[b*16 + c];
|
---|
2207 | for( d = 0; d < 16; d++ )
|
---|
2208 | {
|
---|
2209 | plain[1] = c*16 + d;
|
---|
2210 | cypher[2] = base[d*4];
|
---|
2211 |
|
---|
2212 | rv = PL_Base64Decode((char *)cypher, 3, result);
|
---|
2213 | if( rv != result )
|
---|
2214 | {
|
---|
2215 | printf("FAIL\n\t(%d, %d, %d, %d): return value\n", a, b, c, d);
|
---|
2216 | return PR_FALSE;
|
---|
2217 | }
|
---|
2218 |
|
---|
2219 | if( 0 != PL_strncmp((char *)plain, result, 2) )
|
---|
2220 | {
|
---|
2221 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%.2s.\"\n",
|
---|
2222 | a, b, c, d, cypher, result);
|
---|
2223 | return PR_FALSE;
|
---|
2224 | }
|
---|
2225 | }
|
---|
2226 | }
|
---|
2227 | }
|
---|
2228 | }
|
---|
2229 |
|
---|
2230 | printf("PASS\n");
|
---|
2231 | return PR_TRUE;
|
---|
2232 | }
|
---|
2233 |
|
---|
2234 | /* PL_Base64Decode, triple characters */
|
---|
2235 | PRBool test_013(void)
|
---|
2236 | {
|
---|
2237 | PRUint32 a, b, c, d, e, f;
|
---|
2238 | unsigned char plain[ 4 ];
|
---|
2239 | unsigned char cypher[ 5 ];
|
---|
2240 | char result[ 8 ];
|
---|
2241 | char *rv;
|
---|
2242 |
|
---|
2243 | printf("Test 013 (PL_Base64Decode, triple characters) ..."); fflush(stdout);
|
---|
2244 |
|
---|
2245 | cypher[4] = (unsigned char)0;
|
---|
2246 |
|
---|
2247 | for( a = 0; a < 64; a++ )
|
---|
2248 | {
|
---|
2249 | cypher[0] = base[a];
|
---|
2250 | for( b = 0; b < 4; b++ )
|
---|
2251 | {
|
---|
2252 | plain[0] = (a*4) + b;
|
---|
2253 | for( c = 0; c < 16; c++ )
|
---|
2254 | {
|
---|
2255 | cypher[1] = base[b*16 + c];
|
---|
2256 | for( d = 0; d < 16; d++ )
|
---|
2257 | {
|
---|
2258 | plain[1] = c*16 + d;
|
---|
2259 | for( e = 0; e < 4; e++ )
|
---|
2260 | {
|
---|
2261 | cypher[2] = base[d*4 + e];
|
---|
2262 | for( f = 0; f < 64; f++ )
|
---|
2263 | {
|
---|
2264 | plain[2] = e * 64 + f;
|
---|
2265 | cypher[3] = base[f];
|
---|
2266 |
|
---|
2267 | rv = PL_Base64Decode((char *)cypher, 4, result);
|
---|
2268 | if( rv != result )
|
---|
2269 | {
|
---|
2270 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): return value\n", a, b, c, d, e, f);
|
---|
2271 | return PR_FALSE;
|
---|
2272 | }
|
---|
2273 |
|
---|
2274 | if( 0 != PL_strncmp((char *)plain, result, 3) )
|
---|
2275 | {
|
---|
2276 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.3s.\"\n",
|
---|
2277 | a, b, c, d, e, f, plain, result);
|
---|
2278 | return PR_FALSE;
|
---|
2279 | }
|
---|
2280 | }
|
---|
2281 | }
|
---|
2282 | }
|
---|
2283 | }
|
---|
2284 | }
|
---|
2285 | }
|
---|
2286 |
|
---|
2287 | printf("PASS\n");
|
---|
2288 | return PR_TRUE;
|
---|
2289 | }
|
---|
2290 |
|
---|
2291 | /* PL_Base64Decode, random strings */
|
---|
2292 | PRBool test_014(void)
|
---|
2293 | {
|
---|
2294 | int i;
|
---|
2295 | char result[ 4096 ];
|
---|
2296 |
|
---|
2297 | printf("Test 014 (PL_Base64Decode, random strings, equals) ..."); fflush(stdout);
|
---|
2298 |
|
---|
2299 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
2300 | {
|
---|
2301 | PRUint32 clen = PL_strlen(array[i].cyphertext);
|
---|
2302 | PRUint32 plen = (clen * 3) / 4;
|
---|
2303 |
|
---|
2304 | char *rv = PL_Base64Decode(array[i].cyphertext, clen, result);
|
---|
2305 |
|
---|
2306 | if( rv != result )
|
---|
2307 | {
|
---|
2308 | printf("FAIL\n\t(%d): return value\n", i);
|
---|
2309 | return PR_FALSE;
|
---|
2310 | }
|
---|
2311 |
|
---|
2312 | if( 0 == (clen & 3) )
|
---|
2313 | {
|
---|
2314 | if( '=' == array[i].cyphertext[clen-1] )
|
---|
2315 | {
|
---|
2316 | if( '=' == array[i].cyphertext[clen-2] )
|
---|
2317 | {
|
---|
2318 | plen -= 2;
|
---|
2319 | }
|
---|
2320 | else
|
---|
2321 | {
|
---|
2322 | plen -= 1;
|
---|
2323 | }
|
---|
2324 | }
|
---|
2325 | }
|
---|
2326 |
|
---|
2327 | if( 0 != PL_strncmp(result, array[i].plaintext, plen) )
|
---|
2328 | {
|
---|
2329 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n",
|
---|
2330 | i, array[i].cyphertext, array[i].plaintext, plen, result);
|
---|
2331 | return PR_FALSE;
|
---|
2332 | }
|
---|
2333 | }
|
---|
2334 |
|
---|
2335 | printf("PASS\n");
|
---|
2336 | return PR_TRUE;
|
---|
2337 | }
|
---|
2338 |
|
---|
2339 | /* PL_Base64Decode, random strings */
|
---|
2340 | PRBool test_015(void)
|
---|
2341 | {
|
---|
2342 | int i;
|
---|
2343 | char buffer[ 4096 ];
|
---|
2344 | char result[ 4096 ];
|
---|
2345 | char *rv;
|
---|
2346 |
|
---|
2347 | printf("Test 015 (PL_Base64Decode, random strings, no equals) ..."); fflush(stdout);
|
---|
2348 |
|
---|
2349 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
2350 | {
|
---|
2351 | PRUint32 clen, plen;
|
---|
2352 |
|
---|
2353 | PL_strcpy(buffer, array[i].cyphertext);
|
---|
2354 | clen = PL_strlen(buffer);
|
---|
2355 |
|
---|
2356 | if( 0 == (clen & 3) )
|
---|
2357 | {
|
---|
2358 | if( '=' == buffer[clen-1] )
|
---|
2359 | {
|
---|
2360 | if( '=' == buffer[clen-2] )
|
---|
2361 | {
|
---|
2362 | buffer[clen-2] = buffer[clen-1] = (char)0;
|
---|
2363 | clen -= 2;
|
---|
2364 | }
|
---|
2365 | else
|
---|
2366 | {
|
---|
2367 | buffer[clen-1] = (char)0;
|
---|
2368 | clen -= 1;
|
---|
2369 | }
|
---|
2370 | }
|
---|
2371 | }
|
---|
2372 |
|
---|
2373 | plen = (clen * 3) / 4;
|
---|
2374 |
|
---|
2375 | rv = PL_Base64Decode(buffer, clen, result);
|
---|
2376 |
|
---|
2377 | if( rv != result )
|
---|
2378 | {
|
---|
2379 | printf("FAIL\n\t(%d): return value\n", i);
|
---|
2380 | return PR_FALSE;
|
---|
2381 | }
|
---|
2382 |
|
---|
2383 | if( 0 != PL_strncmp(result, array[i].plaintext, plen) )
|
---|
2384 | {
|
---|
2385 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n",
|
---|
2386 | i, array[i].cyphertext, array[i].plaintext, plen, result);
|
---|
2387 | return PR_FALSE;
|
---|
2388 | }
|
---|
2389 | }
|
---|
2390 |
|
---|
2391 | printf("PASS\n");
|
---|
2392 | return PR_TRUE;
|
---|
2393 | }
|
---|
2394 |
|
---|
2395 | /* PL_Base64Decode, single characters, malloc */
|
---|
2396 | PRBool test_016(void)
|
---|
2397 | {
|
---|
2398 | PRUint32 a, b;
|
---|
2399 | unsigned char plain[ 4 ];
|
---|
2400 | unsigned char cypher[ 5 ];
|
---|
2401 | char *rv;
|
---|
2402 |
|
---|
2403 | printf("Test 016 (PL_Base64Decode, single characters, equals, malloc) ..."); fflush(stdout);
|
---|
2404 |
|
---|
2405 | plain[1] = plain[2] = plain[3] = (unsigned char)0;
|
---|
2406 | cypher[2] = cypher[3] = (unsigned char)'=';
|
---|
2407 | cypher[4] = (unsigned char)0;
|
---|
2408 |
|
---|
2409 | for( a = 0; a < 64; a++ )
|
---|
2410 | {
|
---|
2411 | cypher[0] = base[a];
|
---|
2412 |
|
---|
2413 | for( b = 0; b < 4; b++ )
|
---|
2414 | {
|
---|
2415 | plain[0] = (unsigned char)(a * 4 + b);
|
---|
2416 | cypher[1] = base[(b * 16)];
|
---|
2417 |
|
---|
2418 | rv = PL_Base64Decode((char *)cypher, 4, (char *)0);
|
---|
2419 | if( (char *)0 == rv )
|
---|
2420 | {
|
---|
2421 | printf("FAIL\n\t(%d, %d): no return value\n", a, b);
|
---|
2422 | return PR_FALSE;
|
---|
2423 | }
|
---|
2424 |
|
---|
2425 | if( 0 != PL_strcmp((char *)plain, rv) )
|
---|
2426 | {
|
---|
2427 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n",
|
---|
2428 | a, b, plain, rv);
|
---|
2429 | PR_DELETE(rv);
|
---|
2430 | return PR_FALSE;
|
---|
2431 | }
|
---|
2432 |
|
---|
2433 | PR_DELETE(rv);
|
---|
2434 | }
|
---|
2435 | }
|
---|
2436 |
|
---|
2437 | printf("PASS\n");
|
---|
2438 | return PR_TRUE;
|
---|
2439 | }
|
---|
2440 |
|
---|
2441 | /* PL_Base64Decode, single characters, malloc */
|
---|
2442 | PRBool test_017(void)
|
---|
2443 | {
|
---|
2444 | PRUint32 a, b;
|
---|
2445 | unsigned char plain[ 4 ];
|
---|
2446 | unsigned char cypher[ 5 ];
|
---|
2447 | char *rv;
|
---|
2448 |
|
---|
2449 | printf("Test 017 (PL_Base64Decode, single characters, no equals, malloc) ..."); fflush(stdout);
|
---|
2450 |
|
---|
2451 | plain[1] = plain[2] = plain[3] = (unsigned char)0;
|
---|
2452 | cypher[2] = cypher[3] = (unsigned char)0;
|
---|
2453 | cypher[4] = (unsigned char)0;
|
---|
2454 |
|
---|
2455 | for( a = 0; a < 64; a++ )
|
---|
2456 | {
|
---|
2457 | cypher[0] = base[a];
|
---|
2458 |
|
---|
2459 | for( b = 0; b < 4; b++ )
|
---|
2460 | {
|
---|
2461 | plain[0] = (unsigned char)(a * 4 + b);
|
---|
2462 | cypher[1] = base[(b * 16)];
|
---|
2463 |
|
---|
2464 | rv = PL_Base64Decode((char *)cypher, 2, (char *)0);
|
---|
2465 | if( (char *)0 == rv )
|
---|
2466 | {
|
---|
2467 | printf("FAIL\n\t(%d, %d): no return value\n", a, b);
|
---|
2468 | return PR_FALSE;
|
---|
2469 | }
|
---|
2470 |
|
---|
2471 | if( 0 != PL_strcmp((char *)plain, rv) )
|
---|
2472 | {
|
---|
2473 | printf("FAIL\n\t(%d, %d): expected \"%s,\" got \"%s.\"\n",
|
---|
2474 | a, b, plain, rv);
|
---|
2475 | PR_DELETE(rv);
|
---|
2476 | return PR_FALSE;
|
---|
2477 | }
|
---|
2478 |
|
---|
2479 | PR_DELETE(rv);
|
---|
2480 | }
|
---|
2481 | }
|
---|
2482 |
|
---|
2483 | printf("PASS\n");
|
---|
2484 | return PR_TRUE;
|
---|
2485 | }
|
---|
2486 |
|
---|
2487 | /* PL_Base64Decode, double characters, malloc */
|
---|
2488 | PRBool test_018(void)
|
---|
2489 | {
|
---|
2490 | PRUint32 a, b, c, d;
|
---|
2491 | unsigned char plain[ 4 ];
|
---|
2492 | unsigned char cypher[ 5 ];
|
---|
2493 | char *rv;
|
---|
2494 |
|
---|
2495 | printf("Test 018 (PL_Base64Decode, double characters, equals, malloc) ..."); fflush(stdout);
|
---|
2496 |
|
---|
2497 | plain[2] = plain[3] = (unsigned char)0;
|
---|
2498 | cypher[3] = (unsigned char)'=';
|
---|
2499 | cypher[4] = (unsigned char)0;
|
---|
2500 |
|
---|
2501 | for( a = 0; a < 64; a++ )
|
---|
2502 | {
|
---|
2503 | cypher[0] = base[a];
|
---|
2504 | for( b = 0; b < 4; b++ )
|
---|
2505 | {
|
---|
2506 | plain[0] = (a*4) + b;
|
---|
2507 | for( c = 0; c < 16; c++ )
|
---|
2508 | {
|
---|
2509 | cypher[1] = base[b*16 + c];
|
---|
2510 | for( d = 0; d < 16; d++ )
|
---|
2511 | {
|
---|
2512 | plain[1] = c*16 + d;
|
---|
2513 | cypher[2] = base[d*4];
|
---|
2514 |
|
---|
2515 | rv = PL_Base64Decode((char *)cypher, 4, (char *)0);
|
---|
2516 | if( (char *)0 == rv )
|
---|
2517 | {
|
---|
2518 | printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d);
|
---|
2519 | return PR_FALSE;
|
---|
2520 | }
|
---|
2521 |
|
---|
2522 | if( 0 != PL_strcmp((char *)plain, rv) )
|
---|
2523 | {
|
---|
2524 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n",
|
---|
2525 | a, b, c, d, plain, rv);
|
---|
2526 | PR_DELETE(rv);
|
---|
2527 | return PR_FALSE;
|
---|
2528 | }
|
---|
2529 |
|
---|
2530 | PR_DELETE(rv);
|
---|
2531 | }
|
---|
2532 | }
|
---|
2533 | }
|
---|
2534 | }
|
---|
2535 |
|
---|
2536 | printf("PASS\n");
|
---|
2537 | return PR_TRUE;
|
---|
2538 | }
|
---|
2539 |
|
---|
2540 | /* PL_Base64Decode, double characters, malloc */
|
---|
2541 | PRBool test_019(void)
|
---|
2542 | {
|
---|
2543 | PRUint32 a, b, c, d;
|
---|
2544 | unsigned char plain[ 4 ];
|
---|
2545 | unsigned char cypher[ 5 ];
|
---|
2546 | char *rv;
|
---|
2547 |
|
---|
2548 | printf("Test 019 (PL_Base64Decode, double characters, no equals, malloc) ..."); fflush(stdout);
|
---|
2549 |
|
---|
2550 | plain[2] = plain[3] = (unsigned char)0;
|
---|
2551 | cypher[3] = (unsigned char)0;
|
---|
2552 | cypher[4] = (unsigned char)0;
|
---|
2553 |
|
---|
2554 | for( a = 0; a < 64; a++ )
|
---|
2555 | {
|
---|
2556 | cypher[0] = base[a];
|
---|
2557 | for( b = 0; b < 4; b++ )
|
---|
2558 | {
|
---|
2559 | plain[0] = (a*4) + b;
|
---|
2560 | for( c = 0; c < 16; c++ )
|
---|
2561 | {
|
---|
2562 | cypher[1] = base[b*16 + c];
|
---|
2563 | for( d = 0; d < 16; d++ )
|
---|
2564 | {
|
---|
2565 | plain[1] = c*16 + d;
|
---|
2566 | cypher[2] = base[d*4];
|
---|
2567 |
|
---|
2568 | rv = PL_Base64Decode((char *)cypher, 3, (char *)0);
|
---|
2569 | if( (char *)0 == rv )
|
---|
2570 | {
|
---|
2571 | printf("FAIL\n\t(%d, %d, %d, %d): no return value\n", a, b, c, d);
|
---|
2572 | return PR_FALSE;
|
---|
2573 | }
|
---|
2574 |
|
---|
2575 | if( 0 != PL_strcmp((char *)plain, rv) )
|
---|
2576 | {
|
---|
2577 | printf("FAIL\n\t(%d, %d, %d, %d): expected \"%s,\" got \"%s.\"\n",
|
---|
2578 | a, b, c, d, cypher, rv);
|
---|
2579 | PR_DELETE(rv);
|
---|
2580 | return PR_FALSE;
|
---|
2581 | }
|
---|
2582 |
|
---|
2583 | PR_DELETE(rv);
|
---|
2584 | }
|
---|
2585 | }
|
---|
2586 | }
|
---|
2587 | }
|
---|
2588 |
|
---|
2589 | printf("PASS\n");
|
---|
2590 | return PR_TRUE;
|
---|
2591 | }
|
---|
2592 |
|
---|
2593 | /* PL_Base64Decode, triple characters, malloc */
|
---|
2594 | PRBool test_020(void)
|
---|
2595 | {
|
---|
2596 | PRUint32 a, b, c, d, e, f;
|
---|
2597 | unsigned char plain[ 4 ];
|
---|
2598 | unsigned char cypher[ 5 ];
|
---|
2599 | char *rv;
|
---|
2600 |
|
---|
2601 | printf("Test 020 (PL_Base64Decode, triple characters, malloc) ..."); fflush(stdout);
|
---|
2602 |
|
---|
2603 | cypher[4] = (unsigned char)0;
|
---|
2604 | plain[3] = (unsigned char)0;
|
---|
2605 |
|
---|
2606 | for( a = 0; a < 64; a++ )
|
---|
2607 | {
|
---|
2608 | cypher[0] = base[a];
|
---|
2609 | for( b = 0; b < 4; b++ )
|
---|
2610 | {
|
---|
2611 | plain[0] = (a*4) + b;
|
---|
2612 | for( c = 0; c < 16; c++ )
|
---|
2613 | {
|
---|
2614 | cypher[1] = base[b*16 + c];
|
---|
2615 | for( d = 0; d < 16; d++ )
|
---|
2616 | {
|
---|
2617 | plain[1] = c*16 + d;
|
---|
2618 | for( e = 0; e < 4; e++ )
|
---|
2619 | {
|
---|
2620 | cypher[2] = base[d*4 + e];
|
---|
2621 | for( f = 0; f < 64; f++ )
|
---|
2622 | {
|
---|
2623 | plain[2] = e * 64 + f;
|
---|
2624 | cypher[3] = base[f];
|
---|
2625 |
|
---|
2626 | rv = PL_Base64Decode((char *)cypher, 4, (char *)0);
|
---|
2627 | if( (char *)0 == rv )
|
---|
2628 | {
|
---|
2629 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): no return value\n", a, b, c, d, e, f);
|
---|
2630 | return PR_FALSE;
|
---|
2631 | }
|
---|
2632 |
|
---|
2633 | if( 0 != PL_strcmp((char *)plain, rv) )
|
---|
2634 | {
|
---|
2635 | printf("FAIL\n\t(%d, %d, %d, %d, %d, %d): expected \"%s,\" got \"%.3s.\"\n",
|
---|
2636 | a, b, c, d, e, f, plain, rv);
|
---|
2637 | PR_DELETE(rv);
|
---|
2638 | return PR_FALSE;
|
---|
2639 | }
|
---|
2640 |
|
---|
2641 | PR_DELETE(rv);
|
---|
2642 | }
|
---|
2643 | }
|
---|
2644 | }
|
---|
2645 | }
|
---|
2646 | }
|
---|
2647 | }
|
---|
2648 |
|
---|
2649 | printf("PASS\n");
|
---|
2650 | return PR_TRUE;
|
---|
2651 | }
|
---|
2652 |
|
---|
2653 | /* PL_Base64Decode, random strings, malloc */
|
---|
2654 | PRBool test_021(void)
|
---|
2655 | {
|
---|
2656 | int i;
|
---|
2657 |
|
---|
2658 | printf("Test 021 (PL_Base64Decode, random strings, equals, malloc) ..."); fflush(stdout);
|
---|
2659 |
|
---|
2660 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
2661 | {
|
---|
2662 | PRUint32 clen = PL_strlen(array[i].cyphertext);
|
---|
2663 |
|
---|
2664 | char *rv = PL_Base64Decode(array[i].cyphertext, clen, (char *)0);
|
---|
2665 |
|
---|
2666 | if( (char *)0 == rv )
|
---|
2667 | {
|
---|
2668 | printf("FAIL\n\t(%d): no return value\n", i);
|
---|
2669 | return PR_FALSE;
|
---|
2670 | }
|
---|
2671 |
|
---|
2672 | if( 0 != PL_strcmp(rv, array[i].plaintext) )
|
---|
2673 | {
|
---|
2674 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n",
|
---|
2675 | i, array[i].cyphertext, array[i].plaintext, rv);
|
---|
2676 | PR_DELETE(rv);
|
---|
2677 | return PR_FALSE;
|
---|
2678 | }
|
---|
2679 |
|
---|
2680 | PR_DELETE(rv);
|
---|
2681 | }
|
---|
2682 |
|
---|
2683 | printf("PASS\n");
|
---|
2684 | return PR_TRUE;
|
---|
2685 | }
|
---|
2686 |
|
---|
2687 | /* PL_Base64Encode, random strings, malloc */
|
---|
2688 | PRBool test_022(void)
|
---|
2689 | {
|
---|
2690 | int i;
|
---|
2691 | char buffer[ 4096 ];
|
---|
2692 | char *rv;
|
---|
2693 |
|
---|
2694 | printf("Test 022 (PL_Base64Decode, random strings, no equals, malloc) ..."); fflush(stdout);
|
---|
2695 |
|
---|
2696 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
2697 | {
|
---|
2698 | PRUint32 clen;
|
---|
2699 |
|
---|
2700 | PL_strcpy(buffer, array[i].cyphertext);
|
---|
2701 | clen = PL_strlen(buffer);
|
---|
2702 |
|
---|
2703 | if( 0 == (clen & 3) )
|
---|
2704 | {
|
---|
2705 | if( '=' == buffer[clen-1] )
|
---|
2706 | {
|
---|
2707 | if( '=' == buffer[clen-2] )
|
---|
2708 | {
|
---|
2709 | buffer[clen-2] = buffer[clen-1] = (char)0;
|
---|
2710 | clen -= 2;
|
---|
2711 | }
|
---|
2712 | else
|
---|
2713 | {
|
---|
2714 | buffer[clen-1] = (char)0;
|
---|
2715 | clen -= 1;
|
---|
2716 | }
|
---|
2717 | }
|
---|
2718 | }
|
---|
2719 |
|
---|
2720 | rv = PL_Base64Decode(buffer, clen, (char *)0);
|
---|
2721 |
|
---|
2722 | if( (char *)0 == rv )
|
---|
2723 | {
|
---|
2724 | printf("FAIL\n\t(%d): no return value\n", i);
|
---|
2725 | return PR_FALSE;
|
---|
2726 | }
|
---|
2727 |
|
---|
2728 | if( 0 != PL_strcmp(rv, array[i].plaintext) )
|
---|
2729 | {
|
---|
2730 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n",
|
---|
2731 | i, array[i].cyphertext, array[i].plaintext, rv);
|
---|
2732 | return PR_FALSE;
|
---|
2733 | }
|
---|
2734 | }
|
---|
2735 |
|
---|
2736 | printf("PASS\n");
|
---|
2737 | return PR_TRUE;
|
---|
2738 | }
|
---|
2739 |
|
---|
2740 | /* PL_Base64Encode, random strings */
|
---|
2741 | PRBool test_023(void)
|
---|
2742 | {
|
---|
2743 | int i;
|
---|
2744 | char result[ 4096 ];
|
---|
2745 |
|
---|
2746 | printf("Test 023 (PL_Base64Encode, random strings, strlen) ..."); fflush(stdout);
|
---|
2747 |
|
---|
2748 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
2749 | {
|
---|
2750 | PRUint32 plen = PL_strlen(array[i].plaintext);
|
---|
2751 | PRUint32 clen = ((plen + 2)/3)*4;
|
---|
2752 |
|
---|
2753 | char *rv = PL_Base64Encode(array[i].plaintext, 0, result);
|
---|
2754 |
|
---|
2755 | if( rv != result )
|
---|
2756 | {
|
---|
2757 | printf("FAIL\n\t(%d): return value\n", i);
|
---|
2758 | return PR_FALSE;
|
---|
2759 | }
|
---|
2760 |
|
---|
2761 | if( 0 != PL_strncmp(result, array[i].cyphertext, clen) )
|
---|
2762 | {
|
---|
2763 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n",
|
---|
2764 | i, array[i].plaintext, array[i].cyphertext, clen, result);
|
---|
2765 | return PR_FALSE;
|
---|
2766 | }
|
---|
2767 | }
|
---|
2768 |
|
---|
2769 | printf("PASS\n");
|
---|
2770 | return PR_TRUE;
|
---|
2771 | }
|
---|
2772 |
|
---|
2773 | /* PL_Base64Encode, random strings, malloc */
|
---|
2774 | PRBool test_024(void)
|
---|
2775 | {
|
---|
2776 | int i;
|
---|
2777 |
|
---|
2778 | printf("Test 024 (PL_Base64Encode, random strings, malloc, strlen) ..."); fflush(stdout);
|
---|
2779 |
|
---|
2780 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
2781 | {
|
---|
2782 | PRUint32 plen = PL_strlen(array[i].plaintext);
|
---|
2783 | PRUint32 clen = ((plen + 2)/3)*4;
|
---|
2784 |
|
---|
2785 | char *rv = PL_Base64Encode(array[i].plaintext, 0, (char *)0);
|
---|
2786 |
|
---|
2787 | if( (char *)0 == rv )
|
---|
2788 | {
|
---|
2789 | printf("FAIL\n\t(%d): no return value\n", i);
|
---|
2790 | return PR_FALSE;
|
---|
2791 | }
|
---|
2792 |
|
---|
2793 | if( 0 != PL_strcmp(rv, array[i].cyphertext) )
|
---|
2794 | {
|
---|
2795 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n",
|
---|
2796 | i, array[i].plaintext, array[i].cyphertext, rv);
|
---|
2797 | return PR_FALSE;
|
---|
2798 | }
|
---|
2799 | }
|
---|
2800 |
|
---|
2801 | printf("PASS\n");
|
---|
2802 | return PR_TRUE;
|
---|
2803 | }
|
---|
2804 |
|
---|
2805 | /* PL_Base64Decode, random strings */
|
---|
2806 | PRBool test_025(void)
|
---|
2807 | {
|
---|
2808 | int i;
|
---|
2809 | char result[ 4096 ];
|
---|
2810 |
|
---|
2811 | printf("Test 025 (PL_Base64Decode, random strings, equals, strlen) ..."); fflush(stdout);
|
---|
2812 |
|
---|
2813 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
2814 | {
|
---|
2815 | PRUint32 clen = PL_strlen(array[i].cyphertext);
|
---|
2816 | PRUint32 plen = (clen * 3) / 4;
|
---|
2817 |
|
---|
2818 | char *rv = PL_Base64Decode(array[i].cyphertext, 0, result);
|
---|
2819 |
|
---|
2820 | if( rv != result )
|
---|
2821 | {
|
---|
2822 | printf("FAIL\n\t(%d): return value\n", i);
|
---|
2823 | return PR_FALSE;
|
---|
2824 | }
|
---|
2825 |
|
---|
2826 | if( 0 == (clen & 3) )
|
---|
2827 | {
|
---|
2828 | if( '=' == array[i].cyphertext[clen-1] )
|
---|
2829 | {
|
---|
2830 | if( '=' == array[i].cyphertext[clen-2] )
|
---|
2831 | {
|
---|
2832 | plen -= 2;
|
---|
2833 | }
|
---|
2834 | else
|
---|
2835 | {
|
---|
2836 | plen -= 1;
|
---|
2837 | }
|
---|
2838 | }
|
---|
2839 | }
|
---|
2840 |
|
---|
2841 | if( 0 != PL_strncmp(result, array[i].plaintext, plen) )
|
---|
2842 | {
|
---|
2843 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n",
|
---|
2844 | i, array[i].cyphertext, array[i].plaintext, plen, result);
|
---|
2845 | return PR_FALSE;
|
---|
2846 | }
|
---|
2847 | }
|
---|
2848 |
|
---|
2849 | printf("PASS\n");
|
---|
2850 | return PR_TRUE;
|
---|
2851 | }
|
---|
2852 |
|
---|
2853 | /* PL_Base64Decode, random strings */
|
---|
2854 | PRBool test_026(void)
|
---|
2855 | {
|
---|
2856 | int i;
|
---|
2857 | char buffer[ 4096 ];
|
---|
2858 | char result[ 4096 ];
|
---|
2859 | char *rv;
|
---|
2860 |
|
---|
2861 | printf("Test 026 (PL_Base64Decode, random strings, no equals, strlen) ..."); fflush(stdout);
|
---|
2862 |
|
---|
2863 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
2864 | {
|
---|
2865 | PRUint32 clen, plen;
|
---|
2866 |
|
---|
2867 | PL_strcpy(buffer, array[i].cyphertext);
|
---|
2868 | clen = PL_strlen(buffer);
|
---|
2869 |
|
---|
2870 | if( 0 == (clen & 3) )
|
---|
2871 | {
|
---|
2872 | if( '=' == buffer[clen-1] )
|
---|
2873 | {
|
---|
2874 | if( '=' == buffer[clen-2] )
|
---|
2875 | {
|
---|
2876 | buffer[clen-2] = buffer[clen-1] = (char)0;
|
---|
2877 | clen -= 2;
|
---|
2878 | }
|
---|
2879 | else
|
---|
2880 | {
|
---|
2881 | buffer[clen-1] = (char)0;
|
---|
2882 | clen -= 1;
|
---|
2883 | }
|
---|
2884 | }
|
---|
2885 | }
|
---|
2886 |
|
---|
2887 | plen = (clen * 3) / 4;
|
---|
2888 |
|
---|
2889 | rv = PL_Base64Decode(buffer, 0, result);
|
---|
2890 |
|
---|
2891 | if( rv != result )
|
---|
2892 | {
|
---|
2893 | printf("FAIL\n\t(%d): return value\n", i);
|
---|
2894 | return PR_FALSE;
|
---|
2895 | }
|
---|
2896 |
|
---|
2897 | if( 0 != PL_strncmp(result, array[i].plaintext, plen) )
|
---|
2898 | {
|
---|
2899 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%.*s.\"\n",
|
---|
2900 | i, array[i].cyphertext, array[i].plaintext, plen, result);
|
---|
2901 | return PR_FALSE;
|
---|
2902 | }
|
---|
2903 | }
|
---|
2904 |
|
---|
2905 | printf("PASS\n");
|
---|
2906 | return PR_TRUE;
|
---|
2907 | }
|
---|
2908 |
|
---|
2909 | /* PL_Base64Decode, random strings, malloc */
|
---|
2910 | PRBool test_027(void)
|
---|
2911 | {
|
---|
2912 | int i;
|
---|
2913 |
|
---|
2914 | printf("Test 027 (PL_Base64Decode, random strings, equals, malloc, strlen) ..."); fflush(stdout);
|
---|
2915 |
|
---|
2916 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
2917 | {
|
---|
2918 | PRUint32 clen = PL_strlen(array[i].cyphertext);
|
---|
2919 |
|
---|
2920 | char *rv = PL_Base64Decode(array[i].cyphertext, 0, (char *)0);
|
---|
2921 |
|
---|
2922 | if( (char *)0 == rv )
|
---|
2923 | {
|
---|
2924 | printf("FAIL\n\t(%d): no return value\n", i);
|
---|
2925 | return PR_FALSE;
|
---|
2926 | }
|
---|
2927 |
|
---|
2928 | if( 0 != PL_strcmp(rv, array[i].plaintext) )
|
---|
2929 | {
|
---|
2930 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n",
|
---|
2931 | i, array[i].cyphertext, array[i].plaintext, rv);
|
---|
2932 | PR_DELETE(rv);
|
---|
2933 | return PR_FALSE;
|
---|
2934 | }
|
---|
2935 |
|
---|
2936 | PR_DELETE(rv);
|
---|
2937 | }
|
---|
2938 |
|
---|
2939 | printf("PASS\n");
|
---|
2940 | return PR_TRUE;
|
---|
2941 | }
|
---|
2942 |
|
---|
2943 | /* PL_Base64Encode, random strings, malloc */
|
---|
2944 | PRBool test_028(void)
|
---|
2945 | {
|
---|
2946 | int i;
|
---|
2947 | char buffer[ 4096 ];
|
---|
2948 | char *rv;
|
---|
2949 |
|
---|
2950 | printf("Test 028 (PL_Base64Decode, random strings, no equals, malloc, strlen) ..."); fflush(stdout);
|
---|
2951 |
|
---|
2952 | for( i = 0; i < sizeof(array)/sizeof(array[0]); i++ )
|
---|
2953 | {
|
---|
2954 | PRUint32 clen;
|
---|
2955 |
|
---|
2956 | PL_strcpy(buffer, array[i].cyphertext);
|
---|
2957 | clen = PL_strlen(buffer);
|
---|
2958 |
|
---|
2959 | if( 0 == (clen & 3) )
|
---|
2960 | {
|
---|
2961 | if( '=' == buffer[clen-1] )
|
---|
2962 | {
|
---|
2963 | if( '=' == buffer[clen-2] )
|
---|
2964 | {
|
---|
2965 | buffer[clen-2] = buffer[clen-1] = (char)0;
|
---|
2966 | clen -= 2;
|
---|
2967 | }
|
---|
2968 | else
|
---|
2969 | {
|
---|
2970 | buffer[clen-1] = (char)0;
|
---|
2971 | clen -= 1;
|
---|
2972 | }
|
---|
2973 | }
|
---|
2974 | }
|
---|
2975 |
|
---|
2976 | rv = PL_Base64Decode(buffer, 0, (char *)0);
|
---|
2977 |
|
---|
2978 | if( (char *)0 == rv )
|
---|
2979 | {
|
---|
2980 | printf("FAIL\n\t(%d): no return value\n", i);
|
---|
2981 | return PR_FALSE;
|
---|
2982 | }
|
---|
2983 |
|
---|
2984 | if( 0 != PL_strcmp(rv, array[i].plaintext) )
|
---|
2985 | {
|
---|
2986 | printf("FAIL\n\t(%d, \"%s\"): expected \n\"%s,\" got \n\"%s.\"\n",
|
---|
2987 | i, array[i].cyphertext, array[i].plaintext, rv);
|
---|
2988 | return PR_FALSE;
|
---|
2989 | }
|
---|
2990 | }
|
---|
2991 |
|
---|
2992 | printf("PASS\n");
|
---|
2993 | return PR_TRUE;
|
---|
2994 | }
|
---|
2995 |
|
---|
2996 | int
|
---|
2997 | main
|
---|
2998 | (
|
---|
2999 | int argc,
|
---|
3000 | char *argv[]
|
---|
3001 | )
|
---|
3002 | {
|
---|
3003 | printf("Testing the Portable Library base64 functions:\n");
|
---|
3004 | printf("(warning: the \"triple characters\" tests are slow)\n");
|
---|
3005 |
|
---|
3006 | if( 1
|
---|
3007 | && test_001()
|
---|
3008 | && test_002()
|
---|
3009 | && test_003()
|
---|
3010 | && test_004()
|
---|
3011 | && test_005()
|
---|
3012 | && test_006()
|
---|
3013 | && test_007()
|
---|
3014 | && test_008()
|
---|
3015 | && test_009()
|
---|
3016 | && test_010()
|
---|
3017 | && test_011()
|
---|
3018 | && test_012()
|
---|
3019 | && test_013()
|
---|
3020 | && test_014()
|
---|
3021 | && test_015()
|
---|
3022 | && test_016()
|
---|
3023 | && test_017()
|
---|
3024 | && test_018()
|
---|
3025 | && test_019()
|
---|
3026 | && test_020()
|
---|
3027 | && test_021()
|
---|
3028 | && test_022()
|
---|
3029 | && test_023()
|
---|
3030 | && test_024()
|
---|
3031 | && test_025()
|
---|
3032 | && test_026()
|
---|
3033 | && test_027()
|
---|
3034 | && test_028()
|
---|
3035 | )
|
---|
3036 | {
|
---|
3037 | printf("Suite passed.\n");
|
---|
3038 | return 0;
|
---|
3039 | }
|
---|
3040 | else
|
---|
3041 | {
|
---|
3042 | printf("Suite failed.\n");
|
---|
3043 | return 1;
|
---|
3044 | }
|
---|
3045 |
|
---|
3046 | /*NOTREACHED*/
|
---|
3047 | }
|
---|