cyberchef 9.37.0 → 9.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/nightwatch.json +3 -2
- package/package.json +1 -1
- package/src/core/config/OperationConfig.json +2 -2
- package/src/core/operations/RC4Drop.mjs +2 -2
- package/tests/browser/ops.js +77 -24
- package/tests/node/tests/operations.mjs +1 -1
- package/tests/operations/tests/Image.mjs +1 -1
- package/tests/operations/tests/Magic.mjs +1 -1
- package/tests/operations/tests/PGP.mjs +1 -1
- package/tests/operations/tests/RSA.mjs +1 -1
- package/tests/{operations/samples → samples}/Ciphers.mjs +0 -0
- package/tests/{operations/samples → samples}/Images.mjs +12 -0
package/nightwatch.json
CHANGED
|
@@ -10,11 +10,12 @@
|
|
|
10
10
|
"start_process": true,
|
|
11
11
|
"server_path": "./node_modules/.bin/chromedriver",
|
|
12
12
|
"port": 9515,
|
|
13
|
-
"log_path":
|
|
13
|
+
"log_path": "tests/browser/output"
|
|
14
14
|
},
|
|
15
15
|
"desiredCapabilities": {
|
|
16
16
|
"browserName": "chrome"
|
|
17
|
-
}
|
|
17
|
+
},
|
|
18
|
+
"enable_fail_fast": true
|
|
18
19
|
},
|
|
19
20
|
|
|
20
21
|
"dev": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cyberchef",
|
|
3
|
-
"version": "9.37.
|
|
3
|
+
"version": "9.37.1",
|
|
4
4
|
"description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
|
|
5
5
|
"author": "n1474335 <n1474335@gmail.com>",
|
|
6
6
|
"homepage": "https://gchq.github.io/CyberChef",
|
|
@@ -43,9 +43,9 @@ class RC4Drop extends Operation {
|
|
|
43
43
|
"value": ["Latin1", "UTF8", "UTF16", "UTF16LE", "UTF16BE", "Hex", "Base64"]
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
|
-
"name": "Number of
|
|
46
|
+
"name": "Number of dwords to drop",
|
|
47
47
|
"type": "number",
|
|
48
|
-
"value":
|
|
48
|
+
"value": 192
|
|
49
49
|
}
|
|
50
50
|
];
|
|
51
51
|
}
|
package/tests/browser/ops.js
CHANGED
|
@@ -16,7 +16,8 @@ module.exports = {
|
|
|
16
16
|
.click("#auto-bake-label");
|
|
17
17
|
},
|
|
18
18
|
|
|
19
|
-
"Sanity check operations": browser => {
|
|
19
|
+
"Sanity check operations": async browser => {
|
|
20
|
+
const Images = await import("../samples/Images.mjs");
|
|
20
21
|
testOp(browser, "A1Z26 Cipher Decode", "20 5 19 20 15 21 20 16 21 20", "testoutput");
|
|
21
22
|
testOp(browser, "A1Z26 Cipher Encode", "test input", "20 5 19 20 9 14 16 21 20");
|
|
22
23
|
testOp(browser, "ADD", "test input", "Ê»ÉÊv¿ÄÆËÊ", [{ "option": "Hex", "string": "56" }]);
|
|
@@ -24,7 +25,7 @@ module.exports = {
|
|
|
24
25
|
testOp(browser, "AES Encrypt", "test input", "e42eb8fbfb7a98fff061cd2c1a794d92", [{"option": "Hex", "string": "00112233445566778899aabbccddeeff"}, {"option": "Hex", "string": "00000000000000000000000000000000"}, "CBC", "Raw", "Hex"]);
|
|
25
26
|
testOp(browser, "AND", "test input", "4$04 $044", [{ "option": "Hex", "string": "34" }]);
|
|
26
27
|
testOp(browser, "Add line numbers", "test input", "1 test input");
|
|
27
|
-
|
|
28
|
+
testOp(browser, ["From Hex", "Add Text To Image", "To Base64"], Images.PNG_HEX, Images.PNG_CHEF_B64, [[], ["Chef", "Center", "Middle", 0, 0, 16], []]);
|
|
28
29
|
testOp(browser, "Adler-32 Checksum", "test input", "16160411");
|
|
29
30
|
testOp(browser, "Affine Cipher Decode", "test input", "rcqr glnsr", [1, 2]);
|
|
30
31
|
testOp(browser, "Affine Cipher Encode", "test input", "njln rbfpn", [2, 1]);
|
|
@@ -44,12 +45,12 @@ module.exports = {
|
|
|
44
45
|
// testOp(browser, "Bifid Cipher Encode", "test input", "test_output");
|
|
45
46
|
// testOp(browser, "Bit shift left", "test input", "test_output");
|
|
46
47
|
// testOp(browser, "Bit shift right", "test input", "test_output");
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
testOp(browser, "Blowfish Decrypt", "10884e15427dd84ec35204e9c8e921ae", "test_output", [{"option": "Hex", "string": "1234567801234567"}, {"option": "Hex", "string": "0011223344556677"}, "CBC", "Hex", "Raw"]);
|
|
49
|
+
testOp(browser, "Blowfish Encrypt", "test input", "f0fadbd1d90d774f714248cf26b96410", [{"option": "Hex", "string": "1234567801234567"}, {"option": "Hex", "string": "0011223344556677"}, "CBC", "Raw", "Hex"]);
|
|
50
|
+
testOp(browser, ["From Hex", "Blur Image", "To Base64"], Images.PNG_HEX, Images.PNG_BLUR_B64);
|
|
50
51
|
// testOp(browser, "Bombe", "test input", "test_output");
|
|
51
|
-
|
|
52
|
-
|
|
52
|
+
testOp(browser, ["Bzip2 Compress", "To Hex"], "test input", "42 5a 68 39 31 41 59 26 53 59 cf 96 82 1d 00 00 03 91 80 40 00 02 21 4e 00 20 00 21 90 c2 10 c0 88 33 92 8e df 17 72 45 38 50 90 cf 96 82 1d");
|
|
53
|
+
testOp(browser, ["From Hex", "Bzip2 Decompress"], "425a68393141592653597b0884b7000003038000008200ce00200021a647a4218013709517c5dc914e14241ec2212dc0", "test_output", [[], [true]]);
|
|
53
54
|
// testOp(browser, "CRC-16 Checksum", "test input", "test_output");
|
|
54
55
|
// testOp(browser, "CRC-32 Checksum", "test input", "test_output");
|
|
55
56
|
// testOp(browser, "CRC-8 Checksum", "test input", "test_output");
|
|
@@ -69,10 +70,10 @@ module.exports = {
|
|
|
69
70
|
// testOp(browser, "Comment", "test input", "test_output");
|
|
70
71
|
// testOp(browser, "Compare CTPH hashes", "test input", "test_output");
|
|
71
72
|
// testOp(browser, "Compare SSDEEP hashes", "test input", "test_output");
|
|
72
|
-
// testOp(browser, "Conditional Jump", "test input", "test_output");
|
|
73
|
+
// /testOp(browser, "Conditional Jump", "test input", "test_output");
|
|
73
74
|
// testOp(browser, "Contain Image", "test input", "test_output");
|
|
74
75
|
// testOp(browser, "Convert area", "test input", "test_output");
|
|
75
|
-
// testOp(browser, "Convert co-ordinate format", "test input", "test_output");
|
|
76
|
+
// /testOp(browser, "Convert co-ordinate format", "test input", "test_output");
|
|
76
77
|
// testOp(browser, "Convert data units", "test input", "test_output");
|
|
77
78
|
// testOp(browser, "Convert distance", "test input", "test_output");
|
|
78
79
|
// testOp(browser, "Convert Image Format", "test input", "test_output");
|
|
@@ -197,10 +198,12 @@ module.exports = {
|
|
|
197
198
|
// testOp(browser, "MD4", "test input", "test_output");
|
|
198
199
|
// testOp(browser, "MD5", "test input", "test_output");
|
|
199
200
|
// testOp(browser, "MD6", "test input", "test_output");
|
|
200
|
-
|
|
201
|
+
testOpHtml(browser, "Magic", "dGVzdF9vdXRwdXQ=", "tr:nth-of-type(1) th:nth-of-type(2)", "Result snippet");
|
|
202
|
+
testOpHtml(browser, "Magic", "dGVzdF9vdXRwdXQ=", "tr:nth-of-type(2) td:nth-of-type(2)", "test_output");
|
|
203
|
+
testOpHtml(browser, "Magic", "dGVzdF9vdXRwdXQ=", "tr:nth-of-type(2) td:nth-of-type(1)", /Base64/);
|
|
201
204
|
// testOp(browser, "Mean", "test input", "test_output");
|
|
202
|
-
// testOp(browser, "Median", "test input", "test_output")
|
|
203
|
-
// testOp(browser, "Merge", "test input", "test_output")
|
|
205
|
+
// testOp(browser, "Median", "test input", "test_output");`
|
|
206
|
+
// testOp(browser, "Merge", "test input", "test_output");`
|
|
204
207
|
// testOp(browser, "Microsoft Script Decoder", "test input", "test_output");
|
|
205
208
|
// testOp(browser, "Multiple Bombe", "test input", "test_output");
|
|
206
209
|
// testOp(browser, "Multiply", "test input", "test_output");
|
|
@@ -372,23 +375,36 @@ module.exports = {
|
|
|
372
375
|
}
|
|
373
376
|
};
|
|
374
377
|
|
|
375
|
-
/**
|
|
376
|
-
* Clears the current recipe and
|
|
378
|
+
/** @function
|
|
379
|
+
* Clears the current recipe and bakes a new operation.
|
|
377
380
|
*
|
|
378
|
-
* @param {
|
|
379
|
-
* @param {
|
|
381
|
+
* @param {Browser} browser - Nightwatch client
|
|
382
|
+
* @param {string|Array<string>} opName - name of operation to be tested, array for multiple ops
|
|
383
|
+
* @param {string} input - input text for test
|
|
384
|
+
* @param {Array<string>|Array<Array<string>>} args - aarguments, nested if multiple ops
|
|
380
385
|
*/
|
|
381
|
-
function
|
|
386
|
+
function bakeOp(browser, opName, input, args=[]) {
|
|
387
|
+
let recipeConfig;
|
|
382
388
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
389
|
+
if (typeof(opName) === "string") {
|
|
390
|
+
recipeConfig = JSON.stringify([{
|
|
391
|
+
"op": opName,
|
|
392
|
+
"args": args
|
|
393
|
+
}]);
|
|
394
|
+
} else if (opName instanceof Array) {
|
|
395
|
+
recipeConfig = JSON.stringify(
|
|
396
|
+
opName.map((op, i) => {
|
|
397
|
+
return {
|
|
398
|
+
op: op,
|
|
399
|
+
args: args.length ? args[i] : []
|
|
400
|
+
};
|
|
401
|
+
})
|
|
402
|
+
);
|
|
403
|
+
} else {
|
|
404
|
+
throw new Error("Invalid operation type. Must be string or array of strings. Received: " + typeof(opName));
|
|
405
|
+
}
|
|
387
406
|
|
|
388
407
|
browser
|
|
389
|
-
.perform(function() {
|
|
390
|
-
console.log(opName);
|
|
391
|
-
})
|
|
392
408
|
.useCss()
|
|
393
409
|
.click("#clr-recipe")
|
|
394
410
|
.click("#clr-io")
|
|
@@ -396,6 +412,9 @@ function testOp(browser, opName, input, output, args=[]) {
|
|
|
396
412
|
.expect.element("#input-text").to.have.property("value").that.equals("");
|
|
397
413
|
|
|
398
414
|
browser
|
|
415
|
+
.perform(function() {
|
|
416
|
+
console.log(`Current test: ${opName}`);
|
|
417
|
+
})
|
|
399
418
|
.urlHash("recipe=" + recipeConfig)
|
|
400
419
|
.setValue("#input-text", input)
|
|
401
420
|
.waitForElementPresent("#rec-list li.operation")
|
|
@@ -408,6 +427,20 @@ function testOp(browser, opName, input, output, args=[]) {
|
|
|
408
427
|
.pause(100)
|
|
409
428
|
.waitForElementPresent("#stale-indicator.hidden", 5000)
|
|
410
429
|
.waitForElementNotVisible("#output-loader", 5000);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/** @function
|
|
433
|
+
* Clears the current recipe and tests a new operation.
|
|
434
|
+
*
|
|
435
|
+
* @param {Browser} browser - Nightwatch client
|
|
436
|
+
* @param {string|Array<string>} opName - name of operation to be tested, array for multiple ops
|
|
437
|
+
* @param {string} input - input text
|
|
438
|
+
* @param {string} output - expected output
|
|
439
|
+
* @param {Array<string>|Array<Array<string>>} args - arguments, nested if multiple ops
|
|
440
|
+
*/
|
|
441
|
+
function testOp(browser, opName, input, output, args=[]) {
|
|
442
|
+
|
|
443
|
+
bakeOp(browser, opName, input, args);
|
|
411
444
|
|
|
412
445
|
if (typeof output === "string") {
|
|
413
446
|
browser.expect.element("#output-text").to.have.property("value").that.equals(output);
|
|
@@ -415,3 +448,23 @@ function testOp(browser, opName, input, output, args=[]) {
|
|
|
415
448
|
browser.expect.element("#output-text").to.have.property("value").that.matches(output);
|
|
416
449
|
}
|
|
417
450
|
}
|
|
451
|
+
|
|
452
|
+
/** @function
|
|
453
|
+
* Clears the current recipe and tests a new operation.
|
|
454
|
+
*
|
|
455
|
+
* @param {Browser} browser - Nightwatch client
|
|
456
|
+
* @param {string|Array<string>} opName - name of operation to be tested array for multiple ops
|
|
457
|
+
* @param {string} input - input text
|
|
458
|
+
* @param {string} cssSelector - CSS selector for HTML output
|
|
459
|
+
* @param {string} output - expected output
|
|
460
|
+
* @param {Array<string>|Array<Array<string>>} args - arguments, nested if multiple ops
|
|
461
|
+
*/
|
|
462
|
+
function testOpHtml(browser, opName, input, cssSelector, output, args=[]) {
|
|
463
|
+
bakeOp(browser, opName, input, args);
|
|
464
|
+
|
|
465
|
+
if (typeof output === "string") {
|
|
466
|
+
browser.expect.element("#output-html " + cssSelector).text.that.equals(output);
|
|
467
|
+
} else if (output instanceof RegExp) {
|
|
468
|
+
browser.expect.element("#output-html " + cssSelector).text.that.matches(output);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
@@ -816,7 +816,7 @@ pCGTErs=
|
|
|
816
816
|
it("RC4 Drop", () => {
|
|
817
817
|
assert.strictEqual(
|
|
818
818
|
chef.RC4Drop("Go Out On a Limb", {passphrase: {string: "Under Your Nose", option: "UTF8"}, inputFormat: "UTF8", outputFormat: "Hex"}).toString(),
|
|
819
|
-
"
|
|
819
|
+
"b85cb1c4ed6bed8f260ab92829bba942");
|
|
820
820
|
}),
|
|
821
821
|
|
|
822
822
|
it("Regular Expression", () => {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* @license Apache-2.0
|
|
10
10
|
*/
|
|
11
11
|
import TestRegister from "../../lib/TestRegister.mjs";
|
|
12
|
-
import { GIF_ANIMATED_HEX, PNG_HEX, JPG_B64, EXIF_JPG_HEX, NO_EXIF_JPG_HEX } from "
|
|
12
|
+
import { GIF_ANIMATED_HEX, PNG_HEX, JPG_B64, EXIF_JPG_HEX, NO_EXIF_JPG_HEX } from "../../samples/Images.mjs";
|
|
13
13
|
|
|
14
14
|
TestRegister.addTests([
|
|
15
15
|
{
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @license Apache-2.0
|
|
7
7
|
*/
|
|
8
8
|
import TestRegister from "../../lib/TestRegister.mjs";
|
|
9
|
-
import {ASCII_TEXT, UTF8_TEXT, ALL_BYTES} from "
|
|
9
|
+
import {ASCII_TEXT, UTF8_TEXT, ALL_BYTES} from "../../samples/Ciphers.mjs";
|
|
10
10
|
|
|
11
11
|
// RSA-1024
|
|
12
12
|
const ALICE_PRIVATE = `-----BEGIN PGP PRIVATE KEY BLOCK-----
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @license Apache-2.0
|
|
7
7
|
*/
|
|
8
8
|
import TestRegister from "../../lib/TestRegister.mjs";
|
|
9
|
-
import {ASCII_TEXT, UTF8_TEXT, ALL_BYTES} from "
|
|
9
|
+
import {ASCII_TEXT, UTF8_TEXT, ALL_BYTES} from "../../samples/Ciphers.mjs";
|
|
10
10
|
|
|
11
11
|
const PEM_PRIV_2048 = `-----BEGIN RSA PRIVATE KEY-----
|
|
12
12
|
MIIEpAIBAAKCAQEAwfaUOpUEutKyU3wkCv6kYunz4MqxzSuTSckRz1IxwZtwIiqq
|
|
File without changes
|
|
@@ -18,6 +18,18 @@ export const GIF_ANIMATED_HEX = "4749463839610f000f00b30b00424242ffe700ffef00ffc
|
|
|
18
18
|
*/
|
|
19
19
|
export const PNG_HEX = "89504e470d0a1a0a0000000d4948445200000020000000200806000000737a7af400000006624b474400ff00ff00ffa0bda793000000097048597300000dd700000dd70142289b78000005184944415458c3c5575d6c145514feeeccecccacdbddb6e096a5dbcdb6d06d80d06090466d6953454ab52ad0a65589840ac1d02a313c989af062820fa66210130d9a68b0363c34610135690b188b7183c13f44506c8115ba535ab6ddd2617f667f66ae0fb41596ddee2eadf13c4de69e7bcf77cff9cecf25b83f613b3b3b975b2c96f25028c47a3c9e1f5a5a5a7e05a0016000d0c9ef9442d23448a60edeb973a769c78e1d077272721a65594620106000505996bf1a1f1f3f67369bebc2e1f0ef6bd7aedd0a409d2d00e2743a1f2929296915046199a66901007aa3d1580600131313da24000000a594124288aaaab72a2b2bed1d1d1d8f8ba2386fc3860d9f25f3c84c0088cbe56a2d2c2cdc4708d12552880770a7288a3228088215003c1ecfd68d1b377e9e488f4b66dde974aeb2dbed498da71251146d538ed1b4e4746092dddee170b4300ca3c32c251c0edfd8bc79f3d164de4e0680110461794a02119292c482202c387efcf86f3d3d3d7b13814816024a2955e62a8b4451b4abaafad8e485d5743ca005028153699c4dd30c83140a857e4c9409c900a0bbbbfbc368343a34a3754a693a1c58b76eddf2dadada5d89002705b07bf7eee13367ce3cab284aff6c482808425e6767e70bc9ea0033d3e6c6c6c65fd6ac5953a1695a3453c3a150c84d295529a59aa669914cd3705adc6eb7926eaca74455d5605555d5c3030303f59224bd525f5f7f30992e87ff40344d5328a5caa64d9bbe4ca5cbe07f1666ae522dae40a5dd8ed30941c8e5727d63341a9f8a5f181a1ac2f0f07022029e02109d2b00bae2e26207cbb2f72cf03c8f9c9c9c441c580c804dc70b330258b6c020beb87ac9abecb59f8b087377b4f4f30a68b6de482549a29224ddb5168bc51cd5d5d54ff6f5f575cfa69633edeb971c78e2d195db055e77cfb6a2eaadb816e5b59ffafb19a7d3095555e3ab64341a8d96f6f6f6fe755f247c69d542abd9c0bd3c70f90a628c30fd5f56542c5c550fc3837600406e6e2eca9e2e433837fcefc0c8b2e079fe7b9fcfe7aba9a9296613c52f55084acc864a027013b28c828a2d30e805bcbe670fac4b5740f5a9285b18c6a0db4da8c180fdc6fdb035d850c555a174a4148410b85cae7293c97442a7d395363434347775757d91b6075a2a6c45d66ce18369258685de644659d96af45ff80345f9f908c932821313c4eff7639b6d1b06838358242c82d96c86288abe582ce6e6797e052184701c9797910796e61976b10c991fff7f7b5313b6373541d5340426d36f747414e5c67294679503a1e90634e6f57adbac56ebb14020f0e9a14387decf84038c8e232b53b45888dc6dec63636389d290c9caca5a3d09a6a2a6a6a628130054d33092a2c52272bbe4515996113f16288ab2c86432bd01001cc72db5582caf651202eaf5473e7e80d7af270409d9cb320c0c66331ca5a5602c1624180d492412392bcbf2db46a3f1394992f665c481b77a2f9f78e719476b5e16ff2e00d31dae8524cb30e8f560390ee72e5e243d7d7d34168bc16030a87575752ccbb20400a2d1e8b7478e1c390ce0f0fd5442fae6d7039f343d643956345f5fcbf1fafd00b219868145afc78d4b97101a1b833a32426d361bcdcfcf87cd6663a7a6649ee70725497a6faede86e4c2c993cf171716eee5753aeb9d0b7f5ebfae5df67a99b86164e8e6cd9badcdcdcdc7d27ae5a6a3f45147c7794dd30e2e59bcf896c0f3851ccbe602c0a8df4fc783413269d8130c06f79d3e7d7a4b5b5bdbd9b45b77c60304c3f0df75752db31714acf8dbe7cbbee2f5fafd7efff9f6f6f6b357af5e8d647ade3fa1780bad734c65970000000049454e44ae426082";
|
|
20
20
|
|
|
21
|
+
/**
|
|
22
|
+
* The CyberChef logo with 'chef'
|
|
23
|
+
* 32x32
|
|
24
|
+
*/
|
|
25
|
+
export const PNG_CHEF_B64 = "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";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* The CyberChef logo with blur
|
|
29
|
+
* 32x32
|
|
30
|
+
*/
|
|
31
|
+
export const PNG_BLUR_B64 = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAANT0lEQVR4AS3BC5CV1X0A8P8553s/7mMvyz5gWUFApEKpEtloSQdLDDDoREXMDK1Zx8dg4xjHqdWpQwgI29QoFrE6gyFJ6YhmoDNMapIBYhzHqgg1ZAvRdIVld5Vl9+597N17v+8779NNJ78fklL6GzdutJ955hnnrbfect98803vxIkTwccffxwdOnQoGhoaihuNRiilDKvValCr1XzGmNtqtdz29naru7sburq6dG9vr1i6dClbtWoV7evryzZv3pw8/PDDSX9/f+vIkSPN/fv3t86cOZMYY7KBgQFarVY5AAjr4MGD6KOPPsK1Wg0bY4ht25Y9q1gs2h0dHW6apm5PT4/HGPMrlYpv23aQJIk3y8nn85bneYgQopVSglJq1et1Mjk5iS5fvqzPnz+vzp49K44fP85uueUW++jRozalVDz77LOkUCjg/v5+hI8dO4YajQZSSuE0TYnW2rJneZ7nlEolt7293SuVSn5nZ6ff1tYWtrW1hcViMczn81EYhpHjOBFCKNJah5TSsNVqBZVKJRgdHQ0uXLjgnzt3znv77bfdo0ePOkeOHLEPHTpkHThwgKxbt46sWLECk4sXL3ozMzPWmTNnnEaj4QwPD3vbt2/3a7VaeOXKlVBKGRFCIsdxIilluGPHjnDXrl0BQsh3Xdf3PM8dGBiwXNe1fN/Hvu8jz/MgjmP98ssvq3379qkoiuTrr78ub731VvHhhx+qbdu2qf7+frV69WqNq9UqmpycxK7rYtu2ied5VhAEdj6ftwuFglssFr1SqeTncrkgn88HuVwuCMMwCsMw8jwvtCwrJISExpiQcx6maRq0Wi2/Uqn4X375pTcyMuIODg46586ds9977z373LlzZHx8HJ8+fRoXCgVEDh486D755JN2uVx2xsfH3eHhYf+JJ57wa7VaVC6XIyFERAiJACBijEWMscgYE+zcuTPYs2ePZ9u2Y9u25TgOdl0XeZ4HnufpKIpUHMfqtddeEwMDA2LZsmX85MmTYnx8XGit5djYmHznnXcUNsagKIqQbdvYsixSKBRIGIZWGIZ2oVBwCoWCm8vlvCiK/GBWGIbBrDAIgtBxnJAQEgJAqJQKpZQB59xPksRvNptuvV53JiYmnMuXL9vDw8PW+Pg4GRoaIrVaDc+dOxeVSiWE169fD3PnzkVdXV2oVCqhfD6P4zgm+Xye5PN5K45jO5fLObNcjLFHCPEAwEMIeUopXwjhc869LMu8VqvlzszMOI1Gw6nX6061WrUbjYY1PT1Nrl69SkZGRvDZs2fxBx98gF599VX0/vvvg3XvvffCyMgILFiwADzPQ/l8HsVBgKMowgBAQGsiGLNZltmcMZtS6lBKXZplLmXMUlIiTDC2bQdmScdx7DiOSZqmmDGG0zTFjDEkhEBSSlQqlaC3txd6e3vhtttuA7xo/U3w1W+uN/kFeQgLIfixBcR3QAFHQDQSWmHGKU7ThCRJy8rS1Mqy1KKUWlma2hmlVpZRizFGKKWEMYYZpVgIgYQQIIQwWmswsxhjptFomMnJSTMxMWFGR0cN/un3vmX65gLc3NtrlnTnTGQBBJYCDzT4WANIhjRniGUJZlmGGU0Jp5QwmhEhOBaMYc4Z5oxhKTkSgiMuBCiljBDCKKU0xlgbY7SUUgshtBBC53I5PTg4aPC2mwEe2txjruuYhqXzjJmf12ZOwE3B48ZDythGGC0YSEpB8AxxRpHgDEkhkOQcCcmRFAIJKUBKZaSURv8JIUTZtq3iOFBxHKv29nbl+77u7OzU9XrdvPTSSxofe+4ec20nwI2LPFOEFnQEyrR5yoRYGFdnAJKB4RQES0EyCkowkIKDksJIJY1S0mgltdZSKyW11koBAomQkRiDJDaRYZyTxWJRBkGg2tvblW3buqurS1+6dMngB5ZWIPnlHLN9QwPuukmba4t1mAMzUCDceIoZWzEDghkpqJGcghLCKMGNUsJoKYxWSisttVZaaa2UBiOVlkoDSESIAAAZBZG0bVs5gaOKxaJatmyZWrBggR4YGND4ujv/F368+HO4zxuBlfAFdMsyBGwSSFIFyJogswaIrAkqS0FxaiSnoJUwWnKjlDBKCaOU0lJJrZTUUkqt1Syp/h8QkEEcSMdxlOu6KteeU8YY3dHRoc+cOWPw/i9+jrak/42+VZiG7mQUdcsy5NIKqOkJBHQadNYEmTaBpy0ksxRpRkEwiiQXoIQwUgijpDBKcCOl1FJyLaVUUnOllFCUUi200MY1iraoHjo/ZJIk0fPnz9eHDx/W+HH/12gd/gA5w+/iztZFBONDmE2N4GxyDNPaBGb1Ck4bVcyTJhI0QYJlSHEKklOkBAfJOXDOQChhhOBGcGY4Zyaj1LSyluFZpgFAN5tNM1GdMIwxff78efPuu++aU6dOgfVt979QbvBXeKU8iMbGz2OYvIhVdQyLX43jrDpJ0ukqyWamMU9nMM+qmNMUS8aQ5BQJqZAEZLAhIAgBJhhwLkxKU6BZZrI0MzNJYrjgZmZmxkxVpsyJ/zwBr7zyCnz66adw3333GXz29ZfwzewjhC++jxuffkySkQskHf2cVL8Ytmh9ktDpCskadUJbM0RkCRY0xZJnWAqOpOBIco6E5CAEA8E4MMaAMgpZlkCz2YR6ow6N6QZUK1UYGx2Der1uyq2y4ZybO+64A/BN079GldO/wJfOvEPY+CCuj1wg5dE/WDMTo2RmatLKGjXCZupEZgmWNMWKUywZw5JzrKRASnKkhEBCCCQlBy4yxBmFJElQo9lA1WoVVWtlNDE5AZ999hkc/tlh9MjfPIKGhobQ7t27AV/+xXEMnw3i4MolTEcvEqt2FaNqGbNKhdBalfCZBmFZiwhKsRQcGyGRURIZJUEribRWoLQGrRVorUAqDZxzxIWAjGbQSmZQlmZQmaqgNE2h2WxCpVKBsbExGB8fB3wDrqP6l5/hrDqC82wa6Zk6pq0Gps0ZTFtNLFmGNOfIaIlAKQBjAAEYBAaQAYMAGYSMQQjMHwFoAwBGSA5SStAKIOMcwaxas4bK5TKCP7nzzjuR1YMFKhhAJZCo2qKYMIkMk0hQgUBrwNoAwdhYCBvHsnSVSG0RrW3LKI0MQoCUsSxlWZayLEtb2NKEEI3nYYPAzJJGKWVaSQsajQZUKhX4zUe/QfPa5qGTJ08CXpJJdG9vAW4qRtDrW9DmAoQA4CNsbGwZxyLGd2zl25byHVsFriN9x5G+6wrf9YTneSJwPRF4vgh8XwS+LwPPU0HgKdfxtesF2nd843u+ieLItOfazZL5S8ymTZsMzMLJvwHA+wA9dd8sJLF2pWdsJ9DY97Tju8oLA+n5vgziiHthyP0wYn4UMtcPeRCGLA5DFoUxi4KQ5+KYx1Ek4lxO5OKcbCsU5JxiUXV1zVVd87r00oVLdU9PjwmCAP7o2LFjhry3d2N4+O57rHXXbrceXFN12r7ZdNY8IJwNZeVeyoxzRex2ptCAXdu5x2ruskn6nIWetmwQjqvBcRXxfGEHAQtzuSzOFdK2A6WkY25H0tXdnSy8ZnFy3fLl6e8G/yfp+0pftmHDBlq+WmYHDhzg99xzj5yamlLk0Z9sCcJ3P7YW5bZbz94urTm/Z/aND0rnzjo4f5va9rhy7Wnjkgb+J9zAe3HzuQFI93haOp4CJxA4iJgd5TK/WMj2zfnXpK2jM5nX29vqXXRta8Wfr2itX7eudfHzS+mWLVvSx7/7OH3hn19gfX19or+/X65evVpZA3/do89vvVHNt1dKtuoTma4SYskKwntO+WxOo0Bj08hcXHeQk1nIaWLldxk6l0tFhUW0QTYQ5bou87u6szn5Qlrq6Uk7FvRmi66/Plu+chW7Zc0tfNfePeL2zbfLPd/fo3bs2KFaqKURQnrFihXGemP9Tfr03YPq9xNfqN1fvUGOfh+LNZditvgvYtZZLdO8PZ15uGwTr0mM30Ki0TKMSoEYt4hQiBBL2a7L/TkhzRXb0tKSpen8xQuzJStW0r6vraUbH3iQbd26lX9y7hOx43s7JG1QFcexPn78uFm7dq0h8Vs/cb+9Zht56FSAH97yPH7hoX3kuvJu646nI3L3EzEZsfJ4nNl4yg3RlBPCd93I1N1QGz9SVhALLy6yuNROCws6s+6enuSalSuT6//shuTmvjXJ3Z/8Lnnq0UfS3c/tyfYO7KXLFy9nzWaT7927V7744oty06ZNmtzK1zul+/4R/3uvwVu3tuOd93vkmseeJxv4D8iG7+wn255rw2MU4yt2iCZIgL7j5syUH2vsx8rLFbmfL/GX2jtp+7Xzsnm916SLb1ydrl79leT2D7+e3L/l3nTgqX/Ifvyjn2Zv/OwN+tsLv+Wff/q5LJfLIgxDjTHWZN8f9ts3tp5HT/3gGXz6/g789GNz8DWPReSvdkTk1OUfki279uPhp3bii8jDV6wAHvYiMxHntRXmlBvlZVTsYP/S3sU6li3IehYuypavXZv+5dfeSU5//RvZ3//do+nCMMiOHv0PeuKXJ9iVkSvirv67xOGfH5aPP/i4unr1qv4/bGwpHb1ZNmYAAAAASUVORK5CYII=";
|
|
32
|
+
|
|
21
33
|
/**
|
|
22
34
|
* Sunglasses smiley
|
|
23
35
|
* 32x32
|